-
Notifications
You must be signed in to change notification settings - Fork 0
/
app-672800ef76a8022bf8c0.js.map
1 lines (1 loc) · 706 KB
/
app-672800ef76a8022bf8c0.js.map
1
{"version":3,"file":"app-672800ef76a8022bf8c0.js","mappings":"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IACN,KAAM,IACN,MAAO,KACP,MAAO,IACP,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,IACN,MAAO,KACP,KAAM,IACN,KAAM,KACN,KAAM,IACN,MAAO,IACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,IACN,KAAM,KACN,MAAO,IACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,MAAO,IACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,MAER/kB,KAAKglB,MAAQ,CACX,MAAO,MACP,IAAO,IACP,MAAO,KACP,MAAO,MACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,IACP,MAAO,KACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,MACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,KAAM,IACN,KAAM,IACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,IACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,MACP,MAAO,KACP,MAAO,MACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,MACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,MACP,KAAM,IACN,MAAO,KACP,KAAM,IACN,MAAO,KACP,KAAM,IACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,IACN,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,KAAM,KACN,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KAEThlB,KAAKilB,MAAQ,CACX,MAAO,KACP,KAAM,IACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,IACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAA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L,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAER1mB,KAAK2mB,MAAQ,CACX,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KAEP3mB,KAAK4mB,MAAQ,CACX,IAAK,KACL,GAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KAEP5mB,KAAK6mB,MAAQ,CACX,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,MACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,MACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,MAER7mB,KAAK8mB,MAAQ,CACX,IAAK,IACL,KAAM,IACN,GAAM,IACN,IAAO,MACP,KAAM,KACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,GACL,IAAK,IACL,KAAM,GACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,MAAO,MACP,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KAER9mB,KAAK+mB,MAAQ,CACX,IAAK,IACL,IAAK,IACL,GAAM,IACN,GAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,GACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAED/mB,IACT,CACAkkB,EAAcvjB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","sources":["webpack://unittestbot-web/./node_modules/@mikaelkristiansson/domready/ready.js","webpack://unittestbot-web/./node_modules/@emotion/core/node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/core/node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/serialize/node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/serialize/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/css/dist/css.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/core/dist/core.browser.esm.js","webpack://unittestbot-web/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://unittestbot-web/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://unittestbot-web/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://unittestbot-web/./node_modules/@mdx-js/react/dist/esm.js","webpack://unittestbot-web/./node_modules/camelcase/index.js","webpack://unittestbot-web/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://unittestbot-web/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://unittestbot-web/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://unittestbot-web/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://unittestbot-web/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/html/html.js","webpack://unittestbot-web/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://unittestbot-web/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://unittestbot-web/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://unittestbot-web/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://unittestbot-web/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://unittestbot-web/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://unittestbot-web/./node_modules/lunr-languages/lunr.stemmer.support.js","webpack://unittestbot-web/./node_modules/lunr-languages/tinyseg.js","webpack://unittestbot-web/./node_modules/lunr/lunr.js","webpack://unittestbot-web/./node_modules/react-fast-compare/index.js","webpack://unittestbot-web/./node_modules/react-helmet-async/lib/index.module.js","webpack://unittestbot-web/./node_modules/shallowequal/index.js","webpack://unittestbot-web/./node_modules/gatsby-link/index.js","webpack://unittestbot-web/./node_modules/gatsby-link/parse-path.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/index.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/scroll-container.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://unittestbot-web/../src/image-utils.ts","webpack://unittestbot-web/../src/components/hooks.ts","webpack://unittestbot-web/../src/components/layout-wrapper.tsx","webpack://unittestbot-web/../src/components/picture.tsx","webpack://unittestbot-web/../src/components/placeholder.tsx","webpack://unittestbot-web/../src/components/main-image.tsx","webpack://unittestbot-web/../src/components/gatsby-image.server.tsx","webpack://unittestbot-web/../src/components/gatsby-image.browser.tsx","webpack://unittestbot-web/../src/components/static-image.server.tsx","webpack://unittestbot-web/../src/components/static-image.tsx","webpack://unittestbot-web/../src/components/later-hydrator.tsx","webpack://unittestbot-web/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-lunr/common.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-lunr/gatsby-browser.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-preact/gatsby-browser.js","webpack://unittestbot-web/./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-mdx/context.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack://unittestbot-web/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://unittestbot-web/./.cache/api-runner-browser-plugins.js","webpack://unittestbot-web/./.cache/api-runner-browser.js","webpack://unittestbot-web/./node_modules/mitt/dist/mitt.es.js","webpack://unittestbot-web/./.cache/emitter.js","webpack://unittestbot-web/./.cache/normalize-page-path.js","webpack://unittestbot-web/./.cache/find-path.js","webpack://unittestbot-web/./.cache/gatsby-browser-entry.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://unittestbot-web/./.cache/prefetch.js","webpack://unittestbot-web/./.cache/loader.js","webpack://unittestbot-web/./.cache/page-renderer.js","webpack://unittestbot-web/./.cache/route-announcer-props.js","webpack://unittestbot-web/./.cache/navigation.js","webpack://unittestbot-web/./node_modules/shallow-compare/es/index.js","webpack://unittestbot-web/./.cache/ensure-resources.js","webpack://unittestbot-web/./.cache/production-app.js","webpack://unittestbot-web/./.cache/public-page-renderer-prod.js","webpack://unittestbot-web/./.cache/public-page-renderer.js","webpack://unittestbot-web/./.cache/react-lifecycles-compat.js","webpack://unittestbot-web/./.cache/register-service-worker.js","webpack://unittestbot-web/./.cache/strip-prefix.js","webpack://unittestbot-web/./node_modules/gatsby-theme-docz/node_modules/gatsby-plugin-react-helmet-async/gatsby-browser.js","webpack://unittestbot-web/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://unittestbot-web/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://unittestbot-web/./node_modules/invariant/browser.js","webpack://unittestbot-web//home/runner/work/utbot-site-staging/utbot-site-staging/node_modules/lunr-languages|sync|/^\\.\\/lunr\\..*$/","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/extends.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/objectSpread.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/typeof.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://unittestbot-web/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!(function(name, definition) {\n if (typeof module != \"undefined\") module.exports = definition();\n else if (typeof define == \"function\" && typeof define.amd == \"object\")\n define(definition);\n else this[name] = definition();\n})(\"domready\", function() {\n var ie10 = false;\n if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n ie10 = true;\n }\n\n var fns = [],\n listener,\n doc = typeof document === \"object\" && document,\n hack = ie10\n ? doc.documentElement.doScroll(\"left\")\n : doc.documentElement.doScroll,\n domContentLoaded = \"DOMContentLoaded\",\n loaded =\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded && doc)\n doc.addEventListener(\n domContentLoaded,\n (listener = function() {\n doc.removeEventListener(domContentLoaded, listener);\n loaded = 1;\n while ((listener = fns.shift())) listener();\n })\n );\n\n return function(fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $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 };","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;","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;","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;","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 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 };","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 };","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","\"use strict\";\n\nexports.__esModule = true;\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 getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\nvar _invariant = require(\"invariant\");\nvar _invariant2 = _interopRequireDefault(_invariant);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \"<Router> dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// <Link to=\"deeper\"/>\n// // instead of\n// <Link to=`{${props.uri}/deeper}`/>\n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","import React from 'react';\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 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 _objectSpread2(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 _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}\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\nvar MDXContext = /*#__PURE__*/React.createContext({});\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n return allComponents;\n};\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n return React.createElement.apply(null, createElementArgArray);\n }\n return React.createElement.apply(null, args);\n}\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","'use strict';\n\nvar preserveCamelCase = function preserveCamelCase(string) {\n var isLastCharLower = false;\n var isLastCharUpper = false;\n var isLastLastCharUpper = false;\n for (var i = 0; i < string.length; i++) {\n var character = string[i];\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n return string;\n};\nvar camelCase = function camelCase(input, options) {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n options = Object.assign({\n pascalCase: false\n }, options);\n var postProcess = function postProcess(x) {\n return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n };\n if (Array.isArray(input)) {\n input = input.map(function (x) {\n return x.trim();\n }).filter(function (x) {\n return x.length;\n }).join('-');\n } else {\n input = input.trim();\n }\n if (input.length === 0) {\n return '';\n }\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n var hasUpperCase = input !== input.toLowerCase();\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, function (_, p1) {\n return p1.toUpperCase();\n }).replace(/\\d+(\\w|$)/g, function (m) {\n return m.toUpperCase();\n });\n return postProcess(input);\n};\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;","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}();\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n _classCallCheck(this, TemplateTag);\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n }\n\n // else, return a transformed end result of processing the template with our tag\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n };\n\n // if first argument is an array, extrude it as a list of transformers\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n }\n\n // if any transformers are functions, this means they are not initiated - automatically initiate them\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n });\n\n // return an ES2015 template tag\n return this.tag;\n }\n\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array<String>)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array<String>} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n return this.transformers.reduce(cb, str);\n }\n\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n return this.transformers.reduce(cb, substitution);\n }\n\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n return TemplateTag;\n}();\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial;\n // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n }\n // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n return substitution;\n }\n };\n};\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n return endResult;\n }\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n throw new Error('Unknown type: ' + type);\n }\n };\n};\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n side = side.toLowerCase();\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n throw new Error('Side not supported: ' + side);\n }\n };\n};\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n return substitution;\n }\n };\n};\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n if (isValidValue(substitution)) {\n return substitution;\n }\n return '';\n }\n };\n};\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n }\n\n // Do not touch if null or undefined\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(/</g, '<'), replaceSubstitutionTransformer(/>/g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","/*!\n * Snowball JavaScript Library v0.3\n * http://code.google.com/p/urim/\n * http://snowball.tartarus.org/\n *\n * Copyright 2010, Oleg Mazko\n * http://www.mozilla.org/MPL/\n */\n\n/**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n;\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like environments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n factory()(root.lunr);\n }\n})(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return function (lunr) {\n /* provides utilities for the included stemmers */\n lunr.stemmerSupport = {\n Among: function Among(s, substring_i, result, method) {\n this.toCharArray = function (s) {\n var sLength = s.length,\n charArr = new Array(sLength);\n for (var i = 0; i < sLength; i++) {\n charArr[i] = s.charCodeAt(i);\n }\n return charArr;\n };\n if (!s && s != \"\" || !substring_i && substring_i != 0 || !result) throw \"Bad Among initialisation: s:\" + s + \", substring_i: \" + substring_i + \", result: \" + result;\n this.s_size = s.length;\n this.s = this.toCharArray(s);\n this.substring_i = substring_i;\n this.result = result;\n this.method = method;\n },\n SnowballProgram: function SnowballProgram() {\n var current;\n return {\n bra: 0,\n ket: 0,\n limit: 0,\n cursor: 0,\n limit_backward: 0,\n setCurrent: function setCurrent(word) {\n current = word;\n this.cursor = 0;\n this.limit = word.length;\n this.limit_backward = 0;\n this.bra = this.cursor;\n this.ket = this.limit;\n },\n getCurrent: function getCurrent() {\n var result = current;\n current = null;\n return result;\n },\n in_grouping: function in_grouping(s, min, max) {\n if (this.cursor < this.limit) {\n var ch = current.charCodeAt(this.cursor);\n if (ch <= max && ch >= min) {\n ch -= min;\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor++;\n return true;\n }\n }\n }\n return false;\n },\n in_grouping_b: function in_grouping_b(s, min, max) {\n if (this.cursor > this.limit_backward) {\n var ch = current.charCodeAt(this.cursor - 1);\n if (ch <= max && ch >= min) {\n ch -= min;\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor--;\n return true;\n }\n }\n }\n return false;\n },\n out_grouping: function out_grouping(s, min, max) {\n if (this.cursor < this.limit) {\n var ch = current.charCodeAt(this.cursor);\n if (ch > max || ch < min) {\n this.cursor++;\n return true;\n }\n ch -= min;\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor++;\n return true;\n }\n }\n return false;\n },\n out_grouping_b: function out_grouping_b(s, min, max) {\n if (this.cursor > this.limit_backward) {\n var ch = current.charCodeAt(this.cursor - 1);\n if (ch > max || ch < min) {\n this.cursor--;\n return true;\n }\n ch -= min;\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor--;\n return true;\n }\n }\n return false;\n },\n eq_s: function eq_s(s_size, s) {\n if (this.limit - this.cursor < s_size) return false;\n for (var i = 0; i < s_size; i++) {\n if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i)) return false;\n }\n this.cursor += s_size;\n return true;\n },\n eq_s_b: function eq_s_b(s_size, s) {\n if (this.cursor - this.limit_backward < s_size) return false;\n for (var i = 0; i < s_size; i++) {\n if (current.charCodeAt(this.cursor - s_size + i) != s.charCodeAt(i)) return false;\n }\n this.cursor -= s_size;\n return true;\n },\n find_among: function find_among(v, v_size) {\n var i = 0,\n j = v_size,\n c = this.cursor,\n l = this.limit,\n common_i = 0,\n common_j = 0,\n first_key_inspected = false;\n while (true) {\n var k = i + (j - i >> 1),\n diff = 0,\n common = common_i < common_j ? common_i : common_j,\n w = v[k];\n for (var i2 = common; i2 < w.s_size; i2++) {\n if (c + common == l) {\n diff = -1;\n break;\n }\n diff = current.charCodeAt(c + common) - w.s[i2];\n if (diff) break;\n common++;\n }\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n while (true) {\n var w = v[i];\n if (common_i >= w.s_size) {\n this.cursor = c + w.s_size;\n if (!w.method) return w.result;\n var res = w.method();\n this.cursor = c + w.s_size;\n if (res) return w.result;\n }\n i = w.substring_i;\n if (i < 0) return 0;\n }\n },\n find_among_b: function find_among_b(v, v_size) {\n var i = 0,\n j = v_size,\n c = this.cursor,\n lb = this.limit_backward,\n common_i = 0,\n common_j = 0,\n first_key_inspected = false;\n while (true) {\n var k = i + (j - i >> 1),\n diff = 0,\n common = common_i < common_j ? common_i : common_j,\n w = v[k];\n for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) {\n if (c - common == lb) {\n diff = -1;\n break;\n }\n diff = current.charCodeAt(c - 1 - common) - w.s[i2];\n if (diff) break;\n common++;\n }\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n while (true) {\n var w = v[i];\n if (common_i >= w.s_size) {\n this.cursor = c - w.s_size;\n if (!w.method) return w.result;\n var res = w.method();\n this.cursor = c - w.s_size;\n if (res) return w.result;\n }\n i = w.substring_i;\n if (i < 0) return 0;\n }\n },\n replace_s: function replace_s(c_bra, c_ket, s) {\n var adjustment = s.length - (c_ket - c_bra),\n left = current.substring(0, c_bra),\n right = current.substring(c_ket);\n current = left + s + right;\n this.limit += adjustment;\n if (this.cursor >= c_ket) this.cursor += adjustment;else if (this.cursor > c_bra) this.cursor = c_bra;\n return adjustment;\n },\n slice_check: function slice_check() {\n if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit || this.limit > current.length) throw \"faulty slice operation\";\n },\n slice_from: function slice_from(s) {\n this.slice_check();\n this.replace_s(this.bra, this.ket, s);\n },\n slice_del: function slice_del() {\n this.slice_from(\"\");\n },\n insert: function insert(c_bra, c_ket, s) {\n var adjustment = this.replace_s(c_bra, c_ket, s);\n if (c_bra <= this.bra) this.bra += adjustment;\n if (c_bra <= this.ket) this.ket += adjustment;\n },\n slice_to: function slice_to() {\n this.slice_check();\n return current.substring(this.bra, this.ket);\n },\n eq_v_b: function eq_v_b(s) {\n return this.eq_s_b(s.length, s);\n }\n };\n }\n };\n lunr.trimmerSupport = {\n generateTrimmer: function generateTrimmer(wordCharacters) {\n var startRegex = new RegExp(\"^[^\" + wordCharacters + \"]+\");\n var endRegex = new RegExp(\"[^\" + wordCharacters + \"]+$\");\n return function (token) {\n // for lunr version 2\n if (typeof token.update === \"function\") {\n return token.update(function (s) {\n return s.replace(startRegex, '').replace(endRegex, '');\n });\n } else {\n // for lunr version 1\n return token.replace(startRegex, '').replace(endRegex, '');\n }\n };\n }\n };\n };\n});","/**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n;\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like environments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n factory()(root.lunr);\n }\n})(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n\n return function (lunr) {\n // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript\n // (c) 2008 Taku Kudo <taku@chasen.org>\n // TinySegmenter is freely distributable under the terms of a new BSD licence.\n // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt\n\n function TinySegmenter() {\n var patterns = {\n \"[一二三四五六七八九十百千万億兆]\": \"M\",\n \"[一-龠々〆ヵヶ]\": \"H\",\n \"[ぁ-ん]\": \"I\",\n \"[ァ-ヴーア-ン゙ー]\": \"K\",\n \"[a-zA-Za-zA-Z]\": \"A\",\n \"[0-90-9]\": \"N\"\n };\n this.chartype_ = [];\n for (var i in patterns) {\n var regexp = new RegExp(i);\n this.chartype_.push([regexp, patterns[i]]);\n }\n this.BIAS__ = -332;\n this.BC1__ = {\n \"HH\": 6,\n \"II\": 2461,\n \"KH\": 406,\n \"OH\": -1378\n };\n this.BC2__ = {\n \"AA\": -3267,\n \"AI\": 2744,\n \"AN\": -878,\n \"HH\": -4070,\n \"HM\": -1711,\n \"HN\": 4012,\n \"HO\": 3761,\n \"IA\": 1327,\n \"IH\": -1184,\n \"II\": -1332,\n \"IK\": 1721,\n \"IO\": 5492,\n \"KI\": 3831,\n \"KK\": -8741,\n \"MH\": -3132,\n \"MK\": 3334,\n \"OO\": -2920\n };\n this.BC3__ = {\n \"HH\": 996,\n \"HI\": 626,\n \"HK\": -721,\n \"HN\": -1307,\n \"HO\": -836,\n \"IH\": -301,\n \"KK\": 2762,\n \"MK\": 1079,\n \"MM\": 4034,\n \"OA\": -1652,\n \"OH\": 266\n };\n this.BP1__ = {\n \"BB\": 295,\n \"OB\": 304,\n \"OO\": -125,\n \"UB\": 352\n };\n this.BP2__ = {\n \"BO\": 60,\n \"OO\": -1762\n };\n this.BQ1__ = {\n \"BHH\": 1150,\n \"BHM\": 1521,\n \"BII\": -1158,\n \"BIM\": 886,\n \"BMH\": 1208,\n \"BNH\": 449,\n \"BOH\": -91,\n \"BOO\": -2597,\n \"OHI\": 451,\n \"OIH\": -296,\n \"OKA\": 1851,\n \"OKH\": -1020,\n \"OKK\": 904,\n \"OOO\": 2965\n };\n this.BQ2__ = {\n \"BHH\": 118,\n \"BHI\": -1159,\n \"BHM\": 466,\n \"BIH\": -919,\n \"BKK\": -1720,\n \"BKO\": 864,\n \"OHH\": -1139,\n \"OHM\": -181,\n \"OIH\": 153,\n \"UHI\": -1146\n };\n this.BQ3__ = {\n \"BHH\": -792,\n \"BHI\": 2664,\n \"BII\": -299,\n \"BKI\": 419,\n \"BMH\": 937,\n \"BMM\": 8335,\n \"BNN\": 998,\n \"BOH\": 775,\n \"OHH\": 2174,\n \"OHM\": 439,\n \"OII\": 280,\n \"OKH\": 1798,\n \"OKI\": -793,\n \"OKO\": -2242,\n \"OMH\": -2402,\n \"OOO\": 11699\n };\n this.BQ4__ = {\n \"BHH\": -3895,\n \"BIH\": 3761,\n \"BII\": -4654,\n \"BIK\": 1348,\n \"BKK\": -1806,\n \"BMI\": -3385,\n \"BOO\": -12396,\n \"OAH\": 926,\n \"OHH\": 266,\n \"OHK\": -2036,\n \"ONN\": -973\n };\n this.BW1__ = {\n \",と\": 660,\n \",同\": 727,\n \"B1あ\": 1404,\n \"B1同\": 542,\n \"、と\": 660,\n \"、同\": 727,\n \"」と\": 1682,\n \"あっ\": 1505,\n \"いう\": 1743,\n \"いっ\": -2055,\n \"いる\": 672,\n \"うし\": -4817,\n \"うん\": 665,\n \"から\": 3472,\n \"がら\": 600,\n \"こう\": -790,\n \"こと\": 2083,\n \"こん\": -1262,\n \"さら\": -4143,\n \"さん\": 4573,\n \"した\": 2641,\n \"して\": 1104,\n \"すで\": -3399,\n \"そこ\": 1977,\n \"それ\": -871,\n \"たち\": 1122,\n \"ため\": 601,\n \"った\": 3463,\n \"つい\": -802,\n \"てい\": 805,\n \"てき\": 1249,\n \"でき\": 1127,\n \"です\": 3445,\n \"では\": 844,\n \"とい\": -4915,\n \"とみ\": 1922,\n \"どこ\": 3887,\n \"ない\": 5713,\n \"なっ\": 3015,\n \"など\": 7379,\n \"なん\": -1113,\n \"にし\": 2468,\n \"には\": 1498,\n \"にも\": 1671,\n \"に対\": -912,\n \"の一\": -501,\n \"の中\": 741,\n \"ませ\": 2448,\n \"まで\": 1711,\n \"まま\": 2600,\n \"まる\": -2155,\n \"やむ\": -1947,\n \"よっ\": -2565,\n \"れた\": 2369,\n \"れで\": -913,\n \"をし\": 1860,\n \"を見\": 731,\n \"亡く\": -1886,\n \"京都\": 2558,\n \"取り\": -2784,\n \"大き\": -2604,\n \"大阪\": 1497,\n \"平方\": -2314,\n \"引き\": -1336,\n \"日本\": -195,\n \"本当\": -2423,\n \"毎日\": -2113,\n \"目指\": -724,\n \"B1あ\": 1404,\n \"B1同\": 542,\n \"」と\": 1682\n };\n this.BW2__ = {\n \"..\": -11822,\n \"11\": -669,\n \"――\": -5730,\n \"−−\": -13175,\n \"いう\": -1609,\n \"うか\": 2490,\n \"かし\": -1350,\n \"かも\": -602,\n \"から\": -7194,\n \"かれ\": 4612,\n \"がい\": 853,\n \"がら\": -3198,\n \"きた\": 1941,\n \"くな\": -1597,\n \"こと\": -8392,\n \"この\": -4193,\n \"させ\": 4533,\n \"され\": 13168,\n \"さん\": -3977,\n \"しい\": -1819,\n \"しか\": -545,\n \"した\": 5078,\n \"して\": 972,\n \"しな\": 939,\n \"その\": -3744,\n \"たい\": -1253,\n \"たた\": -662,\n \"ただ\": -3857,\n \"たち\": -786,\n \"たと\": 1224,\n \"たは\": -939,\n \"った\": 4589,\n \"って\": 1647,\n \"っと\": -2094,\n \"てい\": 6144,\n \"てき\": 3640,\n \"てく\": 2551,\n \"ては\": -3110,\n \"ても\": -3065,\n \"でい\": 2666,\n \"でき\": -1528,\n \"でし\": -3828,\n \"です\": -4761,\n \"でも\": -4203,\n \"とい\": 1890,\n \"とこ\": -1746,\n \"とと\": -2279,\n \"との\": 720,\n \"とみ\": 5168,\n \"とも\": -3941,\n \"ない\": -2488,\n \"なが\": -1313,\n \"など\": -6509,\n \"なの\": 2614,\n \"なん\": 3099,\n \"にお\": -1615,\n \"にし\": 2748,\n \"にな\": 2454,\n \"によ\": -7236,\n \"に対\": -14943,\n \"に従\": -4688,\n \"に関\": -11388,\n \"のか\": 2093,\n \"ので\": -7059,\n \"のに\": -6041,\n \"のの\": -6125,\n \"はい\": 1073,\n \"はが\": -1033,\n \"はず\": -2532,\n \"ばれ\": 1813,\n \"まし\": -1316,\n \"まで\": -6621,\n \"まれ\": 5409,\n \"めて\": -3153,\n \"もい\": 2230,\n \"もの\": -10713,\n \"らか\": -944,\n \"らし\": -1611,\n \"らに\": -1897,\n \"りし\": 651,\n \"りま\": 1620,\n \"れた\": 4270,\n \"れて\": 849,\n \"れば\": 4114,\n \"ろう\": 6067,\n \"われ\": 7901,\n \"を通\": -11877,\n \"んだ\": 728,\n \"んな\": -4115,\n \"一人\": 602,\n \"一方\": -1375,\n \"一日\": 970,\n \"一部\": -1051,\n \"上が\": -4479,\n \"会社\": -1116,\n \"出て\": 2163,\n \"分の\": -7758,\n \"同党\": 970,\n \"同日\": -913,\n \"大阪\": -2471,\n \"委員\": -1250,\n \"少な\": -1050,\n \"年度\": -8669,\n \"年間\": -1626,\n \"府県\": -2363,\n \"手権\": -1982,\n \"新聞\": -4066,\n \"日新\": -722,\n \"日本\": -7068,\n \"日米\": 3372,\n \"曜日\": -601,\n \"朝鮮\": -2355,\n \"本人\": -2697,\n \"東京\": -1543,\n \"然と\": -1384,\n \"社会\": -1276,\n \"立て\": -990,\n \"第に\": -1612,\n \"米国\": -4268,\n \"11\": -669\n };\n this.BW3__ = {\n \"あた\": -2194,\n \"あり\": 719,\n \"ある\": 3846,\n \"い.\": -1185,\n \"い。\": -1185,\n \"いい\": 5308,\n \"いえ\": 2079,\n \"いく\": 3029,\n \"いた\": 2056,\n \"いっ\": 1883,\n \"いる\": 5600,\n \"いわ\": 1527,\n \"うち\": 1117,\n \"うと\": 4798,\n \"えと\": 1454,\n \"か.\": 2857,\n \"か。\": 2857,\n \"かけ\": -743,\n \"かっ\": -4098,\n \"かに\": -669,\n \"から\": 6520,\n \"かり\": -2670,\n \"が,\": 1816,\n \"が、\": 1816,\n \"がき\": -4855,\n \"がけ\": -1127,\n \"がっ\": -913,\n \"がら\": -4977,\n \"がり\": -2064,\n \"きた\": 1645,\n \"けど\": 1374,\n \"こと\": 7397,\n \"この\": 1542,\n \"ころ\": -2757,\n \"さい\": -714,\n \"さを\": 976,\n \"し,\": 1557,\n \"し、\": 1557,\n \"しい\": -3714,\n \"した\": 3562,\n \"して\": 1449,\n \"しな\": 2608,\n \"しま\": 1200,\n \"す.\": -1310,\n \"す。\": -1310,\n \"する\": 6521,\n \"ず,\": 3426,\n \"ず、\": 3426,\n \"ずに\": 841,\n \"そう\": 428,\n \"た.\": 8875,\n \"た。\": 8875,\n \"たい\": -594,\n \"たの\": 812,\n \"たり\": -1183,\n \"たる\": -853,\n \"だ.\": 4098,\n \"だ。\": 4098,\n \"だっ\": 1004,\n \"った\": -4748,\n \"って\": 300,\n \"てい\": 6240,\n \"てお\": 855,\n \"ても\": 302,\n \"です\": 1437,\n \"でに\": -1482,\n \"では\": 2295,\n \"とう\": -1387,\n \"とし\": 2266,\n \"との\": 541,\n \"とも\": -3543,\n \"どう\": 4664,\n \"ない\": 1796,\n \"なく\": -903,\n \"など\": 2135,\n \"に,\": -1021,\n \"に、\": -1021,\n \"にし\": 1771,\n \"にな\": 1906,\n \"には\": 2644,\n \"の,\": -724,\n \"の、\": -724,\n \"の子\": -1000,\n \"は,\": 1337,\n \"は、\": 1337,\n \"べき\": 2181,\n \"まし\": 1113,\n \"ます\": 6943,\n \"まっ\": -1549,\n \"まで\": 6154,\n \"まれ\": -793,\n \"らし\": 1479,\n \"られ\": 6820,\n \"るる\": 3818,\n \"れ,\": 854,\n \"れ、\": 854,\n \"れた\": 1850,\n \"れて\": 1375,\n \"れば\": -3246,\n \"れる\": 1091,\n \"われ\": -605,\n \"んだ\": 606,\n \"んで\": 798,\n \"カ月\": 990,\n \"会議\": 860,\n \"入り\": 1232,\n \"大会\": 2217,\n \"始め\": 1681,\n \"市\": 965,\n \"新聞\": -5055,\n \"日,\": 974,\n \"日、\": 974,\n \"社会\": 2024,\n \"カ月\": 990\n };\n this.TC1__ = {\n \"AAA\": 1093,\n \"HHH\": 1029,\n \"HHM\": 580,\n \"HII\": 998,\n \"HOH\": -390,\n \"HOM\": -331,\n \"IHI\": 1169,\n \"IOH\": -142,\n \"IOI\": -1015,\n \"IOM\": 467,\n \"MMH\": 187,\n \"OOI\": -1832\n };\n this.TC2__ = {\n \"HHO\": 2088,\n \"HII\": -1023,\n \"HMM\": -1154,\n \"IHI\": -1965,\n \"KKH\": 703,\n \"OII\": -2649\n };\n this.TC3__ = {\n \"AAA\": -294,\n \"HHH\": 346,\n \"HHI\": -341,\n \"HII\": -1088,\n \"HIK\": 731,\n \"HOH\": -1486,\n \"IHH\": 128,\n \"IHI\": -3041,\n \"IHO\": -1935,\n \"IIH\": -825,\n \"IIM\": -1035,\n \"IOI\": -542,\n \"KHH\": -1216,\n \"KKA\": 491,\n \"KKH\": -1217,\n \"KOK\": -1009,\n \"MHH\": -2694,\n \"MHM\": -457,\n \"MHO\": 123,\n \"MMH\": -471,\n \"NNH\": -1689,\n \"NNO\": 662,\n \"OHO\": -3393\n };\n this.TC4__ = {\n \"HHH\": -203,\n \"HHI\": 1344,\n \"HHK\": 365,\n \"HHM\": -122,\n \"HHN\": 182,\n \"HHO\": 669,\n \"HIH\": 804,\n \"HII\": 679,\n \"HOH\": 446,\n \"IHH\": 695,\n \"IHO\": -2324,\n \"IIH\": 321,\n \"III\": 1497,\n \"IIO\": 656,\n \"IOO\": 54,\n \"KAK\": 4845,\n \"KKA\": 3386,\n \"KKK\": 3065,\n \"MHH\": -405,\n \"MHI\": 201,\n \"MMH\": -241,\n \"MMM\": 661,\n \"MOM\": 841\n };\n this.TQ1__ = {\n \"BHHH\": -227,\n \"BHHI\": 316,\n \"BHIH\": -132,\n \"BIHH\": 60,\n \"BIII\": 1595,\n \"BNHH\": -744,\n \"BOHH\": 225,\n \"BOOO\": -908,\n \"OAKK\": 482,\n \"OHHH\": 281,\n \"OHIH\": 249,\n \"OIHI\": 200,\n \"OIIH\": -68\n };\n this.TQ2__ = {\n \"BIHH\": -1401,\n \"BIII\": -1033,\n \"BKAK\": -543,\n \"BOOO\": -5591\n };\n this.TQ3__ = {\n \"BHHH\": 478,\n \"BHHM\": -1073,\n \"BHIH\": 222,\n \"BHII\": -504,\n \"BIIH\": -116,\n \"BIII\": -105,\n \"BMHI\": -863,\n \"BMHM\": -464,\n \"BOMH\": 620,\n \"OHHH\": 346,\n \"OHHI\": 1729,\n \"OHII\": 997,\n \"OHMH\": 481,\n \"OIHH\": 623,\n \"OIIH\": 1344,\n \"OKAK\": 2792,\n \"OKHH\": 587,\n \"OKKA\": 679,\n \"OOHH\": 110,\n \"OOII\": -685\n };\n this.TQ4__ = {\n \"BHHH\": -721,\n \"BHHM\": -3604,\n \"BHII\": -966,\n \"BIIH\": -607,\n \"BIII\": -2181,\n \"OAAA\": -2763,\n \"OAKK\": 180,\n \"OHHH\": -294,\n \"OHHI\": 2446,\n \"OHHO\": 480,\n \"OHIH\": -1573,\n \"OIHH\": 1935,\n \"OIHI\": -493,\n \"OIIH\": 626,\n \"OIII\": -4007,\n \"OKAK\": -8156\n };\n this.TW1__ = {\n \"につい\": -4681,\n \"東京都\": 2026\n };\n this.TW2__ = {\n \"ある程\": -2049,\n \"いった\": -1256,\n \"ころが\": -2434,\n \"しょう\": 3873,\n \"その後\": -4430,\n \"だって\": -1049,\n \"ていた\": 1833,\n \"として\": -4657,\n \"ともに\": -4517,\n \"もので\": 1882,\n \"一気に\": -792,\n \"初めて\": -1512,\n \"同時に\": -8097,\n \"大きな\": -1255,\n \"対して\": -2721,\n \"社会党\": -3216\n };\n this.TW3__ = {\n \"いただ\": -1734,\n \"してい\": 1314,\n \"として\": -4314,\n \"につい\": -5483,\n \"にとっ\": -5989,\n \"に当た\": -6247,\n \"ので,\": -727,\n \"ので、\": -727,\n \"のもの\": -600,\n \"れから\": -3752,\n \"十二月\": -2287\n };\n this.TW4__ = {\n \"いう.\": 8576,\n \"いう。\": 8576,\n \"からな\": -2348,\n \"してい\": 2958,\n \"たが,\": 1516,\n \"たが、\": 1516,\n \"ている\": 1538,\n \"という\": 1349,\n \"ました\": 5543,\n \"ません\": 1097,\n \"ようと\": -4258,\n \"よると\": 5865\n };\n this.UC1__ = {\n \"A\": 484,\n \"K\": 93,\n \"M\": 645,\n \"O\": -505\n };\n this.UC2__ = {\n \"A\": 819,\n \"H\": 1059,\n \"I\": 409,\n \"M\": 3987,\n \"N\": 5775,\n \"O\": 646\n };\n this.UC3__ = {\n \"A\": -1370,\n \"I\": 2311\n };\n this.UC4__ = {\n \"A\": -2643,\n \"H\": 1809,\n \"I\": -1032,\n \"K\": -3450,\n \"M\": 3565,\n \"N\": 3876,\n \"O\": 6646\n };\n this.UC5__ = {\n \"H\": 313,\n \"I\": -1238,\n \"K\": -799,\n \"M\": 539,\n \"O\": -831\n };\n this.UC6__ = {\n \"H\": -506,\n \"I\": -253,\n \"K\": 87,\n \"M\": 247,\n \"O\": -387\n };\n this.UP1__ = {\n \"O\": -214\n };\n this.UP2__ = {\n \"B\": 69,\n \"O\": 935\n };\n this.UP3__ = {\n \"B\": 189\n };\n this.UQ1__ = {\n \"BH\": 21,\n \"BI\": -12,\n \"BK\": -99,\n \"BN\": 142,\n \"BO\": -56,\n \"OH\": -95,\n \"OI\": 477,\n \"OK\": 410,\n \"OO\": -2422\n };\n this.UQ2__ = {\n \"BH\": 216,\n \"BI\": 113,\n \"OK\": 1759\n };\n this.UQ3__ = {\n \"BA\": -479,\n \"BH\": 42,\n \"BI\": 1913,\n \"BK\": -7198,\n \"BM\": 3160,\n \"BN\": 6427,\n \"BO\": 14761,\n \"OI\": -827,\n \"ON\": -3212\n };\n this.UW1__ = {\n \",\": 156,\n \"、\": 156,\n \"「\": -463,\n \"あ\": -941,\n \"う\": -127,\n \"が\": -553,\n \"き\": 121,\n \"こ\": 505,\n \"で\": -201,\n \"と\": -547,\n \"ど\": -123,\n \"に\": -789,\n \"の\": -185,\n \"は\": -847,\n \"も\": -466,\n \"や\": -470,\n \"よ\": 182,\n \"ら\": -292,\n \"り\": 208,\n \"れ\": 169,\n \"を\": -446,\n \"ん\": -137,\n \"・\": -135,\n \"主\": -402,\n \"京\": -268,\n \"区\": -912,\n \"午\": 871,\n \"国\": -460,\n \"大\": 561,\n \"委\": 729,\n \"市\": -411,\n \"日\": -141,\n \"理\": 361,\n \"生\": -408,\n \"県\": -386,\n \"都\": -718,\n \"「\": -463,\n \"・\": -135\n };\n this.UW2__ = {\n \",\": -829,\n \"、\": -829,\n \"〇\": 892,\n \"「\": -645,\n \"」\": 3145,\n \"あ\": -538,\n \"い\": 505,\n \"う\": 134,\n \"お\": -502,\n \"か\": 1454,\n \"が\": -856,\n \"く\": -412,\n \"こ\": 1141,\n \"さ\": 878,\n \"ざ\": 540,\n \"し\": 1529,\n \"す\": -675,\n \"せ\": 300,\n \"そ\": -1011,\n \"た\": 188,\n \"だ\": 1837,\n \"つ\": -949,\n \"て\": -291,\n \"で\": -268,\n \"と\": -981,\n \"ど\": 1273,\n \"な\": 1063,\n \"に\": -1764,\n \"の\": 130,\n \"は\": -409,\n \"ひ\": -1273,\n \"べ\": 1261,\n \"ま\": 600,\n \"も\": -1263,\n \"や\": -402,\n \"よ\": 1639,\n \"り\": -579,\n \"る\": -694,\n \"れ\": 571,\n \"を\": -2516,\n \"ん\": 2095,\n \"ア\": -587,\n \"カ\": 306,\n \"キ\": 568,\n \"ッ\": 831,\n \"三\": -758,\n \"不\": -2150,\n \"世\": -302,\n \"中\": -968,\n \"主\": -861,\n \"事\": 492,\n \"人\": -123,\n \"会\": 978,\n \"保\": 362,\n \"入\": 548,\n \"初\": -3025,\n \"副\": -1566,\n \"北\": -3414,\n \"区\": -422,\n \"大\": -1769,\n \"天\": -865,\n \"太\": -483,\n \"子\": -1519,\n \"学\": 760,\n \"実\": 1023,\n \"小\": -2009,\n \"市\": -813,\n \"年\": -1060,\n \"強\": 1067,\n \"手\": -1519,\n \"揺\": -1033,\n \"政\": 1522,\n \"文\": -1355,\n \"新\": -1682,\n \"日\": -1815,\n \"明\": -1462,\n \"最\": -630,\n \"朝\": -1843,\n \"本\": -1650,\n \"東\": -931,\n \"果\": -665,\n \"次\": -2378,\n \"民\": -180,\n \"気\": -1740,\n \"理\": 752,\n \"発\": 529,\n \"目\": -1584,\n \"相\": -242,\n \"県\": -1165,\n \"立\": -763,\n \"第\": 810,\n \"米\": 509,\n \"自\": -1353,\n \"行\": 838,\n \"西\": -744,\n \"見\": -3874,\n \"調\": 1010,\n \"議\": 1198,\n \"込\": 3041,\n \"開\": 1758,\n \"間\": -1257,\n \"「\": -645,\n \"」\": 3145,\n \"ッ\": 831,\n \"ア\": -587,\n \"カ\": 306,\n \"キ\": 568\n };\n this.UW3__ = {\n \",\": 4889,\n \"1\": -800,\n \"−\": -1723,\n \"、\": 4889,\n \"々\": -2311,\n \"〇\": 5827,\n \"」\": 2670,\n \"〓\": -3573,\n \"あ\": -2696,\n \"い\": 1006,\n \"う\": 2342,\n \"え\": 1983,\n \"お\": -4864,\n \"か\": -1163,\n \"が\": 3271,\n \"く\": 1004,\n \"け\": 388,\n \"げ\": 401,\n \"こ\": -3552,\n \"ご\": -3116,\n \"さ\": -1058,\n \"し\": -395,\n \"す\": 584,\n \"せ\": 3685,\n \"そ\": -5228,\n \"た\": 842,\n \"ち\": -521,\n \"っ\": -1444,\n \"つ\": -1081,\n \"て\": 6167,\n \"で\": 2318,\n \"と\": 1691,\n \"ど\": -899,\n \"な\": -2788,\n \"に\": 2745,\n \"の\": 4056,\n \"は\": 4555,\n \"ひ\": -2171,\n \"ふ\": -1798,\n \"へ\": 1199,\n \"ほ\": -5516,\n \"ま\": -4384,\n \"み\": -120,\n \"め\": 1205,\n \"も\": 2323,\n \"や\": -788,\n \"よ\": -202,\n \"ら\": 727,\n \"り\": 649,\n \"る\": 5905,\n \"れ\": 2773,\n \"わ\": -1207,\n \"を\": 6620,\n \"ん\": -518,\n \"ア\": 551,\n \"グ\": 1319,\n \"ス\": 874,\n \"ッ\": -1350,\n \"ト\": 521,\n \"ム\": 1109,\n \"ル\": 1591,\n \"ロ\": 2201,\n \"ン\": 278,\n \"・\": -3794,\n \"一\": -1619,\n \"下\": -1759,\n \"世\": -2087,\n \"両\": 3815,\n \"中\": 653,\n \"主\": -758,\n \"予\": -1193,\n \"二\": 974,\n \"人\": 2742,\n \"今\": 792,\n \"他\": 1889,\n \"以\": -1368,\n \"低\": 811,\n \"何\": 4265,\n \"作\": -361,\n \"保\": -2439,\n \"元\": 4858,\n \"党\": 3593,\n \"全\": 1574,\n \"公\": -3030,\n \"六\": 755,\n \"共\": -1880,\n \"円\": 5807,\n \"再\": 3095,\n \"分\": 457,\n \"初\": 2475,\n \"別\": 1129,\n \"前\": 2286,\n \"副\": 4437,\n \"力\": 365,\n \"動\": -949,\n \"務\": -1872,\n \"化\": 1327,\n \"北\": -1038,\n \"区\": 4646,\n \"千\": -2309,\n \"午\": -783,\n \"協\": -1006,\n \"口\": 483,\n \"右\": 1233,\n \"各\": 3588,\n \"合\": -241,\n \"同\": 3906,\n \"和\": -837,\n \"員\": 4513,\n \"国\": 642,\n \"型\": 1389,\n \"場\": 1219,\n \"外\": -241,\n \"妻\": 2016,\n \"学\": -1356,\n \"安\": -423,\n \"実\": -1008,\n \"家\": 1078,\n \"小\": -513,\n \"少\": -3102,\n \"州\": 1155,\n \"市\": 3197,\n \"平\": -1804,\n \"年\": 2416,\n \"広\": -1030,\n \"府\": 1605,\n \"度\": 1452,\n \"建\": -2352,\n \"当\": -3885,\n \"得\": 1905,\n \"思\": -1291,\n \"性\": 1822,\n \"戸\": -488,\n \"指\": -3973,\n \"政\": -2013,\n \"教\": -1479,\n \"数\": 3222,\n \"文\": -1489,\n \"新\": 1764,\n \"日\": 2099,\n \"旧\": 5792,\n \"昨\": -661,\n \"時\": -1248,\n \"曜\": -951,\n \"最\": -937,\n \"月\": 4125,\n \"期\": 360,\n \"李\": 3094,\n \"村\": 364,\n \"東\": -805,\n \"核\": 5156,\n \"森\": 2438,\n \"業\": 484,\n \"氏\": 2613,\n \"民\": -1694,\n \"決\": -1073,\n \"法\": 1868,\n \"海\": -495,\n \"無\": 979,\n \"物\": 461,\n \"特\": -3850,\n \"生\": -273,\n \"用\": 914,\n \"町\": 1215,\n \"的\": 7313,\n \"直\": -1835,\n \"省\": 792,\n \"県\": 6293,\n \"知\": -1528,\n \"私\": 4231,\n \"税\": 401,\n \"立\": -960,\n \"第\": 1201,\n \"米\": 7767,\n \"系\": 3066,\n \"約\": 3663,\n \"級\": 1384,\n \"統\": -4229,\n \"総\": 1163,\n \"線\": 1255,\n \"者\": 6457,\n \"能\": 725,\n \"自\": -2869,\n \"英\": 785,\n \"見\": 1044,\n \"調\": -562,\n \"財\": -733,\n \"費\": 1777,\n \"車\": 1835,\n \"軍\": 1375,\n \"込\": -1504,\n \"通\": -1136,\n \"選\": -681,\n \"郎\": 1026,\n \"郡\": 4404,\n \"部\": 1200,\n \"金\": 2163,\n \"長\": 421,\n \"開\": -1432,\n \"間\": 1302,\n \"関\": -1282,\n \"雨\": 2009,\n \"電\": -1045,\n \"非\": 2066,\n \"駅\": 1620,\n \"1\": -800,\n \"」\": 2670,\n \"・\": -3794,\n \"ッ\": -1350,\n \"ア\": 551,\n \"グ\": 1319,\n \"ス\": 874,\n \"ト\": 521,\n \"ム\": 1109,\n \"ル\": 1591,\n \"ロ\": 2201,\n \"ン\": 278\n };\n this.UW4__ = {\n \",\": 3930,\n \".\": 3508,\n \"―\": -4841,\n \"、\": 3930,\n \"。\": 3508,\n \"〇\": 4999,\n \"「\": 1895,\n \"」\": 3798,\n \"〓\": -5156,\n \"あ\": 4752,\n \"い\": -3435,\n \"う\": -640,\n \"え\": -2514,\n \"お\": 2405,\n \"か\": 530,\n \"が\": 6006,\n \"き\": -4482,\n \"ぎ\": -3821,\n \"く\": -3788,\n \"け\": -4376,\n \"げ\": -4734,\n \"こ\": 2255,\n \"ご\": 1979,\n \"さ\": 2864,\n \"し\": -843,\n \"じ\": -2506,\n \"す\": -731,\n \"ず\": 1251,\n \"せ\": 181,\n \"そ\": 4091,\n \"た\": 5034,\n \"だ\": 5408,\n \"ち\": -3654,\n \"っ\": -5882,\n \"つ\": -1659,\n \"て\": 3994,\n \"で\": 7410,\n \"と\": 4547,\n \"な\": 5433,\n \"に\": 6499,\n \"ぬ\": 1853,\n \"ね\": 1413,\n \"の\": 7396,\n \"は\": 8578,\n \"ば\": 1940,\n \"ひ\": 4249,\n \"び\": -4134,\n \"ふ\": 1345,\n \"へ\": 6665,\n \"べ\": -744,\n \"ほ\": 1464,\n \"ま\": 1051,\n \"み\": -2082,\n \"む\": -882,\n \"め\": -5046,\n \"も\": 4169,\n \"ゃ\": -2666,\n \"や\": 2795,\n \"ょ\": -1544,\n \"よ\": 3351,\n \"ら\": -2922,\n \"り\": -9726,\n \"る\": -14896,\n \"れ\": -2613,\n \"ろ\": -4570,\n \"わ\": -1783,\n \"を\": 13150,\n \"ん\": -2352,\n \"カ\": 2145,\n \"コ\": 1789,\n \"セ\": 1287,\n \"ッ\": -724,\n \"ト\": -403,\n \"メ\": -1635,\n \"ラ\": -881,\n \"リ\": -541,\n \"ル\": -856,\n \"ン\": -3637,\n \"・\": -4371,\n \"ー\": -11870,\n \"一\": -2069,\n \"中\": 2210,\n \"予\": 782,\n \"事\": -190,\n \"井\": -1768,\n \"人\": 1036,\n \"以\": 544,\n \"会\": 950,\n \"体\": -1286,\n \"作\": 530,\n \"側\": 4292,\n \"先\": 601,\n \"党\": -2006,\n \"共\": -1212,\n \"内\": 584,\n \"円\": 788,\n \"初\": 1347,\n \"前\": 1623,\n \"副\": 3879,\n \"力\": -302,\n \"動\": -740,\n \"務\": -2715,\n \"化\": 776,\n \"区\": 4517,\n \"協\": 1013,\n \"参\": 1555,\n \"合\": -1834,\n \"和\": -681,\n \"員\": -910,\n \"器\": -851,\n \"回\": 1500,\n \"国\": -619,\n \"園\": -1200,\n \"地\": 866,\n \"場\": -1410,\n \"塁\": -2094,\n \"士\": -1413,\n \"多\": 1067,\n \"大\": 571,\n \"子\": -4802,\n \"学\": -1397,\n \"定\": -1057,\n \"寺\": -809,\n \"小\": 1910,\n \"屋\": -1328,\n \"山\": -1500,\n \"島\": -2056,\n \"川\": -2667,\n \"市\": 2771,\n \"年\": 374,\n \"庁\": -4556,\n \"後\": 456,\n \"性\": 553,\n \"感\": 916,\n \"所\": -1566,\n \"支\": 856,\n \"改\": 787,\n \"政\": 2182,\n \"教\": 704,\n \"文\": 522,\n \"方\": -856,\n \"日\": 1798,\n \"時\": 1829,\n \"最\": 845,\n \"月\": -9066,\n \"木\": -485,\n \"来\": -442,\n \"校\": -360,\n \"業\": -1043,\n \"氏\": 5388,\n \"民\": -2716,\n \"気\": -910,\n \"沢\": -939,\n \"済\": -543,\n \"物\": -735,\n \"率\": 672,\n \"球\": -1267,\n \"生\": -1286,\n \"産\": -1101,\n \"田\": -2900,\n \"町\": 1826,\n \"的\": 2586,\n \"目\": 922,\n \"省\": -3485,\n \"県\": 2997,\n \"空\": -867,\n \"立\": -2112,\n \"第\": 788,\n \"米\": 2937,\n \"系\": 786,\n \"約\": 2171,\n \"経\": 1146,\n \"統\": -1169,\n \"総\": 940,\n \"線\": -994,\n \"署\": 749,\n \"者\": 2145,\n \"能\": -730,\n \"般\": -852,\n \"行\": -792,\n \"規\": 792,\n \"警\": -1184,\n \"議\": -244,\n \"谷\": -1000,\n \"賞\": 730,\n \"車\": -1481,\n \"軍\": 1158,\n \"輪\": -1433,\n \"込\": -3370,\n \"近\": 929,\n \"道\": -1291,\n \"選\": 2596,\n \"郎\": -4866,\n \"都\": 1192,\n \"野\": -1100,\n \"銀\": -2213,\n \"長\": 357,\n \"間\": -2344,\n \"院\": -2297,\n \"際\": -2604,\n \"電\": -878,\n \"領\": -1659,\n \"題\": -792,\n \"館\": -1984,\n \"首\": 1749,\n \"高\": 2120,\n \"「\": 1895,\n \"」\": 3798,\n \"・\": -4371,\n \"ッ\": -724,\n \"ー\": -11870,\n \"カ\": 2145,\n \"コ\": 1789,\n \"セ\": 1287,\n \"ト\": -403,\n \"メ\": -1635,\n \"ラ\": -881,\n \"リ\": -541,\n \"ル\": -856,\n \"ン\": -3637\n };\n this.UW5__ = {\n \",\": 465,\n \".\": -299,\n \"1\": -514,\n \"E2\": -32768,\n \"]\": -2762,\n \"、\": 465,\n \"。\": -299,\n \"「\": 363,\n \"あ\": 1655,\n \"い\": 331,\n \"う\": -503,\n \"え\": 1199,\n \"お\": 527,\n \"か\": 647,\n \"が\": -421,\n \"き\": 1624,\n \"ぎ\": 1971,\n \"く\": 312,\n \"げ\": -983,\n \"さ\": -1537,\n \"し\": -1371,\n \"す\": -852,\n \"だ\": -1186,\n \"ち\": 1093,\n \"っ\": 52,\n \"つ\": 921,\n \"て\": -18,\n \"で\": -850,\n \"と\": -127,\n \"ど\": 1682,\n \"な\": -787,\n \"に\": -1224,\n \"の\": -635,\n \"は\": -578,\n \"べ\": 1001,\n \"み\": 502,\n \"め\": 865,\n \"ゃ\": 3350,\n \"ょ\": 854,\n \"り\": -208,\n \"る\": 429,\n \"れ\": 504,\n \"わ\": 419,\n \"を\": -1264,\n \"ん\": 327,\n \"イ\": 241,\n \"ル\": 451,\n \"ン\": -343,\n \"中\": -871,\n \"京\": 722,\n \"会\": -1153,\n \"党\": -654,\n \"務\": 3519,\n \"区\": -901,\n \"告\": 848,\n \"員\": 2104,\n \"大\": -1296,\n \"学\": -548,\n \"定\": 1785,\n \"嵐\": -1304,\n \"市\": -2991,\n \"席\": 921,\n \"年\": 1763,\n \"思\": 872,\n \"所\": -814,\n \"挙\": 1618,\n \"新\": -1682,\n \"日\": 218,\n \"月\": -4353,\n \"査\": 932,\n \"格\": 1356,\n \"機\": -1508,\n \"氏\": -1347,\n \"田\": 240,\n \"町\": -3912,\n \"的\": -3149,\n \"相\": 1319,\n \"省\": -1052,\n \"県\": -4003,\n \"研\": -997,\n \"社\": -278,\n \"空\": -813,\n \"統\": 1955,\n \"者\": -2233,\n \"表\": 663,\n \"語\": -1073,\n \"議\": 1219,\n \"選\": -1018,\n \"郎\": -368,\n \"長\": 786,\n \"間\": 1191,\n \"題\": 2368,\n \"館\": -689,\n \"1\": -514,\n \"E2\": -32768,\n \"「\": 363,\n \"イ\": 241,\n \"ル\": 451,\n \"ン\": -343\n };\n this.UW6__ = {\n \",\": 227,\n \".\": 808,\n \"1\": -270,\n \"E1\": 306,\n \"、\": 227,\n \"。\": 808,\n \"あ\": -307,\n \"う\": 189,\n \"か\": 241,\n \"が\": -73,\n \"く\": -121,\n \"こ\": -200,\n \"じ\": 1782,\n \"す\": 383,\n \"た\": -428,\n \"っ\": 573,\n \"て\": -1014,\n \"で\": 101,\n \"と\": -105,\n \"な\": -253,\n \"に\": -149,\n \"の\": -417,\n \"は\": -236,\n \"も\": -206,\n \"り\": 187,\n \"る\": -135,\n \"を\": 195,\n \"ル\": -673,\n \"ン\": -496,\n \"一\": -277,\n \"中\": 201,\n \"件\": -800,\n \"会\": 624,\n \"前\": 302,\n \"区\": 1792,\n \"員\": -1212,\n \"委\": 798,\n \"学\": -960,\n \"市\": 887,\n \"広\": -695,\n \"後\": 535,\n \"業\": -697,\n \"相\": 753,\n \"社\": -507,\n \"福\": 974,\n \"空\": -822,\n \"者\": 1811,\n \"連\": 463,\n \"郎\": 1082,\n \"1\": -270,\n \"E1\": 306,\n \"ル\": -673,\n \"ン\": -496\n };\n return this;\n }\n TinySegmenter.prototype.ctype_ = function (str) {\n for (var i in this.chartype_) {\n if (str.match(this.chartype_[i][0])) {\n return this.chartype_[i][1];\n }\n }\n return \"O\";\n };\n TinySegmenter.prototype.ts_ = function (v) {\n if (v) {\n return v;\n }\n return 0;\n };\n TinySegmenter.prototype.segment = function (input) {\n if (input == null || input == undefined || input == \"\") {\n return [];\n }\n var result = [];\n var seg = [\"B3\", \"B2\", \"B1\"];\n var ctype = [\"O\", \"O\", \"O\"];\n var o = input.split(\"\");\n for (i = 0; i < o.length; ++i) {\n seg.push(o[i]);\n ctype.push(this.ctype_(o[i]));\n }\n seg.push(\"E1\");\n seg.push(\"E2\");\n seg.push(\"E3\");\n ctype.push(\"O\");\n ctype.push(\"O\");\n ctype.push(\"O\");\n var word = seg[3];\n var p1 = \"U\";\n var p2 = \"U\";\n var p3 = \"U\";\n for (var i = 4; i < seg.length - 3; ++i) {\n var score = this.BIAS__;\n var w1 = seg[i - 3];\n var w2 = seg[i - 2];\n var w3 = seg[i - 1];\n var w4 = seg[i];\n var w5 = seg[i + 1];\n var w6 = seg[i + 2];\n var c1 = ctype[i - 3];\n var c2 = ctype[i - 2];\n var c3 = ctype[i - 1];\n var c4 = ctype[i];\n var c5 = ctype[i + 1];\n var c6 = ctype[i + 2];\n score += this.ts_(this.UP1__[p1]);\n score += this.ts_(this.UP2__[p2]);\n score += this.ts_(this.UP3__[p3]);\n score += this.ts_(this.BP1__[p1 + p2]);\n score += this.ts_(this.BP2__[p2 + p3]);\n score += this.ts_(this.UW1__[w1]);\n score += this.ts_(this.UW2__[w2]);\n score += this.ts_(this.UW3__[w3]);\n score += this.ts_(this.UW4__[w4]);\n score += this.ts_(this.UW5__[w5]);\n score += this.ts_(this.UW6__[w6]);\n score += this.ts_(this.BW1__[w2 + w3]);\n score += this.ts_(this.BW2__[w3 + w4]);\n score += this.ts_(this.BW3__[w4 + w5]);\n score += this.ts_(this.TW1__[w1 + w2 + w3]);\n score += this.ts_(this.TW2__[w2 + w3 + w4]);\n score += this.ts_(this.TW3__[w3 + w4 + w5]);\n score += this.ts_(this.TW4__[w4 + w5 + w6]);\n score += this.ts_(this.UC1__[c1]);\n score += this.ts_(this.UC2__[c2]);\n score += this.ts_(this.UC3__[c3]);\n score += this.ts_(this.UC4__[c4]);\n score += this.ts_(this.UC5__[c5]);\n score += this.ts_(this.UC6__[c6]);\n score += this.ts_(this.BC1__[c2 + c3]);\n score += this.ts_(this.BC2__[c3 + c4]);\n score += this.ts_(this.BC3__[c4 + c5]);\n score += this.ts_(this.TC1__[c1 + c2 + c3]);\n score += this.ts_(this.TC2__[c2 + c3 + c4]);\n score += this.ts_(this.TC3__[c3 + c4 + c5]);\n score += this.ts_(this.TC4__[c4 + c5 + c6]);\n // score += this.ts_(this.TC5__[c4 + c5 + c6]); \n score += this.ts_(this.UQ1__[p1 + c1]);\n score += this.ts_(this.UQ2__[p2 + c2]);\n score += this.ts_(this.UQ3__[p3 + c3]);\n score += this.ts_(this.BQ1__[p2 + c2 + c3]);\n score += this.ts_(this.BQ2__[p2 + c3 + c4]);\n score += this.ts_(this.BQ3__[p3 + c2 + c3]);\n score += this.ts_(this.BQ4__[p3 + c3 + c4]);\n score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);\n score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);\n score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);\n score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);\n var p = \"O\";\n if (score > 0) {\n result.push(word);\n word = \"\";\n p = \"B\";\n }\n p1 = p2;\n p2 = p3;\n p3 = p;\n word += seg[i];\n }\n result.push(word);\n return result;\n };\n lunr.TinySegmenter = TinySegmenter;\n };\n});","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;\n(function () {\n /**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\n var lunr = function lunr(config) {\n var builder = new lunr.Builder();\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n builder.searchPipeline.add(lunr.stemmer);\n config.call(builder, builder);\n return builder.build();\n };\n lunr.version = \"2.3.9\";\n /*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\n lunr.utils = {};\n\n /**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\n lunr.utils.warn = function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message);\n }\n };\n /* eslint-enable no-console */\n }(this);\n\n /**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\n lunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\";\n } else {\n return obj.toString();\n }\n };\n\n /**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\n lunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n var clone = Object.create(null),\n keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key];\n if (Array.isArray(val)) {\n clone[key] = val.slice();\n continue;\n }\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n clone[key] = val;\n continue;\n }\n throw new TypeError(\"clone is not deep and does not support nested objects\");\n }\n return clone;\n };\n lunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef;\n this.fieldName = fieldName;\n this._stringValue = stringValue;\n };\n lunr.FieldRef.joiner = \"/\";\n lunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner);\n if (n === -1) {\n throw \"malformed field ref string\";\n }\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1);\n return new lunr.FieldRef(docRef, fieldRef, s);\n };\n lunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef;\n }\n return this._stringValue;\n };\n /*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A lunr set.\n *\n * @constructor\n */\n lunr.Set = function (elements) {\n this.elements = Object.create(null);\n if (elements) {\n this.length = elements.length;\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true;\n }\n } else {\n this.length = 0;\n }\n };\n\n /**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n lunr.Set.complete = {\n intersect: function intersect(other) {\n return other;\n },\n union: function union() {\n return this;\n },\n contains: function contains() {\n return true;\n }\n };\n\n /**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n lunr.Set.empty = {\n intersect: function intersect() {\n return this;\n },\n union: function union(other) {\n return other;\n },\n contains: function contains() {\n return false;\n }\n };\n\n /**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\n lunr.Set.prototype.contains = function (object) {\n return !!this.elements[object];\n };\n\n /**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\n lunr.Set.prototype.intersect = function (other) {\n var a,\n b,\n elements,\n intersection = [];\n if (other === lunr.Set.complete) {\n return this;\n }\n if (other === lunr.Set.empty) {\n return other;\n }\n if (this.length < other.length) {\n a = this;\n b = other;\n } else {\n a = other;\n b = this;\n }\n elements = Object.keys(a.elements);\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element in b.elements) {\n intersection.push(element);\n }\n }\n return new lunr.Set(intersection);\n };\n\n /**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\n lunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete;\n }\n if (other === lunr.Set.empty) {\n return this;\n }\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)));\n };\n /**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\n lunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0;\n for (var fieldName in posting) {\n if (fieldName == '_index') continue; // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length;\n }\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5);\n return Math.log(1 + Math.abs(x));\n };\n\n /**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\n lunr.Token = function (str, metadata) {\n this.str = str || \"\";\n this.metadata = metadata || {};\n };\n\n /**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\n lunr.Token.prototype.toString = function () {\n return this.str;\n };\n\n /**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n /**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\n lunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata);\n return this;\n };\n\n /**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\n lunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) {\n return s;\n };\n return new lunr.Token(fn(this.str, this.metadata), this.metadata);\n };\n /*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\n lunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return [];\n }\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(lunr.utils.asString(t).toLowerCase(), lunr.utils.clone(metadata));\n });\n }\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = [];\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart;\n if (char.match(lunr.tokenizer.separator) || sliceEnd == len) {\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {};\n tokenMetadata[\"position\"] = [sliceStart, sliceLength];\n tokenMetadata[\"index\"] = tokens.length;\n tokens.push(new lunr.Token(str.slice(sliceStart, sliceEnd), tokenMetadata));\n }\n sliceStart = sliceEnd + 1;\n }\n }\n return tokens;\n };\n\n /**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\n lunr.tokenizer.separator = /[\\s\\-]+/;\n /*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\n lunr.Pipeline = function () {\n this._stack = [];\n };\n lunr.Pipeline.registeredFunctions = Object.create(null);\n\n /**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n /**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\n lunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label);\n }\n fn.label = label;\n lunr.Pipeline.registeredFunctions[fn.label] = fn;\n };\n\n /**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\n lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && fn.label in this.registeredFunctions;\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn);\n }\n };\n\n /**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\n lunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline();\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName];\n if (fn) {\n pipeline.add(fn);\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName);\n }\n });\n return pipeline;\n };\n\n /**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\n lunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments);\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n this._stack.push(fn);\n }, this);\n };\n\n /**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n lunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._stack.indexOf(existingFn);\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n pos = pos + 1;\n this._stack.splice(pos, 0, newFn);\n };\n\n /**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n lunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._stack.indexOf(existingFn);\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n this._stack.splice(pos, 0, newFn);\n };\n\n /**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\n lunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn);\n if (pos == -1) {\n return;\n }\n this._stack.splice(pos, 1);\n };\n\n /**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\n lunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length;\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i];\n var memo = [];\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens);\n if (result === null || result === void 0 || result === '') continue;\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k]);\n }\n } else {\n memo.push(result);\n }\n }\n tokens = memo;\n }\n return tokens;\n };\n\n /**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\n lunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token(str, metadata);\n return this.run([token]).map(function (t) {\n return t.toString();\n });\n };\n\n /**\n * Resets the pipeline by removing any existing processors.\n *\n */\n lunr.Pipeline.prototype.reset = function () {\n this._stack = [];\n };\n\n /**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\n lunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n return fn.label;\n });\n };\n /*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\n lunr.Vector = function (elements) {\n this._magnitude = 0;\n this.elements = elements || [];\n };\n\n /**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\n lunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0;\n }\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2];\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint;\n }\n if (pivotIndex > index) {\n end = pivotPoint;\n }\n if (pivotIndex == index) {\n break;\n }\n sliceLength = end - start;\n pivotPoint = start + Math.floor(sliceLength / 2);\n pivotIndex = this.elements[pivotPoint * 2];\n }\n if (pivotIndex == index) {\n return pivotPoint * 2;\n }\n if (pivotIndex > index) {\n return pivotPoint * 2;\n }\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2;\n }\n };\n\n /**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\n lunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\";\n });\n };\n\n /**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\n lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0;\n var position = this.positionForIndex(insertIdx);\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val);\n } else {\n this.elements.splice(position, 0, insertIdx, val);\n }\n };\n\n /**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\n lunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude;\n var sumOfSquares = 0,\n elementsLength = this.elements.length;\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i];\n sumOfSquares += val * val;\n }\n return this._magnitude = Math.sqrt(sumOfSquares);\n };\n\n /**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\n lunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements,\n b = otherVector.elements,\n aLen = a.length,\n bLen = b.length,\n aVal = 0,\n bVal = 0,\n i = 0,\n j = 0;\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j];\n if (aVal < bVal) {\n i += 2;\n } else if (aVal > bVal) {\n j += 2;\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1];\n i += 2;\n j += 2;\n }\n }\n return dotProduct;\n };\n\n /**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\n lunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0;\n };\n\n /**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\n lunr.Vector.prototype.toArray = function () {\n var output = new Array(this.elements.length / 2);\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i];\n }\n return output;\n };\n\n /**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\n lunr.Vector.prototype.toJSON = function () {\n return this.elements;\n };\n /* eslint-disable */\n /*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n /**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\n lunr.stemmer = function () {\n var step2list = {\n \"ational\": \"ate\",\n \"tional\": \"tion\",\n \"enci\": \"ence\",\n \"anci\": \"ance\",\n \"izer\": \"ize\",\n \"bli\": \"ble\",\n \"alli\": \"al\",\n \"entli\": \"ent\",\n \"eli\": \"e\",\n \"ousli\": \"ous\",\n \"ization\": \"ize\",\n \"ation\": \"ate\",\n \"ator\": \"ate\",\n \"alism\": \"al\",\n \"iveness\": \"ive\",\n \"fulness\": \"ful\",\n \"ousness\": \"ous\",\n \"aliti\": \"al\",\n \"iviti\": \"ive\",\n \"biliti\": \"ble\",\n \"logi\": \"log\"\n },\n step3list = {\n \"icate\": \"ic\",\n \"ative\": \"\",\n \"alize\": \"al\",\n \"iciti\": \"ic\",\n \"ical\": \"ic\",\n \"ful\": \"\",\n \"ness\": \"\"\n },\n c = \"[^aeiou]\",\n // consonant\n v = \"[aeiouy]\",\n // vowel\n C = c + \"[^aeiouy]*\",\n // consonant sequence\n V = v + \"[aeiou]*\",\n // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C,\n // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\",\n // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C,\n // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n var porterStemmer = function porterStemmer(w) {\n var stem, suffix, firstch, re, re2, re3, re4;\n if (w.length < 3) {\n return w;\n }\n firstch = w.substr(0, 1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a;\n re2 = re2_1a;\n if (re.test(w)) {\n w = w.replace(re, \"$1$2\");\n } else if (re2.test(w)) {\n w = w.replace(re2, \"$1$2\");\n }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) {\n w = w + \"e\";\n } else if (re3.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n } else if (re4.test(w)) {\n w = w + \"e\";\n }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || re2.test(stem) && !re3.test(stem)) {\n w = stem;\n }\n }\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n return w;\n };\n return function (token) {\n return token.update(porterStemmer);\n };\n }();\n lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer');\n /*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\n lunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord;\n return memo;\n }, {});\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token;\n };\n };\n\n /**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\n lunr.stopWordFilter = lunr.generateStopWordFilter(['a', 'able', 'about', 'across', 'after', 'all', 'almost', 'also', 'am', 'among', 'an', 'and', 'any', 'are', 'as', 'at', 'be', 'because', 'been', 'but', 'by', 'can', 'cannot', 'could', 'dear', 'did', 'do', 'does', 'either', 'else', 'ever', 'every', 'for', 'from', 'get', 'got', 'had', 'has', 'have', 'he', 'her', 'hers', 'him', 'his', 'how', 'however', 'i', 'if', 'in', 'into', 'is', 'it', 'its', 'just', 'least', 'let', 'like', 'likely', 'may', 'me', 'might', 'most', 'must', 'my', 'neither', 'no', 'nor', 'not', 'of', 'off', 'often', 'on', 'only', 'or', 'other', 'our', 'own', 'rather', 'said', 'say', 'says', 'she', 'should', 'since', 'so', 'some', 'than', 'that', 'the', 'their', 'them', 'then', 'there', 'these', 'they', 'this', 'tis', 'to', 'too', 'twas', 'us', 'wants', 'was', 'we', 'were', 'what', 'when', 'where', 'which', 'while', 'who', 'whom', 'why', 'will', 'with', 'would', 'yet', 'you', 'your']);\n lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter');\n /*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\n lunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '');\n });\n };\n lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer');\n /*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\n lunr.TokenSet = function () {\n this.final = false;\n this.edges = {};\n this.id = lunr.TokenSet._nextId;\n lunr.TokenSet._nextId += 1;\n };\n\n /**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\n lunr.TokenSet._nextId = 1;\n\n /**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\n lunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder();\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i]);\n }\n builder.finish();\n return builder.root;\n };\n\n /**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance);\n } else {\n return lunr.TokenSet.fromString(clause.term);\n }\n };\n\n /**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\n lunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet();\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }];\n while (stack.length) {\n var frame = stack.pop();\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode;\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char];\n } else {\n noEditNode = new lunr.TokenSet();\n frame.node.edges[char] = noEditNode;\n }\n if (frame.str.length == 1) {\n noEditNode.final = true;\n }\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n });\n }\n if (frame.editsRemaining == 0) {\n continue;\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"];\n } else {\n var insertionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = insertionNode;\n }\n if (frame.str.length == 0) {\n insertionNode.final = true;\n }\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n });\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true;\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"];\n } else {\n var substitutionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = substitutionNode;\n }\n if (frame.str.length == 1) {\n substitutionNode.final = true;\n }\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode;\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB];\n } else {\n transposeNode = new lunr.TokenSet();\n frame.node.edges[charB] = transposeNode;\n }\n if (frame.str.length == 1) {\n transposeNode.final = true;\n }\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n });\n }\n }\n return root;\n };\n\n /**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet(),\n root = node;\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = i == len - 1;\n if (char == \"*\") {\n node.edges[char] = node;\n node.final = final;\n } else {\n var next = new lunr.TokenSet();\n next.final = final;\n node.edges[char] = next;\n node = next;\n }\n }\n return root;\n };\n\n /**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\n lunr.TokenSet.prototype.toArray = function () {\n var words = [];\n var stack = [{\n prefix: \"\",\n node: this\n }];\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length;\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0);\n words.push(frame.prefix);\n }\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n });\n }\n }\n return words;\n };\n\n /**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\n lunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str;\n }\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length;\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label];\n str = str + label + node.id;\n }\n return str;\n };\n\n /**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet(),\n frame = undefined;\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }];\n while (stack.length) {\n frame = stack.pop();\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length;\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q];\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n];\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined;\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge];\n next.final = next.final || final;\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet();\n next.final = final;\n frame.output.edges[nEdge] = next;\n }\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n });\n }\n }\n }\n }\n return output;\n };\n lunr.TokenSet.Builder = function () {\n this.previousWord = \"\";\n this.root = new lunr.TokenSet();\n this.uncheckedNodes = [];\n this.minimizedNodes = {};\n };\n lunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0;\n if (word < this.previousWord) {\n throw new Error(\"Out of order word insertion\");\n }\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break;\n commonPrefix++;\n }\n this.minimize(commonPrefix);\n if (this.uncheckedNodes.length == 0) {\n node = this.root;\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child;\n }\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet(),\n char = word[i];\n node.edges[char] = nextNode;\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n });\n node = nextNode;\n }\n node.final = true;\n this.previousWord = word;\n };\n lunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0);\n };\n lunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString();\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey];\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey;\n this.minimizedNodes[childKey] = node.child;\n }\n this.uncheckedNodes.pop();\n }\n };\n /*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\n lunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex;\n this.fieldVectors = attrs.fieldVectors;\n this.tokenSet = attrs.tokenSet;\n this.fields = attrs.fields;\n this.pipeline = attrs.pipeline;\n };\n\n /**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n /**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n /**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\n lunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query);\n parser.parse();\n });\n };\n\n /**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n /**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\n lunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null);\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector();\n }\n fn.call(query, query);\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty;\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n });\n } else {\n terms = [clause.term];\n }\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m];\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term;\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray();\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = lunr.Set.empty;\n }\n break;\n }\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index;\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs);\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet);\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete;\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty;\n }\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet);\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue;\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) {\n return a + b;\n });\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue;\n }\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef(matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch;\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData(expandedTerm, field, metadata);\n } else {\n fieldMatch.add(expandedTerm, field, metadata);\n }\n }\n termFieldCache[termField] = true;\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches);\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty;\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]);\n }\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]);\n }\n }\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null);\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors);\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i];\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef);\n matchingFields[matchingFieldRef] = new lunr.MatchData();\n }\n }\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef;\n if (!allRequiredMatches.contains(docRef)) {\n continue;\n }\n if (allProhibitedMatches.contains(docRef)) {\n continue;\n }\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch;\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score;\n docMatch.matchData.combine(matchingFields[fieldRef]);\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n };\n matches[docRef] = match;\n results.push(match);\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score;\n });\n };\n\n /**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\n lunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex).sort().map(function (term) {\n return [term, this.invertedIndex[term]];\n }, this);\n var fieldVectors = Object.keys(this.fieldVectors).map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()];\n }, this);\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n };\n };\n\n /**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\n lunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder(),\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline);\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\");\n }\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1];\n fieldVectors[ref] = new lunr.Vector(elements);\n }\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1];\n tokenSetBuilder.insert(term);\n invertedIndex[term] = posting;\n }\n tokenSetBuilder.finish();\n attrs.fields = serializedIndex.fields;\n attrs.fieldVectors = fieldVectors;\n attrs.invertedIndex = invertedIndex;\n attrs.tokenSet = tokenSetBuilder.root;\n attrs.pipeline = pipeline;\n return new lunr.Index(attrs);\n };\n /*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\n lunr.Builder = function () {\n this._ref = \"id\";\n this._fields = Object.create(null);\n this._documents = Object.create(null);\n this.invertedIndex = Object.create(null);\n this.fieldTermFrequencies = {};\n this.fieldLengths = {};\n this.tokenizer = lunr.tokenizer;\n this.pipeline = new lunr.Pipeline();\n this.searchPipeline = new lunr.Pipeline();\n this.documentCount = 0;\n this._b = 0.75;\n this._k1 = 1.2;\n this.termIndex = 0;\n this.metadataWhitelist = [];\n };\n\n /**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\n lunr.Builder.prototype.ref = function (ref) {\n this._ref = ref;\n };\n\n /**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n /**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\n lunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError(\"Field '\" + fieldName + \"' contains illegal character '/'\");\n }\n this._fields[fieldName] = attributes || {};\n };\n\n /**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n lunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0;\n } else if (number > 1) {\n this._b = 1;\n } else {\n this._b = number;\n }\n };\n\n /**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n lunr.Builder.prototype.k1 = function (number) {\n this._k1 = number;\n };\n\n /**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\n lunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields);\n this._documents[docRef] = attributes || {};\n this.documentCount += 1;\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef(docRef, fieldName),\n fieldTerms = Object.create(null);\n this.fieldTermFrequencies[fieldRef] = fieldTerms;\n this.fieldLengths[fieldRef] = 0;\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length;\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j];\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0;\n }\n fieldTerms[term] += 1;\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null);\n posting[\"_index\"] = this.termIndex;\n this.termIndex += 1;\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null);\n }\n this.invertedIndex[term] = posting;\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null);\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey];\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = [];\n }\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata);\n }\n }\n }\n };\n\n /**\n * Calculates the average document length for this index\n *\n * @private\n */\n lunr.Builder.prototype.calculateAverageFieldLengths = function () {\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {};\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName;\n documentsWithField[field] || (documentsWithField[field] = 0);\n documentsWithField[field] += 1;\n accumulator[field] || (accumulator[field] = 0);\n accumulator[field] += this.fieldLengths[fieldRef];\n }\n var fields = Object.keys(this._fields);\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i];\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName];\n }\n this.averageFieldLength = accumulator;\n };\n\n /**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\n lunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null);\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector(),\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length;\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1;\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf,\n score,\n scoreWithPrecision;\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount);\n termIdfCache[term] = idf;\n } else {\n idf = termIdfCache[term];\n }\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf);\n score *= fieldBoost;\n score *= docBoost;\n scoreWithPrecision = Math.round(score * 1000) / 1000;\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision);\n }\n fieldVectors[fieldRef] = fieldVector;\n }\n this.fieldVectors = fieldVectors;\n };\n\n /**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\n lunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(Object.keys(this.invertedIndex).sort());\n };\n\n /**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\n lunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths();\n this.createFieldVectors();\n this.createTokenSet();\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n });\n };\n\n /**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\n lunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1);\n args.unshift(this);\n fn.apply(this, args);\n };\n /**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\n lunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {});\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n clonedMetadata[key] = metadata[key].slice();\n }\n this.metadata = Object.create(null);\n if (term !== undefined) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = clonedMetadata;\n }\n };\n\n /**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\n lunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata);\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term]);\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null);\n }\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field]);\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null);\n }\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key];\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]);\n }\n }\n }\n }\n };\n\n /**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\n lunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = metadata;\n return;\n }\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata;\n return;\n }\n var metadataKeys = Object.keys(metadata);\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]);\n } else {\n this.metadata[term][field][key] = metadata[key];\n }\n }\n };\n /**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\n lunr.Query = function (allFields) {\n this.clauses = [];\n this.allFields = allFields;\n };\n\n /**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\n lunr.Query.wildcard = new String(\"*\");\n lunr.Query.wildcard.NONE = 0;\n lunr.Query.wildcard.LEADING = 1;\n lunr.Query.wildcard.TRAILING = 2;\n\n /**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\n lunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n };\n\n /**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n /**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\n lunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields;\n }\n if (!('boost' in clause)) {\n clause.boost = 1;\n }\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true;\n }\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE;\n }\n if (clause.wildcard & lunr.Query.wildcard.LEADING && clause.term.charAt(0) != lunr.Query.wildcard) {\n clause.term = \"*\" + clause.term;\n }\n if (clause.wildcard & lunr.Query.wildcard.TRAILING && clause.term.slice(-1) != lunr.Query.wildcard) {\n clause.term = \"\" + clause.term + \"*\";\n }\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL;\n }\n this.clauses.push(clause);\n return this;\n };\n\n /**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\n lunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\n lunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) {\n this.term(t, lunr.utils.clone(options));\n }, this);\n return this;\n }\n var clause = options || {};\n clause.term = term.toString();\n this.clause(clause);\n return this;\n };\n lunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\";\n this.message = message;\n this.start = start;\n this.end = end;\n };\n lunr.QueryParseError.prototype = new Error();\n lunr.QueryLexer = function (str) {\n this.lexemes = [];\n this.str = str;\n this.length = str.length;\n this.pos = 0;\n this.start = 0;\n this.escapeCharPositions = [];\n };\n lunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText;\n while (state) {\n state = state(this);\n }\n };\n lunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos;\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i];\n subSlices.push(this.str.slice(sliceStart, sliceEnd));\n sliceStart = sliceEnd + 1;\n }\n subSlices.push(this.str.slice(sliceStart, this.pos));\n this.escapeCharPositions.length = 0;\n return subSlices.join('');\n };\n lunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n });\n this.start = this.pos;\n };\n lunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1);\n this.pos += 1;\n };\n lunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS;\n }\n var char = this.str.charAt(this.pos);\n this.pos += 1;\n return char;\n };\n lunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start;\n };\n lunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1;\n }\n this.start = this.pos;\n };\n lunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1;\n };\n lunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode;\n do {\n char = this.next();\n charCode = char.charCodeAt(0);\n } while (charCode > 47 && charCode < 58);\n if (char != lunr.QueryLexer.EOS) {\n this.backup();\n }\n };\n lunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length;\n };\n lunr.QueryLexer.EOS = 'EOS';\n lunr.QueryLexer.FIELD = 'FIELD';\n lunr.QueryLexer.TERM = 'TERM';\n lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE';\n lunr.QueryLexer.BOOST = 'BOOST';\n lunr.QueryLexer.PRESENCE = 'PRESENCE';\n lunr.QueryLexer.lexField = function (lexer) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.FIELD);\n lexer.ignore();\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.TERM);\n }\n lexer.ignore();\n if (lexer.more()) {\n return lunr.QueryLexer.lexText;\n }\n };\n lunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE);\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.BOOST);\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n };\n\n // This matches the separator used when tokenising fields\n // within a document. These should match otherwise it is\n // not possible to search for some tokens within a document.\n //\n // It is possible for the user to change the separator on the\n // tokenizer so it _might_ clash with any other of the special\n // characters already used within the search string, e.g. :.\n //\n // This means that it is possible to change the separator in\n // such a way that makes some words unsearchable using a search\n // string.\n lunr.QueryLexer.termSeparator = lunr.tokenizer.separator;\n lunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next();\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS;\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter();\n continue;\n }\n if (char == \":\") {\n return lunr.QueryLexer.lexField;\n }\n if (char == \"~\") {\n lexer.backup();\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n return lunr.QueryLexer.lexEditDistance;\n }\n if (char == \"^\") {\n lexer.backup();\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n return lunr.QueryLexer.lexBoost;\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm;\n }\n }\n };\n lunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer(str);\n this.query = query;\n this.currentClause = {};\n this.lexemeIdx = 0;\n };\n lunr.QueryParser.prototype.parse = function () {\n this.lexer.run();\n this.lexemes = this.lexer.lexemes;\n var state = lunr.QueryParser.parseClause;\n while (state) {\n state = state(this);\n }\n return this.query;\n };\n lunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx];\n };\n lunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme();\n this.lexemeIdx += 1;\n return lexeme;\n };\n lunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause;\n this.query.clause(completedClause);\n this.currentClause = {};\n };\n lunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme();\n if (lexeme == undefined) {\n return;\n }\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence;\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type;\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\";\n }\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n };\n lunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED;\n break;\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED;\n break;\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) {\n return \"'\" + f + \"'\";\n }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields;\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.fields = [lexeme.str];\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n parser.currentClause.term = lexeme.str.toLowerCase();\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false;\n }\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n var editDistance = parseInt(lexeme.str, 10);\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.editDistance = editDistance;\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n var boost = parseInt(lexeme.str, 10);\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.boost = boost;\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n }\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */;\n (function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.lunr = factory();\n }\n })(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr;\n });\n})();","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n it = a.entries();\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","import t, { Component as e } from \"react\";\nimport r from \"prop-types\";\nimport n from \"react-fast-compare\";\nimport i from \"invariant\";\nimport o from \"shallowequal\";\nfunction a() {\n return a = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r) {\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n }\n return t;\n }, a.apply(this, arguments);\n}\nfunction s(t, e) {\n t.prototype = Object.create(e.prototype), t.prototype.constructor = t, c(t, e);\n}\nfunction c(t, e) {\n return c = Object.setPrototypeOf || function (t, e) {\n return t.__proto__ = e, t;\n }, c(t, e);\n}\nfunction u(t, e) {\n if (null == t) return {};\n var r,\n n,\n i = {},\n o = Object.keys(t);\n for (n = 0; n < o.length; n++) {\n e.indexOf(r = o[n]) >= 0 || (i[r] = t[r]);\n }\n return i;\n}\nvar l = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\",\n FRAGMENT: \"Symbol(react.fragment)\"\n },\n p = {\n rel: [\"amphtml\", \"canonical\", \"alternate\"]\n },\n f = {\n type: [\"application/ld+json\"]\n },\n d = {\n charset: \"\",\n name: [\"robots\", \"description\"],\n property: [\"og:type\", \"og:title\", \"og:url\", \"og:image\", \"og:image:alt\", \"og:description\", \"twitter:url\", \"twitter:title\", \"twitter:description\", \"twitter:image\", \"twitter:image:alt\", \"twitter:card\", \"twitter:site\"]\n },\n h = Object.keys(l).map(function (t) {\n return l[t];\n }),\n m = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n },\n y = Object.keys(m).reduce(function (t, e) {\n return t[m[e]] = e, t;\n }, {}),\n T = function T(t, e) {\n for (var r = t.length - 1; r >= 0; r -= 1) {\n var n = t[r];\n if (Object.prototype.hasOwnProperty.call(n, e)) return n[e];\n }\n return null;\n },\n g = function g(t) {\n var e = T(t, l.TITLE),\n r = T(t, \"titleTemplate\");\n if (Array.isArray(e) && (e = e.join(\"\")), r && e) return r.replace(/%s/g, function () {\n return e;\n });\n var n = T(t, \"defaultTitle\");\n return e || n || void 0;\n },\n b = function b(t) {\n return T(t, \"onChangeClientState\") || function () {};\n },\n v = function v(t, e) {\n return e.filter(function (e) {\n return void 0 !== e[t];\n }).map(function (e) {\n return e[t];\n }).reduce(function (t, e) {\n return a({}, t, e);\n }, {});\n },\n A = function A(t, e) {\n return e.filter(function (t) {\n return void 0 !== t[l.BASE];\n }).map(function (t) {\n return t[l.BASE];\n }).reverse().reduce(function (e, r) {\n if (!e.length) for (var n = Object.keys(r), i = 0; i < n.length; i += 1) {\n var o = n[i].toLowerCase();\n if (-1 !== t.indexOf(o) && r[o]) return e.concat(r);\n }\n return e;\n }, []);\n },\n C = function C(t, e, r) {\n var n = {};\n return r.filter(function (e) {\n return !!Array.isArray(e[t]) || (void 0 !== e[t] && console && \"function\" == typeof console.warn && console.warn(\"Helmet: \" + t + ' should be of type \"Array\". Instead found type \"' + typeof e[t] + '\"'), !1);\n }).map(function (e) {\n return e[t];\n }).reverse().reduce(function (t, r) {\n var i = {};\n r.filter(function (t) {\n for (var r, o = Object.keys(t), a = 0; a < o.length; a += 1) {\n var s = o[a],\n c = s.toLowerCase();\n -1 === e.indexOf(c) || \"rel\" === r && \"canonical\" === t[r].toLowerCase() || \"rel\" === c && \"stylesheet\" === t[c].toLowerCase() || (r = c), -1 === e.indexOf(s) || \"innerHTML\" !== s && \"cssText\" !== s && \"itemprop\" !== s || (r = s);\n }\n if (!r || !t[r]) return !1;\n var u = t[r].toLowerCase();\n return n[r] || (n[r] = {}), i[r] || (i[r] = {}), !n[r][u] && (i[r][u] = !0, !0);\n }).reverse().forEach(function (e) {\n return t.push(e);\n });\n for (var o = Object.keys(i), s = 0; s < o.length; s += 1) {\n var c = o[s],\n u = a({}, n[c], i[c]);\n n[c] = u;\n }\n return t;\n }, []).reverse();\n },\n O = function O(t, e) {\n if (Array.isArray(t) && t.length) for (var r = 0; r < t.length; r += 1) {\n if (t[r][e]) return !0;\n }\n return !1;\n },\n S = function S(t) {\n return Array.isArray(t) ? t.join(\"\") : t;\n },\n E = function E(t, e) {\n return Array.isArray(t) ? t.reduce(function (t, r) {\n return function (t, e) {\n for (var r = Object.keys(t), n = 0; n < r.length; n += 1) {\n if (e[r[n]] && e[r[n]].includes(t[r[n]])) return !0;\n }\n return !1;\n }(r, e) ? t.priority.push(r) : t.default.push(r), t;\n }, {\n priority: [],\n default: []\n }) : {\n default: t\n };\n },\n I = function I(t, e) {\n var r;\n return a({}, t, ((r = {})[e] = void 0, r));\n },\n P = [l.NOSCRIPT, l.SCRIPT, l.STYLE],\n w = function w(t, e) {\n return void 0 === e && (e = !0), !1 === e ? String(t) : String(t).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n },\n x = function x(t) {\n return Object.keys(t).reduce(function (e, r) {\n var n = void 0 !== t[r] ? r + '=\"' + t[r] + '\"' : \"\" + r;\n return e ? e + \" \" + n : n;\n }, \"\");\n },\n L = function L(t, e) {\n return void 0 === e && (e = {}), Object.keys(t).reduce(function (e, r) {\n return e[m[r] || r] = t[r], e;\n }, e);\n },\n j = function j(e, r) {\n return r.map(function (r, n) {\n var i,\n o = ((i = {\n key: n\n })[\"data-rh\"] = !0, i);\n return Object.keys(r).forEach(function (t) {\n var e = m[t] || t;\n \"innerHTML\" === e || \"cssText\" === e ? o.dangerouslySetInnerHTML = {\n __html: r.innerHTML || r.cssText\n } : o[e] = r[t];\n }), t.createElement(e, o);\n });\n },\n M = function M(e, r, n) {\n switch (e) {\n case l.TITLE:\n return {\n toComponent: function toComponent() {\n return n = r.titleAttributes, (i = {\n key: e = r.title\n })[\"data-rh\"] = !0, o = L(n, i), [t.createElement(l.TITLE, o, e)];\n var e, n, i, o;\n },\n toString: function toString() {\n return function (t, e, r, n) {\n var i = x(r),\n o = S(e);\n return i ? \"<\" + t + ' data-rh=\"true\" ' + i + \">\" + w(o, n) + \"</\" + t + \">\" : \"<\" + t + ' data-rh=\"true\">' + w(o, n) + \"</\" + t + \">\";\n }(e, r.title, r.titleAttributes, n);\n }\n };\n case \"bodyAttributes\":\n case \"htmlAttributes\":\n return {\n toComponent: function toComponent() {\n return L(r);\n },\n toString: function toString() {\n return x(r);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return j(e, r);\n },\n toString: function toString() {\n return function (t, e, r) {\n return e.reduce(function (e, n) {\n var i = Object.keys(n).filter(function (t) {\n return !(\"innerHTML\" === t || \"cssText\" === t);\n }).reduce(function (t, e) {\n var i = void 0 === n[e] ? e : e + '=\"' + w(n[e], r) + '\"';\n return t ? t + \" \" + i : i;\n }, \"\"),\n o = n.innerHTML || n.cssText || \"\",\n a = -1 === P.indexOf(t);\n return e + \"<\" + t + ' data-rh=\"true\" ' + i + (a ? \"/>\" : \">\" + o + \"</\" + t + \">\");\n }, \"\");\n }(e, r, n);\n }\n };\n }\n },\n k = function k(t) {\n var e = t.baseTag,\n r = t.bodyAttributes,\n n = t.encode,\n i = t.htmlAttributes,\n o = t.noscriptTags,\n a = t.styleTags,\n s = t.title,\n c = void 0 === s ? \"\" : s,\n u = t.titleAttributes,\n h = t.linkTags,\n m = t.metaTags,\n y = t.scriptTags,\n T = {\n toComponent: function toComponent() {},\n toString: function toString() {\n return \"\";\n }\n };\n if (t.prioritizeSeoTags) {\n var g = function (t) {\n var e = t.linkTags,\n r = t.scriptTags,\n n = t.encode,\n i = E(t.metaTags, d),\n o = E(e, p),\n a = E(r, f);\n return {\n priorityMethods: {\n toComponent: function toComponent() {\n return [].concat(j(l.META, i.priority), j(l.LINK, o.priority), j(l.SCRIPT, a.priority));\n },\n toString: function toString() {\n return M(l.META, i.priority, n) + \" \" + M(l.LINK, o.priority, n) + \" \" + M(l.SCRIPT, a.priority, n);\n }\n },\n metaTags: i.default,\n linkTags: o.default,\n scriptTags: a.default\n };\n }(t);\n T = g.priorityMethods, h = g.linkTags, m = g.metaTags, y = g.scriptTags;\n }\n return {\n priority: T,\n base: M(l.BASE, e, n),\n bodyAttributes: M(\"bodyAttributes\", r, n),\n htmlAttributes: M(\"htmlAttributes\", i, n),\n link: M(l.LINK, h, n),\n meta: M(l.META, m, n),\n noscript: M(l.NOSCRIPT, o, n),\n script: M(l.SCRIPT, y, n),\n style: M(l.STYLE, a, n),\n title: M(l.TITLE, {\n title: c,\n titleAttributes: u\n }, n)\n };\n },\n H = [],\n N = function N(t, e) {\n var r = this;\n void 0 === e && (e = \"undefined\" != typeof document), this.instances = [], this.value = {\n setHelmet: function setHelmet(t) {\n r.context.helmet = t;\n },\n helmetInstances: {\n get: function get() {\n return r.canUseDOM ? H : r.instances;\n },\n add: function add(t) {\n (r.canUseDOM ? H : r.instances).push(t);\n },\n remove: function remove(t) {\n var e = (r.canUseDOM ? H : r.instances).indexOf(t);\n (r.canUseDOM ? H : r.instances).splice(e, 1);\n }\n }\n }, this.context = t, this.canUseDOM = e, e || (t.helmet = k({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: !0,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n }));\n },\n R = t.createContext({}),\n D = r.shape({\n setHelmet: r.func,\n helmetInstances: r.shape({\n get: r.func,\n add: r.func,\n remove: r.func\n })\n }),\n U = \"undefined\" != typeof document,\n q = /*#__PURE__*/function (e) {\n function r(t) {\n var n;\n return (n = e.call(this, t) || this).helmetData = new N(n.props.context, r.canUseDOM), n;\n }\n return s(r, e), r.prototype.render = function () {\n /*#__PURE__*/return t.createElement(R.Provider, {\n value: this.helmetData.value\n }, this.props.children);\n }, r;\n }(e);\nq.canUseDOM = U, q.propTypes = {\n context: r.shape({\n helmet: r.shape()\n }),\n children: r.node.isRequired\n}, q.defaultProps = {\n context: {}\n}, q.displayName = \"HelmetProvider\";\nvar Y = function Y(t, e) {\n var r,\n n = document.head || document.querySelector(l.HEAD),\n i = n.querySelectorAll(t + \"[data-rh]\"),\n o = [].slice.call(i),\n a = [];\n return e && e.length && e.forEach(function (e) {\n var n = document.createElement(t);\n for (var i in e) {\n Object.prototype.hasOwnProperty.call(e, i) && (\"innerHTML\" === i ? n.innerHTML = e.innerHTML : \"cssText\" === i ? n.styleSheet ? n.styleSheet.cssText = e.cssText : n.appendChild(document.createTextNode(e.cssText)) : n.setAttribute(i, void 0 === e[i] ? \"\" : e[i]));\n }\n n.setAttribute(\"data-rh\", \"true\"), o.some(function (t, e) {\n return r = e, n.isEqualNode(t);\n }) ? o.splice(r, 1) : a.push(n);\n }), o.forEach(function (t) {\n return t.parentNode.removeChild(t);\n }), a.forEach(function (t) {\n return n.appendChild(t);\n }), {\n oldTags: o,\n newTags: a\n };\n },\n B = function B(t, e) {\n var r = document.getElementsByTagName(t)[0];\n if (r) {\n for (var n = r.getAttribute(\"data-rh\"), i = n ? n.split(\",\") : [], o = [].concat(i), a = Object.keys(e), s = 0; s < a.length; s += 1) {\n var c = a[s],\n u = e[c] || \"\";\n r.getAttribute(c) !== u && r.setAttribute(c, u), -1 === i.indexOf(c) && i.push(c);\n var l = o.indexOf(c);\n -1 !== l && o.splice(l, 1);\n }\n for (var p = o.length - 1; p >= 0; p -= 1) {\n r.removeAttribute(o[p]);\n }\n i.length === o.length ? r.removeAttribute(\"data-rh\") : r.getAttribute(\"data-rh\") !== a.join(\",\") && r.setAttribute(\"data-rh\", a.join(\",\"));\n }\n },\n K = function K(t, e) {\n var r = t.baseTag,\n n = t.htmlAttributes,\n i = t.linkTags,\n o = t.metaTags,\n a = t.noscriptTags,\n s = t.onChangeClientState,\n c = t.scriptTags,\n u = t.styleTags,\n p = t.title,\n f = t.titleAttributes;\n B(l.BODY, t.bodyAttributes), B(l.HTML, n), function (t, e) {\n void 0 !== t && document.title !== t && (document.title = S(t)), B(l.TITLE, e);\n }(p, f);\n var d = {\n baseTag: Y(l.BASE, r),\n linkTags: Y(l.LINK, i),\n metaTags: Y(l.META, o),\n noscriptTags: Y(l.NOSCRIPT, a),\n scriptTags: Y(l.SCRIPT, c),\n styleTags: Y(l.STYLE, u)\n },\n h = {},\n m = {};\n Object.keys(d).forEach(function (t) {\n var e = d[t],\n r = e.newTags,\n n = e.oldTags;\n r.length && (h[t] = r), n.length && (m[t] = d[t].oldTags);\n }), e && e(), s(t, h, m);\n },\n _ = null,\n z = /*#__PURE__*/function (t) {\n function e() {\n for (var e, r = arguments.length, n = new Array(r), i = 0; i < r; i++) {\n n[i] = arguments[i];\n }\n return (e = t.call.apply(t, [this].concat(n)) || this).rendered = !1, e;\n }\n s(e, t);\n var r = e.prototype;\n return r.shouldComponentUpdate = function (t) {\n return !o(t, this.props);\n }, r.componentDidUpdate = function () {\n this.emitChange();\n }, r.componentWillUnmount = function () {\n this.props.context.helmetInstances.remove(this), this.emitChange();\n }, r.emitChange = function () {\n var t,\n e,\n r = this.props.context,\n n = r.setHelmet,\n i = null,\n o = (t = r.helmetInstances.get().map(function (t) {\n var e = a({}, t.props);\n return delete e.context, e;\n }), {\n baseTag: A([\"href\"], t),\n bodyAttributes: v(\"bodyAttributes\", t),\n defer: T(t, \"defer\"),\n encode: T(t, \"encodeSpecialCharacters\"),\n htmlAttributes: v(\"htmlAttributes\", t),\n linkTags: C(l.LINK, [\"rel\", \"href\"], t),\n metaTags: C(l.META, [\"name\", \"charset\", \"http-equiv\", \"property\", \"itemprop\"], t),\n noscriptTags: C(l.NOSCRIPT, [\"innerHTML\"], t),\n onChangeClientState: b(t),\n scriptTags: C(l.SCRIPT, [\"src\", \"innerHTML\"], t),\n styleTags: C(l.STYLE, [\"cssText\"], t),\n title: g(t),\n titleAttributes: v(\"titleAttributes\", t),\n prioritizeSeoTags: O(t, \"prioritizeSeoTags\")\n });\n q.canUseDOM ? (e = o, _ && cancelAnimationFrame(_), e.defer ? _ = requestAnimationFrame(function () {\n K(e, function () {\n _ = null;\n });\n }) : (K(e), _ = null)) : k && (i = k(o)), n(i);\n }, r.init = function () {\n this.rendered || (this.rendered = !0, this.props.context.helmetInstances.add(this), this.emitChange());\n }, r.render = function () {\n return this.init(), null;\n }, e;\n }(e);\nz.propTypes = {\n context: D.isRequired\n}, z.displayName = \"HelmetDispatcher\";\nvar F = [\"children\"],\n G = [\"children\"],\n W = /*#__PURE__*/function (e) {\n function r() {\n return e.apply(this, arguments) || this;\n }\n s(r, e);\n var o = r.prototype;\n return o.shouldComponentUpdate = function (t) {\n return !n(I(this.props, \"helmetData\"), I(t, \"helmetData\"));\n }, o.mapNestedChildrenToProps = function (t, e) {\n if (!e) return null;\n switch (t.type) {\n case l.SCRIPT:\n case l.NOSCRIPT:\n return {\n innerHTML: e\n };\n case l.STYLE:\n return {\n cssText: e\n };\n default:\n throw new Error(\"<\" + t.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n }\n }, o.flattenArrayTypeChildren = function (t) {\n var e,\n r = t.child,\n n = t.arrayTypeChildren;\n return a({}, n, ((e = {})[r.type] = [].concat(n[r.type] || [], [a({}, t.newChildProps, this.mapNestedChildrenToProps(r, t.nestedChildren))]), e));\n }, o.mapObjectTypeChildren = function (t) {\n var e,\n r,\n n = t.child,\n i = t.newProps,\n o = t.newChildProps,\n s = t.nestedChildren;\n switch (n.type) {\n case l.TITLE:\n return a({}, i, ((e = {})[n.type] = s, e.titleAttributes = a({}, o), e));\n case l.BODY:\n return a({}, i, {\n bodyAttributes: a({}, o)\n });\n case l.HTML:\n return a({}, i, {\n htmlAttributes: a({}, o)\n });\n default:\n return a({}, i, ((r = {})[n.type] = a({}, o), r));\n }\n }, o.mapArrayTypeChildrenToProps = function (t, e) {\n var r = a({}, e);\n return Object.keys(t).forEach(function (e) {\n var n;\n r = a({}, r, ((n = {})[e] = t[e], n));\n }), r;\n }, o.warnOnInvalidChildren = function (t, e) {\n return i(h.some(function (e) {\n return t.type === e;\n }), \"function\" == typeof t.type ? \"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\" : \"Only elements types \" + h.join(\", \") + \" are allowed. Helmet does not support rendering <\" + t.type + \"> elements. Refer to our API for more information.\"), i(!e || \"string\" == typeof e || Array.isArray(e) && !e.some(function (t) {\n return \"string\" != typeof t;\n }), \"Helmet expects a string as a child of <\" + t.type + \">. Did you forget to wrap your children in braces? ( <\" + t.type + \">{``}</\" + t.type + \"> ) Refer to our API for more information.\"), !0;\n }, o.mapChildrenToProps = function (e, r) {\n var n = this,\n i = {};\n return t.Children.forEach(e, function (t) {\n if (t && t.props) {\n var e = t.props,\n o = e.children,\n a = u(e, F),\n s = Object.keys(a).reduce(function (t, e) {\n return t[y[e] || e] = a[e], t;\n }, {}),\n c = t.type;\n switch (\"symbol\" == typeof c ? c = c.toString() : n.warnOnInvalidChildren(t, o), c) {\n case l.FRAGMENT:\n r = n.mapChildrenToProps(o, r);\n break;\n case l.LINK:\n case l.META:\n case l.NOSCRIPT:\n case l.SCRIPT:\n case l.STYLE:\n i = n.flattenArrayTypeChildren({\n child: t,\n arrayTypeChildren: i,\n newChildProps: s,\n nestedChildren: o\n });\n break;\n default:\n r = n.mapObjectTypeChildren({\n child: t,\n newProps: r,\n newChildProps: s,\n nestedChildren: o\n });\n }\n }\n }), this.mapArrayTypeChildrenToProps(i, r);\n }, o.render = function () {\n var e = this.props,\n r = e.children,\n n = u(e, G),\n i = a({}, n),\n o = n.helmetData;\n return r && (i = this.mapChildrenToProps(r, i)), !o || o instanceof N || (o = new N(o.context, o.instances)), o ? /*#__PURE__*/t.createElement(z, a({}, i, {\n context: o.value,\n helmetData: void 0\n })) : /*#__PURE__*/t.createElement(R.Consumer, null, function (e) {\n /*#__PURE__*/return t.createElement(z, a({}, i, {\n context: e\n }));\n });\n }, r;\n }(e);\nW.propTypes = {\n base: r.object,\n bodyAttributes: r.object,\n children: r.oneOfType([r.arrayOf(r.node), r.node]),\n defaultTitle: r.string,\n defer: r.bool,\n encodeSpecialCharacters: r.bool,\n htmlAttributes: r.object,\n link: r.arrayOf(r.object),\n meta: r.arrayOf(r.object),\n noscript: r.arrayOf(r.object),\n onChangeClientState: r.func,\n script: r.arrayOf(r.object),\n style: r.arrayOf(r.object),\n title: r.string,\n titleAttributes: r.object,\n titleTemplate: r.string,\n prioritizeSeoTags: r.bool,\n helmetData: r.object\n}, W.defaultProps = {\n defer: !0,\n encodeSpecialCharacters: !0,\n prioritizeSeoTags: !1\n}, W.displayName = \"Helmet\";\nexport { W as Helmet, N as HelmetData, q as HelmetProvider };","//\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\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _utils = require(\"@reach/router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + ((base === null || base === void 0 ? void 0 : base.endsWith(\"/\")) ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n showDeprecationWarning(\"push\", \"navigate\", 3);\n\n window.___push(rewriteLinkPath(to, window.location.pathname));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n window.___replace(rewriteLinkPath(to, window.location.pathname));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContainer = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _scrollContainer = require(\"./scroll-container\");\n\nexports.ScrollContainer = _scrollContainer.ScrollContainer;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollContainer = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _router = require(\"@reach/router\");\n\n// TODO: In Gatsby v3, this file should be removed.\n// We are deprecating this in V2 in favor of useScrollRestoration\nvar propTypes = {\n scrollKey: _propTypes.default.string.isRequired,\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired\n};\nvar hasNotWarnedDeprecation = true;\n\nvar ScrollContainerImplementation = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollContainerImplementation, _React$Component);\n\n function ScrollContainerImplementation(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n if (process.env.NODE_ENV !== \"production\" && hasNotWarnedDeprecation) {\n hasNotWarnedDeprecation = false;\n console.log(\"Deprecation Warning:\\n\\n Gatsby <ScrollContainer> is deprecated in Gatsby v2 and will be removed in Gatsby v3.\\n Update to the React hook alternative useScrollRestoration, like this:.\\n \\n ```\\n import React from 'react';\\n import { useScrollRestoration } from 'gatsby-react-router-scroll';\\n\\n function Component() {\\n const scrollRestoration = useScrollRestoration('\" + _this.props.scrollKey + \"');\\n\\n return <ul {...scrollRestoration} />;\\n }\\n ```\\n \");\n }\n\n return _this;\n }\n\n var _proto = ScrollContainerImplementation.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n // eslint-disable-next-line react/no-find-dom-node\n var node = _reactDom.default.findDOMNode(this);\n\n var _this$props = this.props,\n location = _this$props.location,\n scrollKey = _this$props.scrollKey;\n if (!node) return;\n node.addEventListener(\"scroll\", function () {\n _this2.props.context.save(location, scrollKey, node.scrollTop);\n });\n var position = this.props.context.read(location, scrollKey);\n node.scrollTo(0, position || 0);\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return ScrollContainerImplementation;\n}(React.Component);\n\nvar ScrollContainer = function ScrollContainer(props) {\n return /*#__PURE__*/React.createElement(_router.Location, null, function (_ref) {\n var location = _ref.location;\n return /*#__PURE__*/React.createElement(_scrollHandler.ScrollContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(ScrollContainerImplementation, (0, _extends2.default)({}, props, {\n context: context,\n location: location\n }));\n });\n });\n};\n\nexports.ScrollContainer = ScrollContainer;\nScrollContainer.propTypes = propTypes;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n\n _this.scrollListener = function () {\n var key = _this.props.location.key;\n\n if (key) {\n _this._stateStorage.save(_this.props.location, key, window.scrollY);\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _router = require(\"@reach/router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _router.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)();\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, []);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320,\n 654,\n 768,\n 1024,\n 1366,\n 1600,\n 1920,\n 2048,\n 2560,\n 3440,\n 3840,\n 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array<ImageFormat>\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record<string, unknown>\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n }\n jpgOptions?: Record<string, unknown>\n pngOptions?: Record<string, unknown>\n webpOptions?: Record<string, unknown>\n avifOptions?: Record<string, unknown>\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array<number>\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array<number>\n breakpoints?: Array<number>\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array<number>\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record<string, unknown>\n ) => IImage\n layout?: Layout\n formats?: Array<ImageFormat>\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record<string, unknown>\n breakpoints?: Array<number>\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array<IImage>): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.substr(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set<ImageFormat>(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial<IGatsbyImageData> = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array<number>): Array<number> =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(stripIndent`\n The requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n useState,\n CSSProperties,\n useEffect,\n HTMLAttributes,\n ImgHTMLAttributes,\n ReactEventHandler,\n SetStateAction,\n Dispatch,\n RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n IGatsbyImageHelperArgs,\n generateImageData,\n Layout,\n EVERY_BREAKPOINT,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set<string>()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function storeImageloaded(cacheKey?: string): void {\n if (cacheKey) {\n imageCache.add(cacheKey)\n }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent<T = never> = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent<Node>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = <T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent<T> | any\n): node is IGatsbyImageDataParent<T> => Boolean(node?.gatsbyImageData)\n\ntype ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick<HTMLAttributes<HTMLElement>, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!global.GATSBY___IMAGE) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!global.GATSBY___IMAGE) {\n wrapperStyle.display = `inline-block`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport async function applyPolyfill(\n ref: RefObject<HTMLImageElement>\n): Promise<void> {\n if (!(`objectFitPolyfill` in window)) {\n await import(\n /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n )\n }\n ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs<OptionsType> {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs<OptionsType = Record<string, unknown>> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs<OptionsType>) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array<ImageFormat>\n\n breakpoints?: Array<number>\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData<OptionsType>({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs<OptionsType>): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n toggleLoaded?: (loaded: boolean) => void,\n cacheKey?: string,\n ref?: RefObject<HTMLImageElement>,\n style: CSSProperties = {}\n): Partial<MainImageProps> {\n const onLoad: ReactEventHandler<HTMLImageElement> = function (e) {\n if (isLoaded) {\n return\n }\n\n storeImageloaded(cacheKey)\n\n const target = e.currentTarget\n const img = new Image()\n img.src = target.currentSrc\n\n if (img.decode) {\n // Decode the image through javascript to support our transition\n img\n .decode()\n .catch(() => {\n // ignore error, we just go forward\n })\n .then(() => {\n toggleLoaded(true)\n })\n } else {\n toggleLoaded(true)\n }\n }\n\n // Polyfill \"object-fit\" if unsupported (mostly IE)\n if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n ref.current.dataset.objectFit = style.objectFit ?? `cover`\n ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n applyPolyfill(ref)\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!global.GATSBY___IMAGE) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n onLoad,\n ref,\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes<HTMLImageElement> &\n Pick<PlaceholderProps, \"sources\" | \"fallback\"> & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!global.GATSBY___IMAGE) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport function useImageLoaded(\n cacheKey: string,\n loading: \"lazy\" | \"eager\",\n ref: any\n): {\n isLoaded: boolean\n isLoading: boolean\n toggleLoaded: Dispatch<SetStateAction<boolean>>\n} {\n const [isLoaded, toggleLoaded] = useState(false)\n const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n const rAF =\n typeof window !== `undefined` && `requestAnimationFrame` in window\n ? requestAnimationFrame\n : function (cb: TimerHandler): number {\n return setTimeout(cb, 16)\n }\n const cRAF =\n typeof window !== `undefined` && `cancelAnimationFrame` in window\n ? cancelAnimationFrame\n : clearTimeout\n\n useEffect(() => {\n let interval: number\n // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n function toggleIfRefExists(): void {\n if (ref.current) {\n if (loading === `eager` && ref.current.complete) {\n storeImageloaded(cacheKey)\n toggleLoaded(true)\n } else {\n toggleIsLoading(true)\n }\n } else {\n interval = rAF(toggleIfRefExists)\n }\n }\n toggleIfRefExists()\n\n return (): void => {\n cRAF(interval)\n }\n }, [])\n\n return {\n isLoading,\n isLoaded,\n toggleLoaded,\n }\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array<IArtDirectedImage>\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../global.d.ts\" />\n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n <script\n type=\"module\"\n dangerouslySetInnerHTML={{\n __html: terserMacro`\nconst hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nif (hasNativeLazyLoadSupport) {\n const gatsbyImages = document.querySelectorAll('img[data-main-image]');\n for (let mainImage of gatsbyImages) {\n if (mainImage.dataset.src) {\n mainImage.setAttribute('src', mainImage.dataset.src)\n mainImage.removeAttribute('data-src')\n }\n if (mainImage.dataset.srcset) {\n mainImage.setAttribute('srcset', mainImage.dataset.srcset)\n mainImage.removeAttribute('data-srcset')\n }\n\n const sources = mainImage.parentNode.querySelectorAll('source[data-srcset]');\n for (let source of sources) {\n source.setAttribute('srcset', source.dataset.srcset)\n source.removeAttribute('data-srcset')\n }\n\n if (mainImage.complete) {\n mainImage.style.opacity = 1;\n }\n }\n}\n`,\n }}\n />\n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer: string | null = null\n if (layout === `fullWidth`) {\n sizer = `<div aria-hidden=\"true\" style=\"padding-top: ${\n (height / width) * 100\n }%;\"></div>`\n }\n if (layout === `constrained`) {\n sizer = `<div style=\"max-width: ${width}px; display: block;\"><img alt=\"\" role=\"presentation\" aria-hidden=\"true\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E\" style=\"max-width: 100%; display: block; position: static;\"></div>`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent<ILayoutWrapperProps> = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n <div aria-hidden style={{ paddingTop: `${(height / width) * 100}%` }} />\n )\n }\n if (layout === `constrained`) {\n return (\n <div style={{ maxWidth: width, display: `block` }}>\n <img\n alt=\"\"\n role=\"presentation\"\n aria-hidden=\"true\"\n src={`data:image/svg+xml;charset=utf-8,%3Csvg height='${height}' width='${width}' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E`}\n style={{\n maxWidth: `100%`,\n display: `block`,\n position: `static`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<ILayoutWrapperProps> = function LayoutWrapper({\n children,\n ...props\n}) {\n return (\n <Fragment>\n <Sizer {...props} />\n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && <NativeScriptLoading />\n }\n </Fragment>\n )\n}\n","/* eslint-disable filenames/match-regex */\nimport React, {\n FunctionComponent,\n ImgHTMLAttributes,\n forwardRef,\n LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial<IResponsiveImageProps>\n\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef<HTMLImageElement>\n}\n\nexport type PictureProps = ImgHTMLAttributes<HTMLImageElement> & {\n fallback?: FallbackProps\n sources?: Array<SourceProps>\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent<ImageProps> = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n <img\n {...props}\n decoding=\"async\"\n loading={loading}\n src={shouldLoad ? src : undefined}\n data-src={!shouldLoad ? src : undefined}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n alt={alt}\n ref={innerRef}\n />\n )\n}\n\nexport const Picture = forwardRef<HTMLImageElement, PictureProps>(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n <Image\n {...props}\n {...fallback}\n sizes={sizes}\n shouldLoad={shouldLoad}\n innerRef={ref}\n />\n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n <picture>\n {sources.map(({ media, srcSet, type }) => (\n <source\n key={`${media}-${type}-${srcSet}`}\n type={type}\n media={media}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n sizes={sizes}\n />\n ))}\n {fallbackImage}\n </picture>\n )\n }\n)\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes<HTMLImageElement> & {\n fallback?: string\n sources?: Array<SourceProps>\n}\n\nexport const Placeholder: FunctionComponent<PlaceholderProps> = function Placeholder({\n fallback,\n ...props\n}) {\n if (fallback) {\n return (\n <Picture\n {...props}\n fallback={{\n src: fallback,\n }}\n aria-hidden\n alt=\"\"\n />\n )\n } else {\n return <div {...props}></div>\n }\n}\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef<HTMLImageElement, MainImageProps>(\n function MainImage(props, ref) {\n return (\n <>\n <Picture ref={ref} {...props} />\n <noscript>\n <Picture {...props} shouldLoad={true} />\n </noscript>\n </>\n )\n }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n ElementType,\n FunctionComponent,\n CSSProperties,\n WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n as?: ElementType\n style?: CSSProperties\n className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n return <Type {...props}>{children}</Type>\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> = function GatsbyImage({\n as,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n}) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n if (preactClass) {\n className = preactClass\n }\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const { style: wStyle, className: wClass, ...wrapperProps } = getWrapperProps(\n width,\n height,\n layout\n )\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return (\n <GatsbyImageHydrator\n {...wrapperProps}\n as={as}\n style={{\n ...wStyle,\n ...style,\n backgroundColor,\n }}\n className={`${wClass}${className ? ` ${className}` : ``}`}\n >\n <LayoutWrapper layout={layout} width={width} height={height}>\n <Placeholder\n {...getPlaceholderProps(\n placeholder,\n false,\n layout,\n width,\n height,\n placeholderBackgroundColor\n )}\n />\n\n <MainImage\n data-gatsby-image-ssr=\"\"\n className={imgClassName}\n {...(props as Omit<MainImageProps, \"images\" | \"fallback\">)}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n undefined,\n undefined,\n undefined,\n imgStyle\n )}\n />\n </LayoutWrapper>\n </GatsbyImageHydrator>\n )\n}\n\nexport const altValidator: PropTypes.Validator<string> = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap<GatsbyImageProps>\n","/* eslint-disable no-unused-expressions */\nimport React, {\n Component,\n ElementType,\n createRef,\n MutableRefObject,\n FunctionComponent,\n ImgHTMLAttributes,\n RefObject,\n CSSProperties,\n} from \"react\"\nimport {\n getWrapperProps,\n hasNativeLazyLoadSupport,\n storeImageloaded,\n hasImageLoaded,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: () => void\n onError?: () => void\n onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick<MainImageProps, \"sources\" | \"fallback\">\n placeholder?: Pick<PlaceholderProps, \"sources\" | \"fallback\">\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject<HTMLImageElement | undefined> = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject<boolean> = { current: false }\n forceRender: MutableRefObject<boolean> = {\n // In dev we use render not hydrate, to avoid hydration warnings\n current: process.env.NODE_ENV === `development`,\n }\n lazyHydrator: () => void | null = null\n ref = createRef<HTMLImageElement>()\n unobserveRef: Unobserver\n\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: hasNativeLazyLoadSupport(),\n isLoaded: false,\n }\n }\n\n _lazyHydrate(props, state): Promise<void> {\n const hasSSRHtml = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n )\n // On first server hydration do nothing\n if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n this.hydrated.current = true\n return Promise.resolve()\n }\n\n return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n this.lazyHydrator = lazyHydrate(\n {\n image: props.image.images,\n isLoading: state.isLoading,\n isLoaded: state.isLoaded,\n toggleIsLoaded: () => {\n props.onLoad?.()\n\n this.setState({\n isLoaded: true,\n })\n },\n ref: this.ref,\n ...props,\n },\n this.root,\n this.hydrated,\n this.forceRender\n )\n })\n }\n\n /**\n * Choose if setupIntersectionObserver should use the image cache or not.\n */\n _setupIntersectionObserver(useCache = true): void {\n import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n const intersectionObserver = createIntersectionObserver(() => {\n if (this.root.current) {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.props.onStartLoad?.({\n wasCached: useCache && hasImageLoaded(cacheKey),\n })\n this.setState({\n isLoading: true,\n isLoaded: useCache && hasImageLoaded(cacheKey),\n })\n }\n })\n\n if (this.root.current) {\n this.unobserveRef = intersectionObserver(this.root)\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState): boolean {\n let hasChanged = false\n if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n this.forceRender.current = true\n }\n // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n if (this.props.image.images !== nextProps.image.images) {\n // reset state, we'll rely on intersection observer to reload\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n render(null, this.root.current)\n }\n }\n\n this.setState(\n {\n isLoading: false,\n isLoaded: false,\n },\n () => {\n this._setupIntersectionObserver(false)\n }\n )\n\n hasChanged = true\n }\n\n if (this.root.current && !hasChanged) {\n this._lazyHydrate(nextProps, nextState)\n }\n\n return false\n }\n\n componentDidMount(): void {\n if (this.root.current) {\n const ssrElement = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n const cacheKey = JSON.stringify(this.props.image.images)\n\n // when SSR and native lazyload is supported we'll do nothing ;)\n if (hasNativeLazyLoadSupport() && ssrElement && global.GATSBY___IMAGE) {\n this.props.onStartLoad?.({ wasCached: false })\n\n // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n if (ssrElement.complete) {\n this.props.onLoad?.()\n storeImageloaded(cacheKey)\n } else {\n // We need the current class context (this) inside our named onLoad function\n // The named function is necessary to easily remove the listener afterward.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this\n // add an onLoad to the image\n ssrElement.addEventListener(`load`, function onLoad() {\n ssrElement.removeEventListener(`load`, onLoad)\n\n _this.props.onLoad?.()\n storeImageloaded(cacheKey)\n })\n }\n\n return\n }\n\n // Fallback to custom lazy loading (intersection observer)\n this._setupIntersectionObserver(true)\n }\n }\n\n componentWillUnmount(): void {\n // Cleanup when onmount happens\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n this.lazyHydrator()\n }\n }\n\n return\n }\n\n render(): JSX.Element {\n const Type = this.props.as || `div`\n const { width, height, layout } = this.props.image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n let className = this.props.className\n // preact class\n if (this.props.class) {\n className = this.props.class\n }\n\n const sizer = getSizer(layout, width, height)\n\n return (\n <Type\n {...wrapperProps}\n style={{\n ...wStyle,\n ...this.props.style,\n backgroundColor: this.props.backgroundColor,\n }}\n className={`${wClass}${className ? ` ${className}` : ``}`}\n ref={this.root}\n dangerouslySetInnerHTML={{\n __html: sizer,\n }}\n suppressHydrationWarning\n />\n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> = function GatsbyImage(\n props\n) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n return null\n }\n\n if (!global.GATSBY___IMAGE) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n const { className, class: classSafe, backgroundColor, image } = props\n const { width, height, layout } = image\n const propsKey = JSON.stringify([\n width,\n height,\n layout,\n className,\n classSafe,\n backgroundColor,\n ])\n return <GatsbyImageHydrator key={propsKey} {...props} />\n}\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit<GatsbyImageProps, \"image\">,\n Omit<ISharpGatsbyImageArgs, \"backgroundColor\"> {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent<GatsbyImageProps>\n): React.FC<IStaticImageProps & IPrivateProps> {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return <GatsbyImage image={imageData} {...props} />\n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC<\n IStaticImageProps & IPrivateProps\n> = _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator<number> = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC<\n IStaticImageProps & IPrivateProps\n> = _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n children,\n}: React.PropsWithChildren<Record<string, unknown>>): React.ReactNode {\n React.useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n import(`./lazy-hydrate`)\n }, [])\n\n return children\n}\n","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n return <LaterHydrator>{element}</LaterHydrator>\n}","\"use strict\";\n\nconst enhanceLunr = (lunr, lngs) => {\n if (lngs.length) {\n require('lunr-languages/lunr.stemmer.support')(lunr);\n\n lngs.forEach(({\n name\n }) => {\n if (name !== 'en') {\n try {\n if (name === 'jp' || name === 'ja') {\n require(`lunr-languages/tinyseg`)(lunr);\n }\n\n require(`lunr-languages/lunr.${name}`)(lunr);\n } catch (e) {\n console.log(e);\n }\n }\n });\n }\n};\n\nmodule.exports = {\n enhanceLunr\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\n/* global __PATH_PREFIX__ */\nconst lunr = require(\"lunr\");\n\nconst {\n enhanceLunr\n} = require(\"./common.js\");\n\nexports.onClientEntry = (args, {\n languages,\n filename = \"search_index.json\",\n fetchOptions = {}\n}) => {\n enhanceLunr(lunr, languages);\n window.__LUNR__ = window.__LUNR__ || {};\n window.__LUNR__.__loaded = fetch(`${__PATH_PREFIX__}/${filename}`, fetchOptions).then(function (response) {\n return response.json();\n }).then(function (fullIndex) {\n window.__LUNR__ = Object.keys(fullIndex).reduce((prev, key) => (0, _objectSpread2.default)({}, prev, {\n [key]: {\n index: lunr.Index.load(fullIndex[key].index),\n store: fullIndex[key].store\n }\n }), {\n __loaded: window.__LUNR__.__loaded\n });\n return window.__LUNR__;\n }).catch(e => {\n console.log(\"Failed fetch search index\");\n throw e;\n });\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nexports.onClientEntry = function () {\n if (process.env.NODE_ENV !== \"production\") {\n require(\"preact/debug\");\n }\n};","import * as React from 'react';\nexport default {\n React\n};","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","var scope_0 = require('/home/runner/work/utbot-site-staging/utbot-site-staging/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js').default;export default\n Object.assign({}, scope_0 )\n ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n function GatsbyMDXComponentFinder(props) {\n const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n return <Component {...props} />\n }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n Object.entries(components).forEach(([componentName, Component]) => {\n if (componentsAndGuards[componentName]) {\n componentsAndGuards.push({ guard: guards[componentName], Component })\n } else {\n componentsAndGuards[componentName] = [\n { guard: guards[componentName], Component },\n ]\n }\n })\n})\n\nconst components = Object.entries(componentsAndGuards)\n .map(([name, arr]) => {\n return {\n [name]: componentFromGuards(\n arr.concat({ guard: undefined, Component: name })\n ),\n }\n })\n .reduce((acc, obj) => {\n return { ...acc, ...obj }\n }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n ({ components: componentsFromContext, children }) => (\n <MDXScopeProvider __mdxScope={scopeContexts}>\n <MDXProvider components={{ ...componentsFromContext, ...components }}>\n {children}\n </MDXProvider>\n </MDXScopeProvider>\n )\n)\n\nconst WrapRootElement = ({ element }) => <MDXConsumer>{element}</MDXConsumer>\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","module.exports = {plugins: []}","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---src-docs-cpp-clion-plugin-md\": () => import(\"./../../../src/docs/cpp/clion-plugin.md\" /* webpackChunkName: \"component---src-docs-cpp-clion-plugin-md\" */),\n \"component---src-docs-cpp-command-line-interface-md\": () => import(\"./../../../src/docs/cpp/command-line-interface.md\" /* webpackChunkName: \"component---src-docs-cpp-command-line-interface-md\" */),\n \"component---src-docs-cpp-home-md\": () => import(\"./../../../src/docs/cpp/Home.md\" /* webpackChunkName: \"component---src-docs-cpp-home-md\" */),\n \"component---src-docs-cpp-stubs-md\": () => import(\"./../../../src/docs/cpp/stubs.md\" /* webpackChunkName: \"component---src-docs-cpp-stubs-md\" */),\n \"component---src-docs-cpp-vscode-plugin-md\": () => import(\"./../../../src/docs/cpp/vscode-plugin.md\" /* webpackChunkName: \"component---src-docs-cpp-vscode-plugin-md\" */),\n \"component---src-docs-java-check-system-requirements-md\": () => import(\"./../../../src/docs/java/Check-system-requirements.md\" /* webpackChunkName: \"component---src-docs-java-check-system-requirements-md\" */),\n \"component---src-docs-java-fine-tune-test-generation-md\": () => import(\"./../../../src/docs/java/Fine-tune-test-generation.md\" /* webpackChunkName: \"component---src-docs-java-fine-tune-test-generation-md\" */),\n \"component---src-docs-java-generate-tests-with-default-configuration-md\": () => import(\"./../../../src/docs/java/Generate-tests-with-default-configuration.md\" /* webpackChunkName: \"component---src-docs-java-generate-tests-with-default-configuration-md\" */),\n \"component---src-docs-java-get-use-of-test-results-md\": () => import(\"./../../../src/docs/java/Get-use-of-test-results.md\" /* webpackChunkName: \"component---src-docs-java-get-use-of-test-results-md\" */),\n \"component---src-docs-java-install-or-update-plugin-md\": () => import(\"./../../../src/docs/java/Install-or-update-plugin.md\" /* webpackChunkName: \"component---src-docs-java-install-or-update-plugin-md\" */),\n \"component---src-pages-404-jsx\": () => import(\"./../../../src/pages/404.jsx\" /* webpackChunkName: \"component---src-pages-404-jsx\" */),\n \"component---src-pages-about-jsx\": () => import(\"./../../../src/pages/about.jsx\" /* webpackChunkName: \"component---src-pages-about-jsx\" */),\n \"component---src-pages-cpp-jsx\": () => import(\"./../../../src/pages/cpp.jsx\" /* webpackChunkName: \"component---src-pages-cpp-jsx\" */),\n \"component---src-pages-go-jsx\": () => import(\"./../../../src/pages/go.jsx\" /* webpackChunkName: \"component---src-pages-go-jsx\" */),\n \"component---src-pages-index-jsx\": () => import(\"./../../../src/pages/index.jsx\" /* webpackChunkName: \"component---src-pages-index-jsx\" */),\n \"component---src-pages-js-jsx\": () => import(\"./../../../src/pages/js.jsx\" /* webpackChunkName: \"component---src-pages-js-jsx\" */),\n \"component---src-pages-python-jsx\": () => import(\"./../../../src/pages/python.jsx\" /* webpackChunkName: \"component---src-pages-python-jsx\" */),\n \"component---src-pages-research-jsx\": () => import(\"./../../../src/pages/research.jsx\" /* webpackChunkName: \"component---src-pages-research-jsx\" */),\n \"component---src-pages-search-jsx\": () => import(\"./../../../src/pages/search.jsx\" /* webpackChunkName: \"component---src-pages-search-jsx\" */),\n \"component---src-pages-utbot-jsx\": () => import(\"./../../../src/pages/utbot.jsx\" /* webpackChunkName: \"component---src-pages-utbot-jsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-preact/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n options: {\"plugins\":[],\"extensions\":[\".md\",\".mdx\"],\"remarkPlugins\":[[null,{\"type\":\"yaml\",\"marker\":\"-\"}],null],\"rehypePlugins\":[null,null],\"gatsbyRemarkPlugins\":[],\"defaultLayouts\":{\"default\":\"/home/runner/work/utbot-site-staging/utbot-site-staging/node_modules/gatsby-theme-docz/src/base/Layout.js\"},\"lessBabel\":false,\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/home/runner/work/utbot-site-staging/utbot-site-staging\"},\n },{\n plugin: require('../node_modules/gatsby-theme-docz/node_modules/gatsby-plugin-react-helmet-async/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-theme-docz/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"gatsby-starter-default\",\"short_name\":\"starter\",\"start_url\":\"/\",\"background_color\":\"#663399\",\"theme_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"src/images/utbot-logo-without-text.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"b2478af9b6a9c9e4299e62cd3e3d2228\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-lunr/gatsby-browser.js'),\n options: {\"plugins\":[],\"languages\":[{\"name\":\"en\"}],\"fields\":[{\"name\":\"name\",\"store\":true,\"attributes\":{\"boost\":20}},{\"name\":\"description\",\"store\":true,\"attributes\":{\"boost\":10}},{\"name\":\"content\",\"store\":true,\"attributes\":{\"boost\":15}},{\"name\":\"route\",\"store\":true}],\"resolvers\":{\"MarkdownRemark\":{}}},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourceURLsForPathname,\n loadPage,\n loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\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}","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name ${chunkName}`\n )\n }\n\n return (\n asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nfunction maybeRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n\n if (redirect != null) {\n if (process.env.NODE_ENV !== `production`) {\n if (!loader.isPageNotFound(pathname)) {\n console.error(\n `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n )\n }\n }\n\n window.___replace(redirect.toPath)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n let { pathname } = parsePath(to)\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath\n pathname = parsePath(to).pathname\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n <React.Fragment>\n {this.props.children}\n <RouteAnnouncer location={location} />\n </React.Fragment>\n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\n })\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n <BaseContext.Provider\n value={{\n baseuri: `/`,\n basepath: `/`,\n }}\n >\n <PageRenderer {...props} />\n </BaseContext.Provider>\n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n <Location>\n {({ location }) => (\n <EnsureResources location={location}>\n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n <StaticQueryContext.Provider value={staticQueryResults}>\n <DataContext.Provider value={{ pageResources, location }}>\n {children}\n </DataContext.Provider>\n </StaticQueryContext.Provider>\n )\n }}\n </EnsureResources>\n )}\n </Location>\n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n <DataContext.Consumer>\n {({ pageResources, location }) => (\n <RouteUpdates location={location}>\n <ScrollContext\n location={location}\n shouldUpdateScroll={shouldUpdateScroll}\n >\n <Router\n basepath={__BASE_PATH__}\n location={location}\n id=\"gatsby-focus-wrapper\"\n >\n <RouteHandler\n path={\n pageResources.page.path === `/404.html`\n ? stripPrefix(location.pathname, __BASE_PATH__)\n : encodeURI(\n pageResources.page.matchPath ||\n pageResources.page.path\n )\n }\n {...this.props}\n location={location}\n pageResources={pageResources}\n {...pageResources.json}\n />\n </Router>\n </ScrollContext>\n </RouteUpdates>\n )}\n </DataContext.Consumer>\n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: <LocationHandler /> },\n <LocationHandler />,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = () => <GatsbyRoot>{SiteRoot}</GatsbyRoot>\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrate\n )[0]\n\n domReady(() => {\n renderer(\n <App />,\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : void 0,\n () => {\n apiRunner(`onInitialClientRender`)\n }\n )\n })\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","exports.polyfill = Component => Component\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapRootElement = void 0;\nvar react_1 = __importDefault(require(\"react\"));\nvar react_helmet_async_1 = require(\"react-helmet-async\");\nvar wrapRootElement = function (_a) {\n var element = _a.element;\n return (react_1.default.createElement(react_helmet_async_1.HelmetProvider, null, element));\n};\nexports.wrapRootElement = wrapRootElement;\n","var _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 getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _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};\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}\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\n });\n};\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n function LocationProvider() {\n var _temp, _this, _ret;\n _classCallCheck(this, LocationProvider);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: {\n unlisten: null\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n return {\n navigate: navigate,\n location: location\n };\n };\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\n };\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n var refs = this.state.refs,\n history = this.props.history;\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n return React.createElement(LocationContext.Provider, {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n }, children);\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n });\n });\n};\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n var match = pick(routes, pathname);\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `<Router basepath=\"${basepath}\">\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () => <div>Not Found!</div>\n // \\n\\t<Router>\\n\\t <NotFound default/>\\n\\t {/* ... */}\\n\\t</Router>`\n // );\n return null;\n }\n };\n return RouterImpl;\n}(React.PureComponent);\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n _classCallCheck(this, FocusHandlerImpl);\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n var requestFocus = this.props.requestFocus;\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n return React.createElement(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\n };\n return FocusHandlerImpl;\n}(React.Component);\npolyfill(FocusHandlerImpl);\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), {\n replace: replace,\n state: state\n });\n });\n };\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n return RedirectImpl;\n}(React.Component);\nvar Redirect = function Redirect(props) {\n return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n });\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.location;\n};\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.navigate;\n};\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \"\\\" to=\\\"\" + element.props.to + \"\\\"/> requires both \\\"from\\\" and \\\"to\\\" props when inside a <Router>.\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Redirect from=\\\"\" + element.props.from + \" to=\\\"\" + element.props.to + \"\\\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\n }\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var map = {};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 98890;","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}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && 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(nodeInterop);\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 (key !== \"default\" && 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}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, 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}\nmodule.exports = _objectSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}","export default function _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}","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 _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 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}"],"names":["module","exports","ie10","navigator","appVersion","indexOf","listener","fns","doc","document","hack","documentElement","doScroll","domContentLoaded","loaded","test","readyState","addEventListener","removeEventListener","shift","fn","setTimeout","push","definition","StyleSheet","options","this","isSpeedy","undefined","speedy","tags","ctr","nonce","key","container","before","_proto","prototype","insert","rule","_tag","tag","createElement","setAttribute","appendChild","createTextNode","createStyleElement","length","nextSibling","insertBefore","sheet","i","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","e","flush","forEach","parentNode","removeChild","W","M","d","c","h","a","q","g","k","y","C","m","b","v","n","x","K","u","l","r","I","t","B","J","f","p","F","G","replace","N","trim","charAt","substring","ca","O","A","H","X","D","z","join","da","ea","fa","w","L","P","Y","E","ha","Q","split","ia","Z","ja","ka","aa","ba","la","ma","R","na","oa","S","call","U","prefix","use","T","set","delimiter","toSheet","block","Sheet","current","ruleSheet","context","content","selectors","parents","line","column","ns","depth","at","stylisOptions","stylis","inserted","head","_insert","nodes","querySelectorAll","Array","node","getAttribute","id","stylisPlugins","selector","serialized","shouldCache","name","styles","cache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","next","str","len","toString","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","property","isProcessableValue","value","processStyleName","arg","styleName","toLowerCase","processStyleValue","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","obj","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","result","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","exec","Object","hasOwnProperty","EmotionCacheContext","createContext","HTMLElement","ThemeContext","withEmotionCache","Provider","func","render","props","ref","Consumer","forwardRef","typePropName","createEmotionProps","type","newProps","Noop","theme","cssProp","css","ele","possiblyStyleElement","Fragment","Emotion","jsx","arguments","argsLength","createElementArgArray","Global","InnerGlobal","_React$Component","updater","componentDidMount","querySelector","componentDidUpdate","prevProps","element","nextElementSibling","componentWillUnmount","Component","classnames","cls","toAdd","merge","_len","cx","_len2","_key2","children","startsWith","search","substr","pick","routes","uri","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","default","params","routeSegments","path","max","Math","index","routeSegment","uriSegment","isSplat","slice","map","decodeURIComponent","dynamicMatch","paramRe","reservedNames","resolve","to","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","pathname","concat","allSegments","segments","segment","pop","insertParams","_path$split","pathBase","_path$split$","query","constructedPath","_params$location","location","_params$location$sear","searchSplit","validateRedirect","from","filter","isDynamic","sort","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","shallowCompare","obj1","obj2","obj1Keys","keys","every","_extends","assign","target","source","getLocation","_source$location","hash","href","origin","protocol","host","hostname","port","canUseDOM","URL","encodeURI","decodeURI","state","history","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","popstateListener","action","navigate","_ref","_ref$replace","go","Date","now","replaceState","pushState","transition","Promise","res","createMemorySource","initialPath","searchIndex","initialLocation","stack","states","entries","_","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","window","globalHistory","_invariant","_invariant2","__esModule","_defineProperty","defineProperty","enumerable","configurable","writable","apply","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","MDXContext","withMDXComponents","allComponents","useMDXComponents","components","contextComponents","MDXProvider","DEFAULTS","inlineCode","wrapper","MDXCreateElement","propComponents","mdxType","originalType","parentName","etc","displayName","camelCase","input","TypeError","pascalCase","toUpperCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","_createClass","descriptor","Constructor","protoProps","staticProps","_templateObject","freeze","_classCallCheck","instance","TemplateTag","_this","transformers","expressions","interimTag","bind","transformEndResult","transformString","processSubstitutions","transformer","previousTag","template","_len3","substitutions","_key3","resultSoFar","remainingPart","substitution","transformSubstitution","transform","onString","onSubstitution","endResult","onEndResult","defaults","separator","conjunction","serial","opts","arrayLength","indent","separatorIndex","lastIndexOf","_toConsumableArray","arr","arr2","min","el","regexp","RegExp","Error","side","splitBy","includes","isValidValue","Number","isNaN","replaceWhat","replaceWith","lunr","stemmerSupport","Among","s","substring_i","method","toCharArray","sLength","charArr","s_size","SnowballProgram","bra","ket","limit","limit_backward","setCurrent","word","getCurrent","in_grouping","ch","in_grouping_b","out_grouping","out_grouping_b","eq_s","eq_s_b","find_among","v_size","j","common_i","common_j","first_key_inspected","diff","common","i2","find_among_b","lb","replace_s","c_bra","c_ket","adjustment","left","right","slice_check","slice_from","slice_del","slice_to","eq_v_b","trimmerSupport","generateTrimmer","wordCharacters","startRegex","endRegex","token","update","TinySegmenter","patterns","chartype_","BIAS__","BC1__","BC2__","BC3__","BP1__","BP2__","BQ1__","BQ2__","BQ3__","BQ4__","BW1__","BW2__","BW3__","TC1__","TC2__","TC3__","TC4__","TQ1__","TQ2__","TQ3__","TQ4__","TW1__","TW2__","TW3__","TW4__","UC1__","UC2__","UC3__","UC4__","UC5__","UC6__","UP1__","UP2__","UP3__","UQ1__","UQ2__","UQ3__","UW1__","UW2__","UW3__","UW4__","UW5__","UW6__","ctype_","ts_","seg","ctype","o","p3","w1","w2","w3","w4","w5","w6","c1","c2","c3","c4","c5","c6","global","step2list","step3list","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","config","builder","Builder","pipeline","add","trimmer","stopWordFilter","stemmer","searchPipeline","build","version","utils","warn","message","console","asString","clone","create","val","FieldRef","docRef","fieldName","stringValue","_stringValue","joiner","fromString","fieldRef","Set","elements","complete","intersect","other","union","contains","empty","intersection","idf","posting","documentCount","documentsWithTerm","log","abs","Token","metadata","tokenizer","tokens","sliceEnd","sliceStart","sliceLength","tokenMetadata","Pipeline","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","load","serialised","fnName","after","existingFn","newFn","pos","splice","remove","run","stackLength","memo","runString","reset","toJSON","Vector","_magnitude","positionForIndex","start","end","pivotPoint","floor","pivotIndex","insertIdx","upsert","position","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","toArray","output","stem","suffix","firstch","re","re2","re3","re4","fp","generateStopWordFilter","stopWords","words","stopWord","TokenSet","final","edges","_nextId","fromArray","finish","root","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","frame","noEditNode","char","insertionNode","substitutionNode","transposeNode","charA","charB","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","commonPrefix","minimize","child","nextNode","parent","downTo","childKey","Index","attrs","invertedIndex","fieldVectors","tokenSet","fields","queryString","QueryParser","parse","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","termTokenSet","expandedTerms","presence","REQUIRED","field","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","results","matches","isNegated","docMatch","fieldVector","matchData","combine","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","tuple","_fields","_documents","fieldTermFrequencies","fieldLengths","_b","_k1","metadataWhitelist","attributes","RangeError","number","k1","extractor","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","accumulator","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","tf","round","createTokenSet","unshift","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","String","NONE","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","emit","escapeCharacter","EOS","width","ignore","backup","acceptDigitRun","charCode","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","errorMessage","nextLexeme","possibleFields","parseEditDistance","parseBoost","parseInt","hasElementType","Element","hasMap","Map","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","constructor","it","size","done","has","get","flags","valueOf","$$typeof","error","setPrototypeOf","__proto__","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","FRAGMENT","rel","charset","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","reverse","priority","dangerouslySetInnerHTML","__html","innerHTML","cssText","toComponent","titleAttributes","title","baseTag","bodyAttributes","encode","htmlAttributes","noscriptTags","styleTags","linkTags","metaTags","scriptTags","prioritizeSeoTags","priorityMethods","link","meta","noscript","script","style","instances","setHelmet","helmet","helmetInstances","encodeSpecialCharacters","helmetData","propTypes","defaultProps","styleSheet","some","isEqualNode","oldTags","newTags","getElementsByTagName","removeAttribute","onChangeClientState","rendered","shouldComponentUpdate","emitChange","defer","cancelAnimationFrame","requestAnimationFrame","init","isRequired","mapNestedChildrenToProps","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","nestedChildren","mapObjectTypeChildren","mapArrayTypeChildrenToProps","warnOnInvalidChildren","mapChildrenToProps","defaultTitle","titleTemplate","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","_interopRequireDefault","withPrefix","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_router","_utils","_parsePath","parsePath","isAbsolutePath","_prefix","getGlobalBasePrefix","isLocalLink","endsWith","rewriteLinkPath","relativeTo","absolutify","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","Location","_ref2","GatsbyLink","_location","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","Boolean","IOSupported","IntersectionObserver","handleRef","_prefetch","currentPath","rewrittenPath","newPathName","___loader","enqueue","prevState","io","_this$io","unobserve","disconnect","cb","_this2","innerRef","entry","isIntersecting","intersectionRatio","observe","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","___navigate","showDeprecationWarning","functionName","altFunctionName","_default","___push","hashIndex","_scrollHandler","ScrollHandler","ScrollContainer","_useScrollRestoration","useScrollRestoration","_interopRequireWildcard","React","_reactDom","scrollKey","shouldUpdateScroll","ScrollContainerImplementation","findDOMNode","save","scrollTop","read","scrollTo","ScrollContext","_sessionStorage","SessionStorage","_stateStorage","scrollListener","scrollY","windowScroll","scrollToHash","getElementById","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","_this$props$location2","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","JSON","storedValue","stringify","setItem","stateKeyBase","identifier","useLocation","useContext","useRef","useLayoutEffect","onScroll","DEFAULT_PIXEL_DENSITIES","DEFAULT_BREAKPOINTS","EVERY_BREAKPOINT","sortNumeric","getSrcSet","images","image","src","formatFromFilename","filename","ext","setDefaultDimensions","layout","height","sourceMetadata","breakpoints","aspectRatio","formats","format","getLowResolutionImageURL","generateImageSource","fit","_generateImageSource","generateImageData","pluginName","reporter","backgroundColor","placeholderURL","imageSizes","imgDimensions","erroneousUserDimensions","dim","outputPixelDensities","densities","dedupeAndSortDensities","calculated","getDimensionsAndAspectRatio","originalWidth","fixedDimension","stripIndent","sizes","density","presentationWidth","presentationHeight","unscaledWidth","responsiveImageSizes","calculateImageSizes","sources","imageSrc","unscaled","find","img","fallback","srcSet","imageProps","placeholder","values","dimensions","imageAspectRatio","widthOption","MAX_SAFE_INTEGER","heightOption","imageCache","hasNativeLazyLoadSupport","HTMLImageElement","storeImageloaded","cacheKey","hasImageLoaded","getImage","_node$images","_node$images$fallback","gatsbyImageData","childImageSharp","_node$childImageSharp","getSrc","_getImage","_getImage$images","_getImage$images$fall","_getImage2","_getImage2$images","_getImage2$images$fal","getImageData","baseUrl","urlBuilder","sourceWidth","sourceHeight","getMainProps","isLoading","isLoaded","loading","toggleLoaded","dataset","objectFit","objectPosition","objectFitPolyfill","import","shouldLoad","data-main-image","onLoad","currentTarget","Image","currentSrc","decode","then","getPlaceholderProps","wrapperStyle","top","bottom","aria-hidden","data-placeholder-image","withArtDirection","defaultImage","artDirected","media","Sizer","paddingTop","maxWidth","display","alt","role","LayoutWrapper","decoding","Picture","fallbackImage","PropTypes","Placeholder","_Picture$propTypes","propName","componentName","MainImage","altValidator","GatsbyImageHydrator","createRef","_lazyHydrate","hasSSRHtml","hydrated","lazyHydrator","lazyHydrate","toggleIsLoaded","setState","forceRender","_setupIntersectionObserver","useCache","intersectionObserver","createIntersectionObserver","_this4","onStartLoad","wasCached","unobserveRef","nextProps","nextState","hasChanged","_this5","ssrElement","Type","as","overflow","data-gatsby-image-wrapper","wStyle","wClass","wrapperProps","sizer","suppressHydrationWarning","GatsbyImage","propsKey","checkDimensionProps","validLayouts","StaticImage","GatsbyImageBrowser","imageData","__imageData","__error","LaterHydrator","wrapRootElement","enhanceLunr","lngs","require","onClientEntry","languages","fetchOptions","__LUNR__","__loaded","fetch","response","json","fullIndex","prev","store","catch","localizedManifests","defaultFilename","localizedManifest","app","start_url","lang","process","GatsbyMDXScopeContext","useMDXScope","scope","contextScope","MDXScopeProvider","__mdxScope","scope_0","componentsAndGuards","mdxPlugins","guards","guard","___EmotionJSX","componentFromGuards","acc","MDXConsumer","componentsFromContext","scopeContexts","WrapRootElement","wrap","plugins","plugin","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","previous","all","on","handler","off","evt","mitt","pathCache","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","foundPath","prefetchPathname","loader","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","useStaticQuery","_context$query","graphql","arrayLikeToArray","iter","Symbol","iterator","unsupportedIterableToArray","supportedPrefetchStrategy","feature","fakeLink","relList","supports","err","support","url","reject","onload","onerror","getElementsByName","req","XMLHttpRequest","open","status","send","preFetched","PageResourceStatus","Success","preferDefault","createPageDataUrl","doFetch","onreadystatechange","toPageResources","pageData","component","page","componentChunkName","webpackCompilationHash","staticQueryHashes","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","delete","setApiRunner","apiRunner","prefetchDisabled","fetchPageDataJson","loadObj","pagePath","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","rawPath","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","_options","withErrorDetails","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","_this6","createComponentUrls","isPageNotFound","appData","_this7","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","asyncRequires","_BaseLoader","chunkName","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","padding","clip","whiteSpace","border","redirectMap","redirectIgnoreCaseMap","maybeRedirect","redirect","___replace","toPath","redirects","ignoreCase","fromPath","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","clearTimeout","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","pageName","pageHeadings","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","shallowDiffers","EnsureResources","getDerivedStateFromProps","loadResources","___emitter","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Router","browserLoc","SiteRoot","App","renderer","ReactDOM","domReady","InternalPageRenderer","register","reg","installingWorker","installing","___failedResources","reload","__importDefault","mod","react_1","react_helmet_async_1","_a","HelmetProvider","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","array","createRoute","FocusWrapper","FocusHandler","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","focus","myURIChanged","navigatedUpToMe","activeElement","_props2","_props2$component","Comp","outline","tabIndex","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","event","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","condition","argIndex","framesToPop","webpackContext","webpackContextResolve","__webpack_require__","code","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","newObj","hasPropertyDescriptor","desc","_setPrototypeOf","_arrayLikeToArray","_inheritsLoose","_unsupportedIterableToArray","minLen"],"sourceRoot":""}