forked from UnitTestBot/unittestbot.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app-bbba77a7aaa713367ac5.js.map
1 lines (1 loc) · 734 KB
/
app-bbba77a7aaa713367ac5.js.map
1
{"version":3,"file":"app-bbba77a7aaa713367ac5.js","mappings":"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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,MAERxmB,KAAKymB,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,KAETzmB,KAAK0mB,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,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,KAAM,IACN,MAAO,KACP,MAAO,IACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,IACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,MAAO,IACP,MAAO,IACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IAC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AM,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,KAEPpoB,KAAKqoB,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,KAEProB,KAAKsoB,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,MAERtoB,KAAKuoB,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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","sources":["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/@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/core/node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/core/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/core/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/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://unittestbot-web/./node_modules/@emotion/css/node_modules/@emotion/serialize/dist/serialize.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/node_modules/prop-types/factoryWithThrowingShims.js","webpack://unittestbot-web/./node_modules/gatsby-link/node_modules/prop-types/index.js","webpack://unittestbot-web/./node_modules/gatsby-link/node_modules/prop-types/lib/ReactPropTypesSecret.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/node_modules/prop-types/factoryWithThrowingShims.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/node_modules/prop-types/index.js","webpack://unittestbot-web/./node_modules/gatsby-react-router-scroll/node_modules/prop-types/lib/ReactPropTypesSecret.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-image/node_modules/prop-types/factoryWithThrowingShims.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-image/node_modules/prop-types/index.js","webpack://unittestbot-web/./node_modules/gatsby-plugin-image/node_modules/prop-types/lib/ReactPropTypesSecret.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/user/Github/utbot-new-wiki/node_modules/lunr-languages|sync|/^\\.\\/lunr\\..*$/","webpack://unittestbot-web/./node_modules/react-helmet-async/node_modules/prop-types/factoryWithThrowingShims.js","webpack://unittestbot-web/./node_modules/react-helmet-async/node_modules/prop-types/index.js","webpack://unittestbot-web/./node_modules/react-helmet-async/node_modules/prop-types/lib/ReactPropTypesSecret.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":["function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\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\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\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}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\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}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\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\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\n\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\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\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\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\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\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || 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}\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}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\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\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}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\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\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is 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, // 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\n this.ctr++;\n };\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\n return StyleSheet;\n}();\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\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\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\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\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {}\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\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\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\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\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\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\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\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\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\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\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\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\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\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\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\n case 220:\n t = l, b = 42;\n }\n\n break;\n\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\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\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\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\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\n E = 0;\n }\n }\n\n return G + p + F;\n }\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\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\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 }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\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\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\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\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\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\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\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\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\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\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\n return a + ';';\n\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\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\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\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\n return a;\n }\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\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\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\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\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\n return T;\n }\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\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\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\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\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}\n\nexport default stylis_min;","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize'; // 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\n\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\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\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\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\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\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\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\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\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\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\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\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\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\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\n break;\n }\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};\n\nexport default createCache;","var isBrowser = \"object\" !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\n\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\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\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport 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}\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;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\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\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\n var processed = oldProcessStyleValue(key, value);\n\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\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\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\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\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\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, 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\n break;\n }\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\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\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\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\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\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\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\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\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\n\nvar cursor;\n\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\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\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\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 += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\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\n return {\n name: name,\n styles: styles,\n next: cursor\n };\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( // 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;\n\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\n return /*#__PURE__*/forwardRef(render);\n}; // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\n\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // 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\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\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\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\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar Noop = function Noop() {\n return null;\n};\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\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\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\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\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\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };","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}\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;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\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\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\n var processed = oldProcessStyleValue(key, value);\n\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\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\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\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\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\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, 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\n break;\n }\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\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\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\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\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\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\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\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\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\n\nvar cursor;\n\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\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\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\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 += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\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\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\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';\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // 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\n var styles = props.styles;\n\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\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\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\n\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\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\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\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\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\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\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};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\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\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n {\n insertStyles(context, serialized, false);\n }\n return context.key + \"-\" + serialized.name;\n };\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\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\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// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\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.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\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\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\n var dynamicMatch = paramRe.exec(routeSegment);\n\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\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\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.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\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\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\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\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\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\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};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\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// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\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};\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};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\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\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\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 */\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;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\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\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\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};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\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\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\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\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// Stores history entries in memory for testing or other platforms like Native\n\n\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\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\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\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\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\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\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;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\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.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\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\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\n var dynamicMatch = paramRe.exec(routeSegment);\n\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\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\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.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\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\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\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\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\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\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};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\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// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\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};\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};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\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\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\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 */\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';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\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\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\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\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\n}\n\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\n\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};\n\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n\n return allComponents;\n};\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};\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\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\n\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n\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\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n }\n\n return React.createElement.apply(null, args);\n}\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\n for (var i = 0; i < string.length; i++) {\n var character = string[i];\n\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\n return string;\n};\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\n options = Object.assign({\n pascalCase: false\n }, options);\n\n var postProcess = function postProcess(x) {\n return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n };\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\n if (input.length === 0) {\n return '';\n }\n\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n\n var hasUpperCase = input !== input.toLowerCase();\n\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\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};\n\nmodule.exports = camelCase; // TODO: Remove this for the next major release\n\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\n\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\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 * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\n\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\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n\n _classCallCheck(this, TemplateTag);\n\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\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\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n } // else, return a transformed end result of processing the template with our tag\n\n\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n }; // if first argument is an array, extrude it as a list of transformers\n\n\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n } // if any transformers are functions, this means they are not initiated - automatically initiate them\n\n\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n }); // return an ES2015 template tag\n\n return this.tag;\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\n _createClass(TemplateTag, [{\n key: 'interimTag',\n\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\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\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 }, {\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 * 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 }, {\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\n return this.transformers.reduce(cb, str);\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 }, {\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\n return this.transformers.reduce(cb, substitution);\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 }, {\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\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n\n return TemplateTag;\n}();\n\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\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 */\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; // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n } // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n\n\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\n return substitution;\n }\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\n return arr2;\n } else {\n return Array.from(arr);\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 */\n\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\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n\n return endResult;\n }\n\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n\n throw new Error('Unknown type: ' + type);\n }\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\n side = side.toLowerCase();\n\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n\n throw new Error('Side not supported: ' + side);\n }\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\n return substitution;\n }\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};\n\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n\n if (isValidValue(substitution)) {\n return substitution;\n }\n\n return '';\n }\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 } // Do not touch if null or undefined\n\n\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\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\n return endResult.replace(replaceWhat, replaceWith);\n }\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\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\n for (var i = 0; i < sLength; i++) {\n charArr[i] = s.charCodeAt(i);\n }\n\n return charArr;\n };\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\n if (ch <= max && ch >= min) {\n ch -= min;\n\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor++;\n return true;\n }\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\n if (ch <= max && ch >= min) {\n ch -= min;\n\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor--;\n return true;\n }\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\n if (ch > max || ch < min) {\n this.cursor++;\n return true;\n }\n\n ch -= min;\n\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor++;\n return true;\n }\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\n if (ch > max || ch < min) {\n this.cursor--;\n return true;\n }\n\n ch -= min;\n\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor--;\n return true;\n }\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\n for (var i = 0; i < s_size; i++) {\n if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i)) return false;\n }\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\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\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\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\n for (var i2 = common; i2 < w.s_size; i2++) {\n if (c + common == l) {\n diff = -1;\n break;\n }\n\n diff = current.charCodeAt(c + common) - w.s[i2];\n if (diff) break;\n common++;\n }\n\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n\n while (true) {\n var w = v[i];\n\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\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\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\n for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) {\n if (c - common == lb) {\n diff = -1;\n break;\n }\n\n diff = current.charCodeAt(c - 1 - common) - w.s[i2];\n if (diff) break;\n common++;\n }\n\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n\n while (true) {\n var w = v[i];\n\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\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\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 // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript\n // (c) 2008 Taku Kudo <[email protected]>\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 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\n for (var i in patterns) {\n var regexp = new RegExp(i);\n this.chartype_.push([regexp, patterns[i]]);\n }\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\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\n return \"O\";\n };\n\n TinySegmenter.prototype.ts_ = function (v) {\n if (v) {\n return v;\n }\n\n return 0;\n };\n\n TinySegmenter.prototype.segment = function (input) {\n if (input == null || input == undefined || input == \"\") {\n return [];\n }\n\n var result = [];\n var seg = [\"B3\", \"B2\", \"B1\"];\n var ctype = [\"O\", \"O\", \"O\"];\n var o = input.split(\"\");\n\n for (i = 0; i < o.length; ++i) {\n seg.push(o[i]);\n ctype.push(this.ctype_(o[i]));\n }\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\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]); // score += this.ts_(this.TC5__[c4 + c5 + c6]); \n\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\n if (score > 0) {\n result.push(word);\n word = \"\";\n p = \"B\";\n }\n\n p1 = p2;\n p2 = p3;\n p3 = p;\n word += seg[i];\n }\n\n result.push(word);\n return result;\n };\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\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\n lunr.utils = {};\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\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 * 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\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 * 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\n\n lunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key];\n\n if (Array.isArray(val)) {\n clone[key] = val.slice();\n continue;\n }\n\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n clone[key] = val;\n continue;\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\");\n }\n\n return clone;\n };\n\n lunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef;\n this.fieldName = fieldName;\n this._stringValue = stringValue;\n };\n\n lunr.FieldRef.joiner = \"/\";\n\n lunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner);\n\n if (n === -1) {\n throw \"malformed field ref string\";\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1);\n return new lunr.FieldRef(docRef, fieldRef, s);\n };\n\n lunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef;\n }\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\n\n lunr.Set = function (elements) {\n this.elements = Object.create(null);\n\n if (elements) {\n this.length = elements.length;\n\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 * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n\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 * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\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 * 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\n lunr.Set.prototype.contains = function (object) {\n return !!this.elements[object];\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\n lunr.Set.prototype.intersect = function (other) {\n var a,\n b,\n elements,\n intersection = [];\n\n if (other === lunr.Set.complete) {\n return this;\n }\n\n if (other === lunr.Set.empty) {\n return other;\n }\n\n if (this.length < other.length) {\n a = this;\n b = other;\n } else {\n a = other;\n b = this;\n }\n\n elements = Object.keys(a.elements);\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n\n if (element in b.elements) {\n intersection.push(element);\n }\n }\n\n return new lunr.Set(intersection);\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\n lunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete;\n }\n\n if (other === lunr.Set.empty) {\n return this;\n }\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\n\n lunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0;\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue; // Ignore the term index, its not a field\n\n documentsWithTerm += Object.keys(posting[fieldName]).length;\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5);\n return Math.log(1 + Math.abs(x));\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\n\n lunr.Token = function (str, metadata) {\n this.str = str || \"\";\n this.metadata = metadata || {};\n };\n /**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\n\n\n lunr.Token.prototype.toString = function () {\n return this.str;\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\n\n lunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata);\n return this;\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\n\n lunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) {\n return s;\n };\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\n\n lunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return [];\n }\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\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = [];\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart;\n\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\n sliceStart = sliceEnd + 1;\n }\n }\n\n return tokens;\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\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\n lunr.Pipeline = function () {\n this._stack = [];\n };\n\n lunr.Pipeline.registeredFunctions = Object.create(null);\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\n lunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label);\n }\n\n fn.label = label;\n lunr.Pipeline.registeredFunctions[fn.label] = fn;\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\n\n lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && fn.label in this.registeredFunctions;\n\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 * 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\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\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 * 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\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\n this._stack.push(fn);\n }, this);\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\n\n lunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n\n var pos = this._stack.indexOf(existingFn);\n\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n\n pos = pos + 1;\n\n this._stack.splice(pos, 0, newFn);\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\n\n lunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n\n var pos = this._stack.indexOf(existingFn);\n\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n\n this._stack.splice(pos, 0, newFn);\n };\n /**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\n\n\n lunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn);\n\n if (pos == -1) {\n return;\n }\n\n this._stack.splice(pos, 1);\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\n\n lunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length;\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i];\n var memo = [];\n\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\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\n tokens = memo;\n }\n\n return tokens;\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\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 * Resets the pipeline by removing any existing processors.\n *\n */\n\n\n lunr.Pipeline.prototype.reset = function () {\n this._stack = [];\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\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\n\n lunr.Vector = function (elements) {\n this._magnitude = 0;\n this.elements = elements || [];\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\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\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\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint;\n }\n\n if (pivotIndex > index) {\n end = pivotPoint;\n }\n\n if (pivotIndex == index) {\n break;\n }\n\n sliceLength = end - start;\n pivotPoint = start + Math.floor(sliceLength / 2);\n pivotIndex = this.elements[pivotPoint * 2];\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2;\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2;\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2;\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\n\n lunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\";\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\n\n lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0;\n var position = this.positionForIndex(insertIdx);\n\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 * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\n\n\n lunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude;\n var sumOfSquares = 0,\n elementsLength = this.elements.length;\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i];\n sumOfSquares += val * val;\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares);\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\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\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j];\n\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\n return dotProduct;\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\n\n lunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0;\n };\n /**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\n\n\n lunr.Vector.prototype.toArray = function () {\n var output = new Array(this.elements.length / 2);\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i];\n }\n\n return output;\n };\n /**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\n\n\n lunr.Vector.prototype.toJSON = function () {\n return this.elements;\n };\n /* eslint-disable */\n\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\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 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\n var porterStemmer = function porterStemmer(w) {\n var stem, suffix, firstch, re, re2, re3, re4;\n\n if (w.length < 3) {\n return w;\n }\n\n firstch = w.substr(0, 1);\n\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n } // Step 1a\n\n\n re = re_1a;\n re2 = re2_1a;\n\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 } // Step 1b\n\n\n re = re_1b;\n re2 = re2_1b;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n\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\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n\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 } // 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\n\n re = re_1c;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n } // Step 2\n\n\n re = re_2;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n } // Step 3\n\n\n re = re_3;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n } // Step 4\n\n\n re = re_4;\n re2 = re2_4;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n\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\n if (re2.test(stem)) {\n w = stem;\n }\n } // Step 5\n\n\n re = re_5;\n\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\n if (re.test(stem) || re2.test(stem) && !re3.test(stem)) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n } // and turn initial Y back to y\n\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n };\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\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 * 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\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\n lunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '');\n });\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\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 * 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\n\n lunr.TokenSet._nextId = 1;\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\n lunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i]);\n }\n\n builder.finish();\n return builder.root;\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\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 * 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\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\n while (stack.length) {\n var frame = stack.pop(); // no edit\n\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode;\n\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\n if (frame.str.length == 1) {\n noEditNode.final = true;\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n });\n }\n\n if (frame.editsRemaining == 0) {\n continue;\n } // insertion\n\n\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\n if (frame.str.length == 0) {\n insertionNode.final = true;\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\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\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 } // deletion\n // just removing the last character from the str\n\n\n if (frame.str.length == 1) {\n frame.node.final = true;\n } // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n\n\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\n if (frame.str.length == 1) {\n substitutionNode.final = true;\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n } // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n\n\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode;\n\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\n if (frame.str.length == 1) {\n transposeNode.final = true;\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n });\n }\n }\n\n return root;\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\n\n lunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet(),\n root = node;\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\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = i == len - 1;\n\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\n return root;\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\n\n lunr.TokenSet.prototype.toArray = function () {\n var words = [];\n var stack = [{\n prefix: \"\",\n node: this\n }];\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length;\n\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\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\n return words;\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\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 if (this._str) {\n return this._str;\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length;\n\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\n return str;\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\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\n while (stack.length) {\n frame = stack.pop(); // 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\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length;\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q];\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n];\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\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\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n });\n }\n }\n }\n }\n\n return output;\n };\n\n lunr.TokenSet.Builder = function () {\n this.previousWord = \"\";\n this.root = new lunr.TokenSet();\n this.uncheckedNodes = [];\n this.minimizedNodes = {};\n };\n\n lunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0;\n\n if (word < this.previousWord) {\n throw new Error(\"Out of order word insertion\");\n }\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\n this.minimize(commonPrefix);\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root;\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child;\n }\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\n node.final = true;\n this.previousWord = word;\n };\n\n lunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0);\n };\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\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\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\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 * 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\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 * 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\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 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 * 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\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector();\n }\n\n fn.call(query, query);\n\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\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n });\n } else {\n terms = [clause.term];\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m];\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\n clause.term = term;\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\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray();\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\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\n break;\n }\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\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 * 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\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet);\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete;\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\n\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty;\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet);\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\n continue;\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\n\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) {\n return a + b;\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\n if (termFieldCache[termField]) {\n continue;\n }\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\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\n termFieldCache[termField] = true;\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\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 * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n\n\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty;\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]);\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]);\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null);\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\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors);\n\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\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\n if (!allRequiredMatches.contains(docRef)) {\n continue;\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue;\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch;\n\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 * Sort the results objects by score, highest first.\n */\n\n\n return results.sort(function (a, b) {\n return b.score - a.score;\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\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 * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\n\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\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\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\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\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\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 * 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\n\n lunr.Builder.prototype.ref = function (ref) {\n this._ref = ref;\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\n\n lunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError(\"Field '\" + fieldName + \"' contains illegal character '/'\");\n }\n\n this._fields[fieldName] = attributes || {};\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\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 * 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\n\n lunr.Builder.prototype.k1 = function (number) {\n this._k1 = number;\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\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\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; // store the length of this field for this document\n\n this.fieldLengths[fieldRef] += terms.length; // calculate term frequencies for this field\n\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j];\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0;\n }\n\n fieldTerms[term] += 1; // add to inverted index\n // create an initial posting if one doesn't exist\n\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null);\n posting[\"_index\"] = this.termIndex;\n this.termIndex += 1;\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null);\n }\n\n this.invertedIndex[term] = posting;\n } // add an entry for this term/fieldName/docRef to the invertedIndex\n\n\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null);\n } // store all whitelisted metadata about this token in the\n // inverted index\n\n\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey];\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = [];\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata);\n }\n }\n }\n };\n /**\n * Calculates the average document length for this index\n *\n * @private\n */\n\n\n lunr.Builder.prototype.calculateAverageFieldLengths = function () {\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {};\n\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\n var fields = Object.keys(this._fields);\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i];\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName];\n }\n\n this.averageFieldLength = accumulator;\n };\n /**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\n\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\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\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\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\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; // 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\n fieldVectors[fieldRef] = fieldVector;\n }\n\n this.fieldVectors = fieldVectors;\n };\n /**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\n\n\n lunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(Object.keys(this.invertedIndex).sort());\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\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 * 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\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\n\n lunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {}); // 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\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n clonedMetadata[key] = metadata[key].slice();\n }\n\n this.metadata = Object.create(null);\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = clonedMetadata;\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\n\n lunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata);\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term]);\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null);\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field]);\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null);\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\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 * 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\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\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata;\n return;\n }\n\n var metadataKeys = Object.keys(metadata);\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n\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\n\n lunr.Query = function (allFields) {\n this.clauses = [];\n this.allFields = allFields;\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\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 * 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\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 /**\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 /**\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 * 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\n lunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields;\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1;\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true;\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE;\n }\n\n if (clause.wildcard & lunr.Query.wildcard.LEADING && clause.term.charAt(0) != lunr.Query.wildcard) {\n clause.term = \"*\" + clause.term;\n }\n\n if (clause.wildcard & lunr.Query.wildcard.TRAILING && clause.term.slice(-1) != lunr.Query.wildcard) {\n clause.term = \"\" + clause.term + \"*\";\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL;\n }\n\n this.clauses.push(clause);\n return this;\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\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\n return true;\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\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\n var clause = options || {};\n clause.term = term.toString();\n this.clause(clause);\n return this;\n };\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\n lunr.QueryParseError.prototype = new Error();\n\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\n lunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText;\n\n while (state) {\n state = state(this);\n }\n };\n\n lunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos;\n\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\n subSlices.push(this.str.slice(sliceStart, this.pos));\n this.escapeCharPositions.length = 0;\n return subSlices.join('');\n };\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\n lunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1);\n this.pos += 1;\n };\n\n lunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS;\n }\n\n var char = this.str.charAt(this.pos);\n this.pos += 1;\n return char;\n };\n\n lunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start;\n };\n\n lunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1;\n }\n\n this.start = this.pos;\n };\n\n lunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1;\n };\n\n lunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode;\n\n do {\n char = this.next();\n charCode = char.charCodeAt(0);\n } while (charCode > 47 && charCode < 58);\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup();\n }\n };\n\n lunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length;\n };\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\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\n lunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n lexer.ignore();\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText;\n }\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\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\n lunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\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\n\n lunr.QueryLexer.termSeparator = lunr.tokenizer.separator;\n\n lunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next();\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS;\n } // Escape character is '\\'\n\n\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter();\n continue;\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField;\n }\n\n if (char == \"~\") {\n lexer.backup();\n\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n return lunr.QueryLexer.lexEditDistance;\n }\n\n if (char == \"^\") {\n lexer.backup();\n\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n return lunr.QueryLexer.lexBoost;\n } // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n\n\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n } // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n\n\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm;\n }\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\n lunr.QueryParser.prototype.parse = function () {\n this.lexer.run();\n this.lexemes = this.lexer.lexemes;\n var state = lunr.QueryParser.parseClause;\n\n while (state) {\n state = state(this);\n }\n\n return this.query;\n };\n\n lunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx];\n };\n\n lunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme();\n this.lexemeIdx += 1;\n return lexeme;\n };\n\n lunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause;\n this.query.clause(completedClause);\n this.currentClause = {};\n };\n\n lunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence;\n\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type;\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\";\n }\n\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n };\n\n lunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED;\n break;\n\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED;\n break;\n\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n var nextLexeme = parser.peekLexeme();\n\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\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\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\n lunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\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\n parser.currentClause.fields = [lexeme.str];\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase();\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false;\n }\n\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n var editDistance = parseInt(lexeme.str, 10);\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n parser.currentClause.editDistance = editDistance;\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n var boost = parseInt(lexeme.str, 10);\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n parser.currentClause.boost = boost;\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\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\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 */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // 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\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\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\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\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\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\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 continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\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 } // some other error. we should definitely know about these\n\n\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\";\n\nfunction a() {\n return (a = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n\n for (var n in r) {\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n }\n\n return t;\n }).apply(this, arguments);\n}\n\nfunction s(t, e) {\n t.prototype = Object.create(e.prototype), t.prototype.constructor = t, c(t, e);\n}\n\nfunction c(t, e) {\n return (c = Object.setPrototypeOf || function (t, e) {\n return t.__proto__ = e, t;\n })(t, e);\n}\n\nfunction u(t, e) {\n if (null == t) return {};\n var r,\n n,\n i = {},\n o = Object.keys(t);\n\n for (n = 0; n < o.length; n++) {\n e.indexOf(r = o[n]) >= 0 || (i[r] = t[r]);\n }\n\n return i;\n}\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\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\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\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\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\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\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\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\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\n T = g.priorityMethods, h = g.linkTags, m = g.metaTags, y = g.scriptTags;\n }\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 = 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\n return s(r, e), r.prototype.render = function () {\n return t.createElement(R.Provider, {\n value: this.helmetData.value\n }, this.props.children);\n }, r;\n}(e);\n\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\";\n\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\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 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\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\n for (var p = o.length - 1; p >= 0; p -= 1) {\n r.removeAttribute(o[p]);\n }\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 = 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\n return (e = t.call.apply(t, [this].concat(n)) || this).rendered = !1, e;\n }\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);\n\nz.propTypes = {\n context: D.isRequired\n}, z.displayName = \"HelmetDispatcher\";\n\nvar F = [\"children\"],\n G = [\"children\"],\n W = function (e) {\n function r() {\n return e.apply(this, arguments) || this;\n }\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\n switch (t.type) {\n case l.SCRIPT:\n case l.NOSCRIPT:\n return {\n innerHTML: e\n };\n\n case l.STYLE:\n return {\n cssText: e\n };\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\n switch (n.type) {\n case l.TITLE:\n return a({}, i, ((e = {})[n.type] = s, e.titleAttributes = a({}, o), e));\n\n case l.BODY:\n return a({}, i, {\n bodyAttributes: a({}, o)\n });\n\n case l.HTML:\n return a({}, i, {\n htmlAttributes: a({}, o)\n });\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\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\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\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 ? t.createElement(z, a({}, i, {\n context: o.value,\n helmetData: void 0\n })) : t.createElement(R.Consumer, null, function (e) {\n return t.createElement(z, a({}, i, {\n context: e\n }));\n });\n }, r;\n}(e);\n\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 };","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","\"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;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"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;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"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}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"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/user/Github/utbot-new-wiki/.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-advanced-c-syntax-md\": () => import(\"./../../../src/docs/advanced/c-syntax.md\" /* webpackChunkName: \"component---src-docs-advanced-c-syntax-md\" */),\n \"component---src-docs-advanced-compile-database-md\": () => import(\"./../../../src/docs/advanced/compile-database.md\" /* webpackChunkName: \"component---src-docs-advanced-compile-database-md\" */),\n \"component---src-docs-advanced-coverage-md\": () => import(\"./../../../src/docs/advanced/coverage.md\" /* webpackChunkName: \"component---src-docs-advanced-coverage-md\" */),\n \"component---src-docs-advanced-cpp-syntax-md\": () => import(\"./../../../src/docs/advanced/cpp-syntax.md\" /* webpackChunkName: \"component---src-docs-advanced-cpp-syntax-md\" */),\n \"component---src-docs-advanced-generating-and-running-tests-md\": () => import(\"./../../../src/docs/advanced/generating-and-running-tests.md\" /* webpackChunkName: \"component---src-docs-advanced-generating-and-running-tests-md\" */),\n \"component---src-docs-advanced-incrementality-md\": () => import(\"./../../../src/docs/advanced/incrementality.md\" /* webpackChunkName: \"component---src-docs-advanced-incrementality-md\" */),\n \"component---src-docs-advanced-klee-patches-md\": () => import(\"./../../../src/docs/advanced/klee-patches.md\" /* webpackChunkName: \"component---src-docs-advanced-klee-patches-md\" */),\n \"component---src-docs-advanced-linking-bitcode-md\": () => import(\"./../../../src/docs/advanced/linking-bitcode.md\" /* webpackChunkName: \"component---src-docs-advanced-linking-bitcode-md\" */),\n \"component---src-docs-advanced-makefiles-md\": () => import(\"./../../../src/docs/advanced/makefiles.md\" /* webpackChunkName: \"component---src-docs-advanced-makefiles-md\" */),\n \"component---src-docs-advanced-preparing-sources-for-klee-md\": () => import(\"./../../../src/docs/advanced/preparing-sources-for-klee.md\" /* webpackChunkName: \"component---src-docs-advanced-preparing-sources-for-klee-md\" */),\n \"component---src-docs-advanced-stubs-inside-md\": () => import(\"./../../../src/docs/advanced/stubs-inside.md\" /* webpackChunkName: \"component---src-docs-advanced-stubs-inside-md\" */),\n \"component---src-docs-advanced-symbolic-execution-md\": () => import(\"./../../../src/docs/advanced/symbolic-execution.md\" /* webpackChunkName: \"component---src-docs-advanced-symbolic-execution-md\" */),\n \"component---src-docs-advanced-symbolic-stdin-md\": () => import(\"./../../../src/docs/advanced/symbolic-stdin.md\" /* webpackChunkName: \"component---src-docs-advanced-symbolic-stdin-md\" */),\n \"component---src-docs-advanced-targets-md\": () => import(\"./../../../src/docs/advanced/targets.md\" /* webpackChunkName: \"component---src-docs-advanced-targets-md\" */),\n \"component---src-docs-advanced-utbot-inside-md\": () => import(\"./../../../src/docs/advanced/utbot-inside.md\" /* webpackChunkName: \"component---src-docs-advanced-utbot-inside-md\" */),\n \"component---src-docs-advanced-utbot-logging-md\": () => import(\"./../../../src/docs/advanced/utbot-logging.md\" /* webpackChunkName: \"component---src-docs-advanced-utbot-logging-md\" */),\n \"component---src-docs-develop-todo-md\": () => import(\"./../../../src/docs/develop/todo.md\" /* webpackChunkName: \"component---src-docs-develop-todo-md\" */),\n \"component---src-docs-develop-troubleshooting-md\": () => import(\"./../../../src/docs/develop/troubleshooting.md\" /* webpackChunkName: \"component---src-docs-develop-troubleshooting-md\" */),\n \"component---src-docs-faq-md\": () => import(\"./../../../src/docs/faq.md\" /* webpackChunkName: \"component---src-docs-faq-md\" */),\n \"component---src-docs-general-home-md\": () => import(\"./../../../src/docs/general/Home.md\" /* webpackChunkName: \"component---src-docs-general-home-md\" */),\n \"component---src-docs-general-system-requirements-md\": () => import(\"./../../../src/docs/general/system-requirements.md\" /* webpackChunkName: \"component---src-docs-general-system-requirements-md\" */),\n \"component---src-docs-installation-install-server-md\": () => import(\"./../../../src/docs/installation/install-server.md\" /* webpackChunkName: \"component---src-docs-installation-install-server-md\" */),\n \"component---src-docs-installation-install-vscode-plugin-md\": () => import(\"./../../../src/docs/installation/install-vscode-plugin.md\" /* webpackChunkName: \"component---src-docs-installation-install-vscode-plugin-md\" */),\n \"component---src-docs-installation-use-cases-md\": () => import(\"./../../../src/docs/installation/use-cases.md\" /* webpackChunkName: \"component---src-docs-installation-use-cases-md\" */),\n \"component---src-docs-usage-command-line-interface-md\": () => import(\"./../../../src/docs/usage/command-line-interface.md\" /* webpackChunkName: \"component---src-docs-usage-command-line-interface-md\" */),\n \"component---src-docs-usage-configuring-md\": () => import(\"./../../../src/docs/usage/configuring.md\" /* webpackChunkName: \"component---src-docs-usage-configuring-md\" */),\n \"component---src-docs-usage-format-tests-md\": () => import(\"./../../../src/docs/usage/format-tests.md\" /* webpackChunkName: \"component---src-docs-usage-format-tests-md\" */),\n \"component---src-docs-usage-generating-tests-md\": () => import(\"./../../../src/docs/usage/generating-tests.md\" /* webpackChunkName: \"component---src-docs-usage-generating-tests-md\" */),\n \"component---src-docs-usage-run-generated-tests-md\": () => import(\"./../../../src/docs/usage/run-generated-tests.md\" /* webpackChunkName: \"component---src-docs-usage-run-generated-tests-md\" */),\n \"component---src-docs-usage-status-bar-icons-md\": () => import(\"./../../../src/docs/usage/status-bar-icons.md\" /* webpackChunkName: \"component---src-docs-usage-status-bar-icons-md\" */),\n \"component---src-docs-usage-step-by-step-md\": () => import(\"./../../../src/docs/usage/step-by-step.md\" /* webpackChunkName: \"component---src-docs-usage-step-by-step-md\" */),\n \"component---src-docs-usage-stubs-md\": () => import(\"./../../../src/docs/usage/stubs.md\" /* webpackChunkName: \"component---src-docs-usage-stubs-md\" */),\n \"component---src-docs-usage-vscode-extension-settings-md\": () => import(\"./../../../src/docs/usage/vscode-extension-settings.md\" /* webpackChunkName: \"component---src-docs-usage-vscode-extension-settings-md\" */),\n \"component---src-docs-usage-vscode-plugin-md\": () => import(\"./../../../src/docs/usage/vscode-plugin.md\" /* webpackChunkName: \"component---src-docs-usage-vscode-plugin-md\" */),\n \"component---src-docs-usage-wizard-md\": () => import(\"./../../../src/docs/usage/wizard.md\" /* webpackChunkName: \"component---src-docs-usage-wizard-md\" */),\n \"component---src-pages-404-jsx\": () => import(\"./../../../src/pages/404.jsx\" /* webpackChunkName: \"component---src-pages-404-jsx\" */),\n \"component---src-pages-contact-jsx\": () => import(\"./../../../src/pages/contact.jsx\" /* webpackChunkName: \"component---src-pages-contact-jsx\" */),\n \"component---src-pages-docs-java-jsx\": () => import(\"./../../../src/pages/docs/java.jsx\" /* webpackChunkName: \"component---src-pages-docs-java-jsx\" */),\n \"component---src-pages-docs-jsx\": () => import(\"./../../../src/pages/docs.jsx\" /* webpackChunkName: \"component---src-pages-docs-jsx\" */),\n \"component---src-pages-index-jsx\": () => import(\"./../../../src/pages/index.jsx\" /* webpackChunkName: \"component---src-pages-index-jsx\" */),\n \"component---src-pages-install-jsx\": () => import(\"./../../../src/pages/install.jsx\" /* webpackChunkName: \"component---src-pages-install-jsx\" */),\n \"component---src-pages-search-jsx\": () => import(\"./../../../src/pages/search.jsx\" /* webpackChunkName: \"component---src-pages-search-jsx\" */),\n \"component---src-pages-survey-jsx\": () => import(\"./../../../src/pages/survey.jsx\" /* webpackChunkName: \"component---src-pages-survey-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/user/Github/utbot-new-wiki/node_modules/gatsby-theme-docz/src/base/Layout.js\"},\"lessBabel\":false,\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/home/user/Github/utbot-new-wiki\"},\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-5.svg\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"aebc4885c03a4f1b00881be040430490\"},\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\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\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\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\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};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\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\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\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\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// Stores history entries in memory for testing or other platforms like Native\n\n\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\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\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\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\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\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\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\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\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\n return target;\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\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\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\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/* eslint-disable jsx-a11y/anchor-has-content */\n\n\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\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\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};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\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\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\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\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\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n\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\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\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\n return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\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\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\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// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\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};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\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\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\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value; // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\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\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\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\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\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\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}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\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\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n\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\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\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\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\n var requestFocus = this.props.requestFocus;\n\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\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\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\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\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\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\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\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\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n\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\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\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\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n } // Support React < 16 with this hook\n\n\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\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\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\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\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};\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\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// Hooks\n\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\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\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\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\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\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\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\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\n var context = useContext(BaseContext);\n\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\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// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\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\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\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};\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 , 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;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\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\n return obj;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\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 || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\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","self","ReferenceError","__esModule","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_extends","assign","target","i","arguments","length","source","prototype","hasOwnProperty","call","apply","this","setPrototypeOf","subClass","superClass","create","constructor","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","ownKeys","keys","getOwnPropertySymbols","push","filter","sym","forEach","excluded","sourceKeys","indexOf","_setPrototypeOf","o","p","__proto__","Symbol","iterator","ie10","navigator","appVersion","listener","fns","doc","document","hack","documentElement","doScroll","domContentLoaded","loaded","test","readyState","addEventListener","removeEventListener","shift","fn","setTimeout","definition","StyleSheet","options","isSpeedy","undefined","speedy","tags","ctr","nonce","container","before","_proto","insert","rule","_tag","tag","createElement","setAttribute","appendChild","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","e","flush","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","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","U","prefix","use","T","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","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","processStyleName","arg","styleName","toLowerCase","processStyleValue","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","result","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","exec","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","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","isDynamic","sort","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","shallowCompare","obj1","obj2","obj1Keys","every","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","_defineProperty","object","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","_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","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","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","it","size","done","flags","valueOf","$$typeof","error","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","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","getShim","ReactPropTypes","array","bigint","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","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","_breakpoints","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","Placeholder","_Picture$propTypes","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","require","enhanceLunr","lngs","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","unsupportedIterableToArray","supportedPrefetchStrategy","feature","fakeLink","relList","supports","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","_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","_inherits","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","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","_arrayLikeToArray","_inheritsLoose","_unsupportedIterableToArray","minLen"],"sourceRoot":""}