{"version":3,"file":"static/js/main.e271f060.js","mappings":"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M,IACtC2lI,EAAOP,EAAK1kI,OAAS,GAAMV,GAAK,EAAK,IACrC2lI,EAAOP,EAAK1kI,OAAS,GAAMV,GAAK,EAAK,IACrC,IAAIysF,EAAIg5C,EAAQ31D,EAAU61D,GAC1Bv5C,EAAIK,EAAEjnF,MAAM,EAAGggI,GACf,IAAK,IAAIvgI,EAAI,EAAGA,EAAIsG,EAAYtG,IAAK,CACjCwnF,EAAIg5C,EAAQ31D,EAAU2c,GACtB,IAAK,IAAI5gE,EAAI,EAAGA,EAAI25G,EAAW35G,IAC3BugE,EAAEvgE,IAAM4gE,EAAE5gE,EAEjB,CAGD,IAFA,IAAM+5G,GAAW5lI,EAAI,GAAKwlI,EACpBnlI,EAAML,IAAMuE,EAAIL,EAAIshI,EACjBvgI,EAAI,EAAGA,EAAI5E,EAAK4E,IACrBygI,EAAGE,EAAU3gI,GAAKmnF,EAAEnnF,EAE3B,CACD,OAAOygI,CACV,KAnEL,KCPaG,GAAU,CACnB,UACA,UACA,OACA,QACA,QACA,SACA,SACA,WACA,SACA,QACA,SACA,WACA,UACA,SACA,UACA,OACA,WACA,UACA,SACA,MACA,SACA,QACA,UACA,SACA,QACA,MACA,SACA,UACA,SACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,SACA,QACA,MACA,QACA,QACA,QACA,MACA,MACA,UACA,QACA,QACA,QACA,UACA,QACA,QACA,MACA,QACA,QACA,SACA,QACA,QACA,UACA,OACA,QACA,SACA,UACA,UACA,QACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,QACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,UACA,MACA,QACA,UACA,SACA,QACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,MACA,QACA,QACA,OACA,SACA,UACA,SACA,SACA,QACA,MACA,WACA,SACA,UACA,MACA,SACA,UACA,QACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,QACA,SACA,OACA,SACA,OACA,SACA,UACA,UACA,QACA,QACA,QACA,OACA,UACA,QACA,UACA,OACA,OACA,WACA,QACA,QACA,MACA,UACA,UACA,OACA,SACA,SACA,SACA,MACA,SACA,UACA,SACA,OACA,QACA,SACA,SACA,QACA,OACA,SACA,UACA,SACA,OACA,SACA,QACA,SACA,SACA,UACA,QACA,OACA,QACA,UACA,OACA,SACA,SACA,UACA,SACA,UACA,MACA,OACA,OACA,UACA,OACA,QACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,SACA,SACA,SACA,OACA,SACA,SACA,MACA,MACA,UACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,QACA,WACA,SACA,SACA,QACA,UACA,QACA,QACA,SACA,QACA,SACA,UACA,QACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,MACA,WACA,OACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,UACA,UACA,UACA,MACA,SACA,OACA,QACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,SACA,MACA,UACA,QACA,WACA,SACA,SACA,QACA,UACA,OACA,UACA,SACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,WACA,SACA,QACA,UACA,SACA,QACA,OACA,QACA,QACA,SACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,OACA,QACA,QACA,OACA,UACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,UACA,OACA,SACA,OACA,OACA,UACA,QACA,SACA,UACA,OACA,UACA,QACA,SACA,UACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,SACA,UACA,SACA,QACA,MACA,UACA,OACA,UACA,MACA,WACA,UACA,UACA,UACA,QACA,UACA,SACA,OACA,QACA,MACA,SACA,OACA,QACA,SACA,SACA,OACA,WACA,OACA,MACA,OACA,SACA,SACA,SACA,WACA,SACA,UACA,WACA,WACA,OACA,UACA,SACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,SACA,SACA,OACA,UACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,OACA,UACA,QACA,OACA,SACA,OACA,SACA,UACA,UACA,UACA,SACA,WACA,SACA,OACA,WACA,WACA,UACA,OACA,UACA,WACA,UACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,MACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,OACA,SACA,OACA,QACA,SACA,QACA,UACA,OACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,SACA,OACA,QACA,OACA,QACA,UACA,QACA,QACA,QACA,OACA,QACA,SACA,OACA,OACA,OACA,UACA,UACA,OACA,OACA,UACA,SACA,MACA,QACA,SACA,QACA,QACA,WACA,UACA,UACA,WACA,WACA,QACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,QACA,MACA,UACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,WACA,UACA,QACA,QACA,MACA,QACA,QACA,UACA,QACA,QACA,SACA,QACA,UACA,SACA,UACA,SACA,WACA,OACA,QACA,SACA,QACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,QACA,MACA,UACA,SACA,OACA,UACA,OACA,QACA,QACA,OACA,QACA,OACA,SACA,SACA,MACA,QACA,UACA,OACA,UACA,MACA,QACA,SACA,UACA,QACA,WACA,UACA,WACA,UACA,MACA,OACA,OACA,SACA,QACA,WACA,QACA,QACA,MACA,QACA,UACA,QACA,SACA,OACA,OACA,SACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,QACA,SACA,OACA,MACA,UACA,MACA,OACA,QACA,QACA,OACA,SACA,OACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,MACA,OACA,QACA,MACA,OACA,OACA,SACA,OACA,OACA,QACA,SACA,SACA,OACA,UACA,QACA,UACA,SACA,SACA,QACA,MACA,UACA,QACA,WACA,QACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,OACA,MACA,QACA,UACA,OACA,SACA,SACA,OACA,SACA,UACA,OACA,MACA,SACA,UACA,SACA,SACA,UACA,MACA,OACA,OACA,SACA,QACA,OACA,UACA,SACA,QACA,SACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,UACA,OACA,OACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,UACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,MACA,MACA,QACA,OACA,OACA,SACA,UACA,OACA,QACA,SACA,OACA,QACA,UACA,MACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,WACA,SACA,QACA,SACA,OACA,MACA,OACA,SACA,OACA,OACA,OACA,MACA,OACA,UACA,QACA,SACA,OACA,OACA,UACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,QACA,WACA,OACA,QACA,OACA,QACA,MACA,OACA,QACA,SACA,QACA,UACA,SACA,OACA,SACA,QACA,OACA,UACA,SACA,MACA,OACA,OACA,WACA,OACA,SACA,MACA,UACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,UACA,UACA,OACA,UACA,SACA,WACA,QACA,WACA,SACA,WACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,QACA,WACA,QACA,UACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,UACA,QACA,OACA,QACA,SACA,SACA,MACA,OACA,UACA,QACA,QACA,QACA,MACA,OACA,OACA,UACA,MACA,QACA,QACA,OACA,SACA,SACA,OACA,OACA,WACA,OACA,OACA,UACA,MACA,OACA,MACA,SACA,OACA,UACA,OACA,MACA,UACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,MACA,QACA,QACA,SACA,OACA,OACA,OACA,WACA,SACA,QACA,QACA,QACA,QACA,UACA,OACA,MACA,OACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,UACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,UACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,SACA,OACA,SACA,OACA,SACA,OACA,OACA,UACA,QACA,OACA,QACA,SACA,OACA,OACA,UACA,OACA,SACA,OACA,QACA,QACA,UACA,SACA,QACA,QACA,SACA,SACA,UACA,MACA,QACA,SACA,OACA,OACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,QACA,UACA,SACA,QACA,SACA,QACA,SACA,SACA,SACA,WACA,OACA,OACA,SACA,QACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,QACA,QACA,SACA,OACA,SACA,SACA,UACA,OACA,QACA,QACA,QACA,QACA,OACA,UACA,QACA,SACA,SACA,WACA,OACA,UACA,QACA,OACA,UACA,QACA,SACA,UACA,SACA,SACA,OACA,UACA,MACA,QACA,UACA,SACA,QACA,SACA,MACA,SACA,UACA,SACA,UACA,QACA,OACA,QACA,OACA,UACA,WACA,SACA,SACA,QACA,WACA,QACA,OACA,QACA,OACA,SACA,OACA,WACA,SACA,SACA,WACA,QACA,OACA,SACA,SACA,UACA,OACA,QACA,OACA,SACA,SACA,QACA,SACA,SACA,OACA,OACA,OACA,WACA,UACA,UACA,SACA,QACA,OACA,MACA,UACA,UACA,QACA,OACA,OACA,OACA,QACA,QACA,QACA,UACA,SACA,SACA,QACA,OACA,UACA,OACA,UACA,SACA,QACA,MACA,UACA,SACA,QACA,MACA,MACA,OACA,SACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,QACA,MACA,OACA,MACA,QACA,UACA,OACA,OACA,MACA,QACA,SACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,QACA,SACA,WACA,SACA,UACA,QACA,UACA,QACA,SACA,UACA,OACA,OACA,OACA,MACA,QACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,SACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,SACA,UACA,QACA,OACA,UACA,QACA,SACA,OACA,UACA,UACA,MACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,MACA,QACA,QACA,SACA,WACA,QACA,SACA,UACA,QACA,MACA,SACA,OACA,QACA,OACA,UACA,OACA,SACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,OACA,OACA,UACA,UACA,WACA,WACA,OACA,SACA,UACA,UACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,UACA,UACA,UACA,SACA,UACA,UACA,UACA,QACA,WACA,UACA,UACA,QACA,UACA,SACA,UACA,OACA,OACA,QACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,QACA,OACA,MACA,SACA,UACA,UACA,UACA,UACA,WACA,QACA,OACA,OACA,QACA,SACA,UACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,OACA,OACA,SACA,QACA,MACA,QACA,QACA,OACA,SACA,QACA,UACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,OACA,SACA,WACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,WACA,SACA,WACA,WACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,MACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,UACA,OACA,SACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,MACA,SACA,UACA,OACA,OACA,QACA,SACA,QACA,OACA,SACA,OACA,SACA,OACA,UACA,UACA,QACA,UACA,OACA,MACA,QACA,OACA,QACA,UACA,QACA,SACA,SACA,UACA,WACA,WACA,QACA,QACA,SACA,SACA,QACA,MACA,SACA,SACA,OACA,SACA,SACA,UACA,WACA,OACA,OACA,UACA,SACA,OACA,UACA,SACA,QACA,WACA,SACA,UACA,UACA,SACA,QACA,QACA,SACA,QACA,UACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,QACA,WACA,QACA,SACA,QACA,UACA,MACA,UACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,QACA,SACA,UACA,SACA,QACA,OACA,QACA,SACA,UACA,MACA,OACA,QACA,SACA,MACA,QACA,OACA,QACA,QACA,OACA,OACA,QACA,UACA,QACA,QACA,SACA,OACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,OACA,QACA,UACA,QACA,WACA,QACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,UACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,OACA,SACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,SACA,SACA,MACA,SACA,UACA,WACA,SACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,WACA,SACA,SACA,SACA,WACA,UACA,QACA,UACA,QACA,UACA,SACA,SACA,UACA,OACA,SACA,SACA,QACA,UACA,OACA,SACA,MACA,QACA,SACA,QACA,SACA,UACA,OACA,UACA,QACA,WACA,WACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,QACA,SACA,UACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,OACA,OACA,OACA,SACA,OACA,QACA,SACA,OACA,QACA,OACA,OACA,MACA,SACA,SACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,QACA,SACA,QACA,QACA,UACA,SACA,OACA,QACA,OACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,QACA,UACA,QACA,UACA,MACA,WACA,SACA,QACA,SACA,WACA,OACA,SACA,UACA,OACA,QACA,MACA,QACA,SACA,QACA,UACA,WACA,OACA,QACA,UACA,SACA,QACA,OACA,MACA,QACA,QACA,UACA,SACA,QACA,WACA,OACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,UACA,OACA,OACA,SACA,UACA,QACA,OACA,QACA,UACA,QACA,QACA,MACA,OACA,UACA,SACA,OACA,SACA,SACA,OACA,SACA,SACA,SACA,QACA,OACA,QACA,MACA,OACA,UACA,OACA,WACA,SACA,UACA,QACA,UACA,QACA,OACA,SACA,SACA,UACA,UACA,SACA,OACA,WACA,UACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,OACA,QACA,QACA,QACA,OACA,QACA,MACA,OACA,SACA,UACA,QACA,UACA,SACA,SACA,QACA,QACA,SACA,QACA,MACA,SACA,QACA,UACA,OACA,QACA,UACA,SACA,SACA,UACA,QACA,OACA,SACA,UACA,OACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,UACA,UACA,SACA,UACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,QACA,OACA,UACA,SACA,OACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,OACA,UACA,OACA,UACA,OACA,OACA,QACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,UACA,MACA,UACA,UACA,QACA,UACA,OACA,MACA,QACA,OACA,QACA,QACA,OACA,QACA,OACA,UACA,OACA,QACA,OACA,OACA,OACA,MACA,SACA,OACA,OACA,OACA,SACA,SACA,OACA,SACA,OACA,OACA,UACA,OACA,QACA,SACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,QACA,UACA,QACA,QACA,QACA,OACA,OACA,SACA,MACA,QACA,QACA,QACA,OACA,OACA,OCz/DSC,GAAb,8EAMI,SAAmBC,GAAiC,IAAnBC,EA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","sources":["../node_modules/add-event-listener/index.js","../node_modules/base64-js/index.js","../node_modules/big-integer/BigInteger.js","../node_modules/buffer/index.js","../node_modules/classnames/index.js","../node_modules/gintersect/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/humanize-duration/humanize-duration.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/moment/moment.js","../node_modules/ngraph.centrality/index.js","../node_modules/ngraph.centrality/src/betweenness.js","../node_modules/ngraph.centrality/src/closeness.js","../node_modules/ngraph.centrality/src/degree.js","../node_modules/ngraph.centrality/src/eccentricity.js","../node_modules/ngraph.events/index.js","../node_modules/ngraph.expose/index.js","../node_modules/ngraph.forcelayout/index.js","../node_modules/ngraph.forcelayout/node_modules/ngraph.events/index.js","../node_modules/ngraph.fromjson/index.js","../node_modules/ngraph.generators/index.js","../node_modules/ngraph.generators/node_modules/ngraph.random/index.js","../node_modules/ngraph.graph/index.js","../node_modules/ngraph.merge/index.js","../node_modules/ngraph.physics.primitives/index.js","../node_modules/ngraph.physics.simulator/index.js","../node_modules/ngraph.physics.simulator/lib/bounds.js","../node_modules/ngraph.physics.simulator/lib/createBody.js","../node_modules/ngraph.physics.simulator/lib/dragForce.js","../node_modules/ngraph.physics.simulator/lib/eulerIntegrator.js","../node_modules/ngraph.physics.simulator/lib/spring.js","../node_modules/ngraph.physics.simulator/lib/springForce.js","../node_modules/ngraph.quadtreebh/index.js","../node_modules/ngraph.quadtreebh/insertStack.js","../node_modules/ngraph.quadtreebh/isSamePosition.js","../node_modules/ngraph.quadtreebh/node.js","../node_modules/ngraph.random/index.js","../node_modules/ngraph.tojson/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/simplesvg/index.js","../node_modules/simplesvg/lib/compile.js","../node_modules/simplesvg/lib/compile_template.js","../node_modules/simplesvg/lib/domparser.js","../node_modules/vivagraphjs/src/Algorithms/centrality.js","../node_modules/vivagraphjs/src/Algorithms/operations.js","../node_modules/vivagraphjs/src/Input/domInputManager.js","../node_modules/vivagraphjs/src/Input/dragndrop.js","../node_modules/vivagraphjs/src/Input/webglInputManager.js","../node_modules/vivagraphjs/src/Layout/constant.js","../node_modules/vivagraphjs/src/Utils/backwardCompatibleEvents.js","../node_modules/vivagraphjs/src/Utils/browserInfo.js","../node_modules/vivagraphjs/src/Utils/documentEvents.js","../node_modules/vivagraphjs/src/Utils/findElementPosition.js","../node_modules/vivagraphjs/src/Utils/getDimensions.js","../node_modules/vivagraphjs/src/Utils/intersectRect.js","../node_modules/vivagraphjs/src/Utils/nullEvents.js","../node_modules/vivagraphjs/src/Utils/rect.js","../node_modules/vivagraphjs/src/Utils/timer.js","../node_modules/vivagraphjs/src/Utils/windowEvents.js","../node_modules/vivagraphjs/src/View/renderer.js","../node_modules/vivagraphjs/src/View/svgGraphics.js","../node_modules/vivagraphjs/src/View/webglGraphics.js","../node_modules/vivagraphjs/src/WebGL/parseColor.js","../node_modules/vivagraphjs/src/WebGL/texture.js","../node_modules/vivagraphjs/src/WebGL/webgl.js","../node_modules/vivagraphjs/src/WebGL/webglAtlas.js","../node_modules/vivagraphjs/src/WebGL/webglImage.js","../node_modules/vivagraphjs/src/WebGL/webglImageNodeProgram.js","../node_modules/vivagraphjs/src/WebGL/webglInputEvents.js","../node_modules/vivagraphjs/src/WebGL/webglLine.js","../node_modules/vivagraphjs/src/WebGL/webglLinkProgram.js","../node_modules/vivagraphjs/src/WebGL/webglNodeProgram.js","../node_modules/vivagraphjs/src/WebGL/webglSquare.js","../node_modules/vivagraphjs/src/version.js","../node_modules/vivagraphjs/src/viva.js","assets|lazy|/^/.//.*//banner/.svg$/|groupOptions: {}|namespace object","assets|lazy|/^/.//.*//logo/-navigation/.svg$/|groupOptions: {}|namespace object","assets|sync|/^/.//.*//brand/.json$","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/react-router/node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","assets/explorer.svg","assets/home.svg","assets/moon.svg","assets/padlock-unlocked.svg","assets/padlock.svg","assets/peers.svg","assets/plugins.svg","assets/sun.svg","assets/visualizer.svg","models/websocket/webSocketTopic.ts","factories/serviceFactory.ts","services/eventAggregator.ts","utils/brandHelper.ts","app/components/layout/AsyncComponent.tsx","app/components/layout/Breakpoint.tsx","../node_modules/@iota/crypto.js/dist/esm/address/bech32.mjs","../node_modules/@iota/crypto.js/dist/esm/encoding/b1t6.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/blake2b.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/curl.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha1.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha256.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha512.mjs","../node_modules/@iota/util.js/dist/esm/utils/randomHelper.mjs","../node_modules/@iota/util.js/dist/esm/polyfill-browser.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base32.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base58.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base64.mjs","../node_modules/@iota/util.js/dist/esm/utils/hexHelper.mjs","../node_modules/@iota/util.js/dist/esm/utils/converter.mjs","../node_modules/@iota/util.js/dist/esm/utils/bigIntHelper.mjs","../node_modules/@iota/util.js/dist/esm/utils/readStream.mjs","../node_modules/@iota/util.js/dist/esm/utils/writeStream.mjs","../node_modules/@iota/crypto.js/dist/esm/macs/hmacSha256.mjs","../node_modules/@iota/crypto.js/dist/esm/macs/hmacSha512.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/pbkdf2.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/wordlists/english.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/bip39.mjs","../node_modules/@iota/crypto.js/dist/esm/utils/arrayHelper.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/bigIntCommon.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/fieldElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/cachedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/completedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/preComputedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/const.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/projectiveGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/extendedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/scalar.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/ed25519.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/slip0010.mjs","../node_modules/@iota/crypto.js/dist/esm/utils/powHelper.mjs","../node_modules/@iota/iota.js/dist/esm/addressTypes/ed25519Address.mjs","../node_modules/@iota/iota.js/dist/esm/models/addresses/IAliasAddress.mjs","../node_modules/@iota/iota.js/dist/esm/models/addresses/INftAddress.mjs","../node_modules/@iota/iota.js/dist/esm/binary/commonDataTypes.mjs","../node_modules/@iota/iota.js/dist/esm/binary/addresses/aliasAddress.mjs","../node_modules/@iota/iota.js/dist/esm/binary/addresses/ed25519Address.mjs","../node_modules/@iota/iota.js/dist/esm/binary/addresses/nftAddress.mjs","../node_modules/@iota/iota.js/dist/esm/binary/addresses/addresses.mjs","../node_modules/@iota/iota.js/dist/esm/models/addresses/IEd25519Address.mjs","../node_modules/@iota/iota.js/dist/esm/models/features/IIssuerFeature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/features/issuerFeature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/features/senderFeature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/features/features.mjs","../node_modules/@iota/iota.js/dist/esm/binary/features/metadataFeature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/features/tagFeature.mjs","../node_modules/@iota/iota.js/dist/esm/models/features/ISenderFeature.mjs","../node_modules/@iota/iota.js/dist/esm/models/features/IMetadataFeature.mjs","../node_modules/@iota/iota.js/dist/esm/models/features/ITagFeature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/funds.mjs","../node_modules/@iota/iota.js/dist/esm/models/inputs/ITreasuryInput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/inputs/treasuryInput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/inputs/utxoInput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/inputs/inputs.mjs","../node_modules/@iota/iota.js/dist/esm/models/inputs/IUTXOInput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/milestoneOptions/receiptMilestoneOption.mjs","../node_modules/@iota/iota.js/dist/esm/models/milestoneOptions/IReceiptMilestoneOption.mjs","../node_modules/@iota/iota.js/dist/esm/models/payloads/ITreasuryTransactionPayload.mjs","../node_modules/@iota/iota.js/dist/esm/binary/milestoneOptions/milestoneOptions.mjs","../node_modules/@iota/iota.js/dist/esm/binary/milestoneOptions/protocolParamsMilestoneOption.mjs","../node_modules/@iota/iota.js/dist/esm/models/milestoneOptions/IProtocolParamsMilestoneOption.mjs","../node_modules/@iota/iota.js/dist/esm/models/signatures/IEd25519Signature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/signatures/ed25519Signature.mjs","../node_modules/@iota/iota.js/dist/esm/binary/signatures/signatures.mjs","../node_modules/@iota/iota.js/dist/esm/binary/payloads/milestonePayload.mjs","../node_modules/@iota/iota.js/dist/esm/models/payloads/IMilestonePayload.mjs","../node_modules/@iota/iota.js/dist/esm/models/ITransactionEssence.mjs","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@iota/iota.js/dist/esm/binary/nativeTokens.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IAddressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/addressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/expirationUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/immutableAliasUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/governorAddressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/stateControllerAddressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/storageDepositReturnUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/unlockConditions.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlockConditions/timelockUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IStorageDepositReturnUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/ITimelockUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IExpirationUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IStateControllerAddressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IGovernorAddressUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlockConditions/IImmutableAliasUnlockCondition.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/basicOutput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/tokenSchemes/tokenSchemes.mjs","../node_modules/@iota/iota.js/dist/esm/binary/tokenSchemes/simpleTokenScheme.mjs","../node_modules/@iota/iota.js/dist/esm/models/tokenSchemes/ISimpleTokenScheme.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/nftOutput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/treasuryOutput.mjs","../node_modules/@iota/iota.js/dist/esm/models/outputs/ITreasuryOutput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/outputs.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/foundryOutput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/outputs/aliasOutput.mjs","../node_modules/@iota/iota.js/dist/esm/models/outputs/IBasicOutput.mjs","../node_modules/@iota/iota.js/dist/esm/models/outputs/IFoundryOutput.mjs","../node_modules/@iota/iota.js/dist/esm/models/outputs/INftOutput.mjs","../node_modules/@iota/iota.js/dist/esm/models/outputs/IAliasOutput.mjs","../node_modules/@iota/iota.js/dist/esm/binary/transactionEssence.mjs","../node_modules/@iota/iota.js/dist/esm/models/payloads/ITaggedDataPayload.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlocks/signatureUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlocks/unlocks.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlocks/referenceUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlocks/aliasUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/binary/unlocks/nftUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlocks/ISignatureUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlocks/IReferenceUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlocks/IAliasUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/models/unlocks/INftUnlock.mjs","../node_modules/@iota/iota.js/dist/esm/binary/payloads/transactionPayload.mjs","../node_modules/@iota/iota.js/dist/esm/models/payloads/ITransactionPayload.mjs","../node_modules/@iota/iota.js/dist/esm/binary/payloads/treasuryTransactionPayload.mjs","../node_modules/@iota/iota.js/dist/esm/binary/payloads/payloads.mjs","../node_modules/@iota/iota.js/dist/esm/binary/payloads/taggedDataPayload.mjs","../node_modules/@iota/iota.js/dist/esm/binary/block.mjs","../node_modules/@iota/iota.js/dist/esm/models/IBlock.mjs","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@iota/iota.js/dist/esm/clients/clientError.mjs","../node_modules/@iota/iota.js/dist/esm/clients/singleNodeClient.mjs","../node_modules/@iota/iota.js/dist/esm/clients/plugins/indexerPluginClient.mjs","../node_modules/@iota/iota.js/dist/esm/utils/bech32Helper.mjs","../node_modules/@iota/iota.js/dist/esm/models/conflictReason.mjs","../node_modules/@iota/iota.js/dist/esm/resources/conflictReasonStrings.mjs","../node_modules/@iota/iota.js/dist/esm/utils/milestoneHelper.mjs","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@iota/iota.js/dist/esm/utils/transactionHelper.mjs","../node_modules/@iota/iota.js/dist/esm/utils/unitsHelper.mjs","utils/formatHelper.ts","assets/health-bad.svg","assets/health-good.svg","assets/search.svg","app/components/layout/HealthIndicator.tsx","app/components/layout/MicroGraph.tsx","assets/confirmation.svg","app/components/layout/SearchInput.tsx","app/components/layout/Header.tsx","app/components/layout/NavMenu.tsx","app/components/layout/NavPanel.tsx","assets/milestone.svg","assets/uptime.svg","assets/chevron-left.svg","app/components/layout/Tooltip.tsx","app/components/layout/InfoPanel.tsx","app/routes/Explorer.tsx","models/tangle/IAssociatedOutputsResponse.ts","utils/bech32AddressHelper.ts","assets/copy.svg","utils/nameHelper.ts","utils/clipboardHelper.ts","assets/dropdown-arrow.svg","app/components/layout/BlockButton.tsx","app/components/tangle/Bech32Address.tsx","app/components/tangle/Feature.tsx","app/components/tangle/Token.tsx","app/components/tangle/UnlockCondition.tsx","app/components/tangle/Output.tsx","app/components/layout/Pagination.tsx","assets/chevron-down.svg","app/components/layout/Spinner.tsx","app/components/tangle/Outputs.tsx","app/routes/explorer/Address.tsx","assets/download.svg","assets/chevron-right.svg","utils/downloadHelper.ts","app/components/tangle/BlockTangleState.tsx","app/components/tangle/InclusionState.tsx","app/components/tangle/ProtocolParamsMilestonOption.tsx","app/components/tangle/MigratedFund.tsx","app/components/tangle/ReceiptMilestoneOption.tsx","app/components/tangle/MilestonePayload.tsx","app/components/tangle/TaggedDataPayload.tsx","app/components/tangle/TransactionPayload.tsx","app/routes/explorer/Block.tsx","assets/banner-curve.svg","app/routes/explorer/Milestone.tsx","app/routes/explorer/OutputRoute.tsx","app/routes/explorer/OutputsRoute.tsx","assets/db-icon.svg","assets/memory.svg","assets/pruning.svg","assets/eye-closed.svg","app/components/layout/Graph.tsx","assets/eye.svg","assets/health-warning.svg","utils/dataHelper.ts","app/components/tangle/PeersSummaryPanel.tsx","app/routes/Home.tsx","app/routes/Login.tsx","app/routes/Peer.tsx","app/components/layout/Dialog.tsx","app/routes/Peers.tsx","app/components/layout/TabPanel.tsx","utils/fetchHelper.ts","app/components/plugins/Participation.tsx","assets/upload.svg","app/components/plugins/ProofOfInclusion.tsx","assets/toggle.svg","app/components/layout/ToggleButton.tsx","app/components/plugins/Spammer.tsx","assets/close.svg","app/routes/Plugins.tsx","app/routes/Search.tsx","app/routes/Unavailable.tsx","assets/pause.svg","assets/play.svg","app/routes/Visualizer.tsx","app/App.tsx","services/authService.ts","services/localStorageService.ts","services/metricsService.ts","services/nodeConfigService.ts","services/pluginService.ts","services/sessionStorageService.ts","services/settingsService.ts","utils/outputsHelper.ts","utils/searchQueryBuilder.ts","services/tangleService.ts","services/themeService.ts","services/visualizerService.ts","services/webSocketService.ts","index.tsx"],"sourcesContent":["addEventListener.removeEventListener = removeEventListener\naddEventListener.addEventListener = addEventListener\n\nmodule.exports = addEventListener\n\nvar Events = null\n\nfunction addEventListener(el, eventName, listener, useCapture) {\n Events = Events || (\n document.addEventListener ?\n {add: stdAttach, rm: stdDetach} :\n {add: oldIEAttach, rm: oldIEDetach}\n )\n \n return Events.add(el, eventName, listener, useCapture)\n}\n\nfunction removeEventListener(el, eventName, listener, useCapture) {\n Events = Events || (\n document.addEventListener ?\n {add: stdAttach, rm: stdDetach} :\n {add: oldIEAttach, rm: oldIEDetach}\n )\n \n return Events.rm(el, eventName, listener, useCapture)\n}\n\nfunction stdAttach(el, eventName, listener, useCapture) {\n el.addEventListener(eventName, listener, useCapture)\n}\n\nfunction stdDetach(el, eventName, listener, useCapture) {\n el.removeEventListener(eventName, listener, useCapture)\n}\n\nfunction oldIEAttach(el, eventName, listener, useCapture) {\n if(useCapture) {\n throw new Error('cannot useCapture in oldIE')\n }\n\n el.attachEvent('on' + eventName, listener)\n}\n\nfunction oldIEDetach(el, eventName, listener, useCapture) {\n el.detachEvent('on' + eventName, listener)\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] + (i + 1 < digits.length ? digits[i + 1] / BASE : 0) : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < digits[i]) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","module.exports = intersect;\n\n/**\n * Original authors: Mukesh Prasad, Appeared in Graphics Gem II book\n * http://www.opensource.apple.com/source/graphviz/graphviz-498/graphviz/dynagraph/common/xlines.c\n * and adopted to javascript version by Andrei Kashcha.\n *\n * This function computes whether two line segments,\n * respectively joining the input points (x1,y1) -- (x2,y2)\n * and the input points (x3,y3) -- (x4,y4) intersect.\n * If the lines intersect, the output variables x, y are\n * set to coordinates of the point of intersection.\n *\n * @param {Number} x1 First line segment coordinates\n * @param {Number} y1 First line segment coordinates\n * @param {Number} x2 First line segment coordinates\n * @param {Number} x2 First line segment coordinates\n *\n * @param {Number} x3 Second line segment coordinates\n * @param {Number} y3 Second line segment coordinates\n * @param {Number} x4 Second line segment coordinates\n * @param {Number} x4 Second line segment coordinates\n *\n * @return {Object} x, y coordinates of intersection point or falsy value if no\n * intersection found..\n */\nfunction intersect(\n x1, y1, x2, y2, // first line segment\n x3, y3, x4, y4 // second line segment\n) {\n\n var a1, a2, b1, b2, c1, c2, /* Coefficients of line eqns. */\n r1, r2, r3, r4, /* 'Sign' values */\n denom, offset, num, /* Intermediate values */\n result = {\n x: 0,\n y: 0\n };\n\n /* Compute a1, b1, c1, where line joining points 1 and 2\n * is \"a1 x + b1 y + c1 = 0\".\n */\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2;\n\n /* Compute r3 and r4.\n */\n r3 = a1 * x3 + b1 * y3 + c1;\n r4 = a1 * x4 + b1 * y4 + c1;\n\n /* Check signs of r3 and r4. If both point 3 and point 4 lie on\n * same side of line 1, the line segments do not intersect.\n */\n\n if (r3 !== 0 && r4 !== 0 && ((r3 >= 0) === (r4 >= 4))) {\n return null; //no intersection.\n }\n\n /* Compute a2, b2, c2 */\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4;\n\n /* Compute r1 and r2 */\n\n r1 = a2 * x1 + b2 * y1 + c2;\n r2 = a2 * x2 + b2 * y2 + c2;\n\n /* Check signs of r1 and r2. If both point 1 and point 2 lie\n * on same side of second line segment, the line segments do\n * not intersect.\n */\n if (r1 !== 0 && r2 !== 0 && ((r1 >= 0) === (r2 >= 0))) {\n return null; // no intersection;\n }\n /* Line segments intersect: compute intersection point.\n */\n\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return null; // Actually collinear..\n }\n\n offset = denom < 0 ? -denom / 2 : denom / 2;\n offset = 0.0;\n\n /* The denom/2 is to get rounding instead of truncating. It\n * is added or subtracted to the numerator, depending upon the\n * sign of the numerator.\n */\n num = b1 * c2 - b2 * c1;\n result.x = (num < 0 ? num - offset : num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n result.y = (num < 0 ? num - offset : num + offset) / denom;\n\n return result;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","// HumanizeDuration.js - https://git.io/j0HgmQ\n\n/* global define, module */\n\n(function () {\n // This has to be defined separately because of a bug: we want to alias\n // `gr` and `el` for backwards-compatiblity. In a breaking change, we can\n // remove `gr` entirely.\n // See https://github.com/EvanHahn/HumanizeDuration.js/issues/143 for more.\n var greek = {\n y: function (c) {\n return c === 1 ? \"χρόνος\" : \"χρόνια\";\n },\n mo: function (c) {\n return c === 1 ? \"μήνας\" : \"μήνες\";\n },\n w: function (c) {\n return c === 1 ? \"εβδομάδα\" : \"εβδομάδες\";\n },\n d: function (c) {\n return c === 1 ? \"μέρα\" : \"μέρες\";\n },\n h: function (c) {\n return c === 1 ? \"ώρα\" : \"ώρες\";\n },\n m: function (c) {\n return c === 1 ? \"λεπτό\" : \"λεπτά\";\n },\n s: function (c) {\n return c === 1 ? \"δευτερόλεπτο\" : \"δευτερόλεπτα\";\n },\n ms: function (c) {\n return (c === 1 ? \"χιλιοστό\" : \"χιλιοστά\") + \" του δευτερολέπτου\";\n },\n decimal: \",\"\n };\n\n var ARABIC_DIGITS = [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\n\n var LANGUAGES = {\n af: {\n y: \"jaar\",\n mo: function (c) {\n return \"maand\" + (c === 1 ? \"\" : \"e\");\n },\n w: function (c) {\n return c === 1 ? \"week\" : \"weke\";\n },\n d: function (c) {\n return c === 1 ? \"dag\" : \"dae\";\n },\n h: function (c) {\n return c === 1 ? \"uur\" : \"ure\";\n },\n m: function (c) {\n return c === 1 ? \"minuut\" : \"minute\";\n },\n s: function (c) {\n return \"sekonde\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"millisekonde\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n ar: {\n y: function (c) {\n return [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(c)];\n },\n mo: function (c) {\n return [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(c)];\n },\n w: function (c) {\n return [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(c)];\n },\n d: function (c) {\n return [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(c)];\n },\n h: function (c) {\n return [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(c)];\n },\n m: function (c) {\n return [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(c)];\n },\n s: function (c) {\n return [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(c)];\n },\n ms: function (c) {\n return [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][\n getArabicForm(c)\n ];\n },\n decimal: \",\",\n delimiter: \" و \",\n _formatCount: function (count, decimal) {\n var replacements = assign(ARABIC_DIGITS, { \".\": decimal });\n var characters = count.toString().split(\"\");\n for (var i = 0; i < characters.length; i++) {\n var character = characters[i];\n if (has(replacements, character)) {\n characters[i] = replacements[character];\n }\n }\n return characters.join(\"\");\n }\n },\n bg: {\n y: function (c) {\n return [\"години\", \"година\", \"години\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дни\", \"ден\", \"дни\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"часа\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минути\", \"минута\", \"минути\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n bn: {\n y: \"বছর\",\n mo: \"মাস\",\n w: \"সপ্তাহ\",\n d: \"দিন\",\n h: \"ঘন্টা\",\n m: \"মিনিট\",\n s: \"সেকেন্ড\",\n ms: \"মিলিসেকেন্ড\"\n },\n ca: {\n y: function (c) {\n return \"any\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"os\");\n },\n w: function (c) {\n return \"setman\" + (c === 1 ? \"a\" : \"es\");\n },\n d: function (c) {\n return \"di\" + (c === 1 ? \"a\" : \"es\");\n },\n h: function (c) {\n return \"hor\" + (c === 1 ? \"a\" : \"es\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segon\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milisegon\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n cs: {\n y: function (c) {\n return [\"rok\", \"roku\", \"roky\", \"let\"][getCzechOrSlovakForm(c)];\n },\n mo: function (c) {\n return [\"měsíc\", \"měsíce\", \"měsíce\", \"měsíců\"][getCzechOrSlovakForm(c)];\n },\n w: function (c) {\n return [\"týden\", \"týdne\", \"týdny\", \"týdnů\"][getCzechOrSlovakForm(c)];\n },\n d: function (c) {\n return [\"den\", \"dne\", \"dny\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n h: function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodin\"][getCzechOrSlovakForm(c)];\n },\n m: function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getCzechOrSlovakForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n decimal: \",\"\n },\n cy: {\n y: \"flwyddyn\",\n mo: \"mis\",\n w: \"wythnos\",\n d: \"diwrnod\",\n h: \"awr\",\n m: \"munud\",\n s: \"eiliad\",\n ms: \"milieiliad\"\n },\n da: {\n y: \"år\",\n mo: function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"uge\" + (c === 1 ? \"\" : \"r\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"e\");\n },\n h: function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"ter\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n de: {\n y: function (c) {\n return \"Jahr\" + (c === 1 ? \"\" : \"e\");\n },\n mo: function (c) {\n return \"Monat\" + (c === 1 ? \"\" : \"e\");\n },\n w: function (c) {\n return \"Woche\" + (c === 1 ? \"\" : \"n\");\n },\n d: function (c) {\n return \"Tag\" + (c === 1 ? \"\" : \"e\");\n },\n h: function (c) {\n return \"Stunde\" + (c === 1 ? \"\" : \"n\");\n },\n m: function (c) {\n return \"Minute\" + (c === 1 ? \"\" : \"n\");\n },\n s: function (c) {\n return \"Sekunde\" + (c === 1 ? \"\" : \"n\");\n },\n ms: function (c) {\n return \"Millisekunde\" + (c === 1 ? \"\" : \"n\");\n },\n decimal: \",\"\n },\n el: greek,\n en: {\n y: function (c) {\n return \"year\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"month\" + (c === 1 ? \"\" : \"s\");\n },\n w: function (c) {\n return \"week\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"day\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hour\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minute\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"second\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"millisecond\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \".\"\n },\n eo: {\n y: function (c) {\n return \"jaro\" + (c === 1 ? \"\" : \"j\");\n },\n mo: function (c) {\n return \"monato\" + (c === 1 ? \"\" : \"j\");\n },\n w: function (c) {\n return \"semajno\" + (c === 1 ? \"\" : \"j\");\n },\n d: function (c) {\n return \"tago\" + (c === 1 ? \"\" : \"j\");\n },\n h: function (c) {\n return \"horo\" + (c === 1 ? \"\" : \"j\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"j\");\n },\n s: function (c) {\n return \"sekundo\" + (c === 1 ? \"\" : \"j\");\n },\n ms: function (c) {\n return \"milisekundo\" + (c === 1 ? \"\" : \"j\");\n },\n decimal: \",\"\n },\n es: {\n y: function (c) {\n return \"año\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"es\");\n },\n w: function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"día\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milisegundo\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n et: {\n y: function (c) {\n return \"aasta\" + (c === 1 ? \"\" : \"t\");\n },\n mo: function (c) {\n return \"kuu\" + (c === 1 ? \"\" : \"d\");\n },\n w: function (c) {\n return \"nädal\" + (c === 1 ? \"\" : \"at\");\n },\n d: function (c) {\n return \"päev\" + (c === 1 ? \"\" : \"a\");\n },\n h: function (c) {\n return \"tund\" + (c === 1 ? \"\" : \"i\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"it\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"it\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"it\");\n },\n decimal: \",\"\n },\n eu: {\n y: \"urte\",\n mo: \"hilabete\",\n w: \"aste\",\n d: \"egun\",\n h: \"ordu\",\n m: \"minutu\",\n s: \"segundo\",\n ms: \"milisegundo\",\n decimal: \",\"\n },\n fa: {\n y: \"سال\",\n mo: \"ماه\",\n w: \"هفته\",\n d: \"روز\",\n h: \"ساعت\",\n m: \"دقیقه\",\n s: \"ثانیه\",\n ms: \"میلی ثانیه\",\n decimal: \".\"\n },\n fi: {\n y: function (c) {\n return c === 1 ? \"vuosi\" : \"vuotta\";\n },\n mo: function (c) {\n return c === 1 ? \"kuukausi\" : \"kuukautta\";\n },\n w: function (c) {\n return \"viikko\" + (c === 1 ? \"\" : \"a\");\n },\n d: function (c) {\n return \"päivä\" + (c === 1 ? \"\" : \"ä\");\n },\n h: function (c) {\n return \"tunti\" + (c === 1 ? \"\" : \"a\");\n },\n m: function (c) {\n return \"minuutti\" + (c === 1 ? \"\" : \"a\");\n },\n s: function (c) {\n return \"sekunti\" + (c === 1 ? \"\" : \"a\");\n },\n ms: function (c) {\n return \"millisekunti\" + (c === 1 ? \"\" : \"a\");\n },\n decimal: \",\"\n },\n fo: {\n y: \"ár\",\n mo: function (c) {\n return c === 1 ? \"mánaður\" : \"mánaðir\";\n },\n w: function (c) {\n return c === 1 ? \"vika\" : \"vikur\";\n },\n d: function (c) {\n return c === 1 ? \"dagur\" : \"dagar\";\n },\n h: function (c) {\n return c === 1 ? \"tími\" : \"tímar\";\n },\n m: function (c) {\n return c === 1 ? \"minuttur\" : \"minuttir\";\n },\n s: \"sekund\",\n ms: \"millisekund\",\n decimal: \",\"\n },\n fr: {\n y: function (c) {\n return \"an\" + (c >= 2 ? \"s\" : \"\");\n },\n mo: \"mois\",\n w: function (c) {\n return \"semaine\" + (c >= 2 ? \"s\" : \"\");\n },\n d: function (c) {\n return \"jour\" + (c >= 2 ? \"s\" : \"\");\n },\n h: function (c) {\n return \"heure\" + (c >= 2 ? \"s\" : \"\");\n },\n m: function (c) {\n return \"minute\" + (c >= 2 ? \"s\" : \"\");\n },\n s: function (c) {\n return \"seconde\" + (c >= 2 ? \"s\" : \"\");\n },\n ms: function (c) {\n return \"milliseconde\" + (c >= 2 ? \"s\" : \"\");\n },\n decimal: \",\"\n },\n gr: greek,\n he: {\n y: function (c) {\n return c === 1 ? \"שנה\" : \"שנים\";\n },\n mo: function (c) {\n return c === 1 ? \"חודש\" : \"חודשים\";\n },\n w: function (c) {\n return c === 1 ? \"שבוע\" : \"שבועות\";\n },\n d: function (c) {\n return c === 1 ? \"יום\" : \"ימים\";\n },\n h: function (c) {\n return c === 1 ? \"שעה\" : \"שעות\";\n },\n m: function (c) {\n return c === 1 ? \"דקה\" : \"דקות\";\n },\n s: function (c) {\n return c === 1 ? \"שניה\" : \"שניות\";\n },\n ms: function (c) {\n return c === 1 ? \"מילישנייה\" : \"מילישניות\";\n },\n decimal: \".\"\n },\n hr: {\n y: function (c) {\n if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"godine\";\n }\n return \"godina\";\n },\n mo: function (c) {\n if (c === 1) {\n return \"mjesec\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"mjeseca\";\n }\n return \"mjeseci\";\n },\n w: function (c) {\n if (c % 10 === 1 && c !== 11) {\n return \"tjedan\";\n }\n return \"tjedna\";\n },\n d: function (c) {\n return c === 1 ? \"dan\" : \"dana\";\n },\n h: function (c) {\n if (c === 1) {\n return \"sat\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"sata\";\n }\n return \"sati\";\n },\n m: function (c) {\n var mod10 = c % 10;\n if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {\n return \"minute\";\n }\n return \"minuta\";\n },\n s: function (c) {\n var mod10 = c % 10;\n if (mod10 === 5 || (Math.floor(c) === c && c >= 10 && c <= 19)) {\n return \"sekundi\";\n } else if (mod10 === 1) {\n return \"sekunda\";\n } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {\n return \"sekunde\";\n }\n return \"sekundi\";\n },\n ms: function (c) {\n if (c === 1) {\n return \"milisekunda\";\n } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"milisekunde\";\n }\n return \"milisekundi\";\n },\n decimal: \",\"\n },\n hi: {\n y: \"साल\",\n mo: function (c) {\n return c === 1 ? \"महीना\" : \"महीने\";\n },\n w: function (c) {\n return c === 1 ? \"हफ़्ता\" : \"हफ्ते\";\n },\n d: \"दिन\",\n h: function (c) {\n return c === 1 ? \"घंटा\" : \"घंटे\";\n },\n m: \"मिनट\",\n s: \"सेकंड\",\n ms: \"मिलीसेकंड\",\n decimal: \".\"\n },\n hu: {\n y: \"év\",\n mo: \"hónap\",\n w: \"hét\",\n d: \"nap\",\n h: \"óra\",\n m: \"perc\",\n s: \"másodperc\",\n ms: \"ezredmásodperc\",\n decimal: \",\"\n },\n id: {\n y: \"tahun\",\n mo: \"bulan\",\n w: \"minggu\",\n d: \"hari\",\n h: \"jam\",\n m: \"menit\",\n s: \"detik\",\n ms: \"milidetik\",\n decimal: \".\"\n },\n is: {\n y: \"ár\",\n mo: function (c) {\n return \"mánuð\" + (c === 1 ? \"ur\" : \"ir\");\n },\n w: function (c) {\n return \"vik\" + (c === 1 ? \"a\" : \"ur\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"ur\" : \"ar\");\n },\n h: function (c) {\n return \"klukkutím\" + (c === 1 ? \"i\" : \"ar\");\n },\n m: function (c) {\n return \"mínút\" + (c === 1 ? \"a\" : \"ur\");\n },\n s: function (c) {\n return \"sekúnd\" + (c === 1 ? \"a\" : \"ur\");\n },\n ms: function (c) {\n return \"millisekúnd\" + (c === 1 ? \"a\" : \"ur\");\n },\n decimal: \".\"\n },\n it: {\n y: function (c) {\n return \"ann\" + (c === 1 ? \"o\" : \"i\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"e\" : \"i\");\n },\n w: function (c) {\n return \"settiman\" + (c === 1 ? \"a\" : \"e\");\n },\n d: function (c) {\n return \"giorn\" + (c === 1 ? \"o\" : \"i\");\n },\n h: function (c) {\n return \"or\" + (c === 1 ? \"a\" : \"e\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"o\" : \"i\");\n },\n s: function (c) {\n return \"second\" + (c === 1 ? \"o\" : \"i\");\n },\n ms: function (c) {\n return \"millisecond\" + (c === 1 ? \"o\" : \"i\");\n },\n decimal: \",\"\n },\n ja: {\n y: \"年\",\n mo: \"ヶ月\",\n w: \"週\",\n d: \"日\",\n h: \"時間\",\n m: \"分\",\n s: \"秒\",\n ms: \"ミリ秒\",\n decimal: \".\"\n },\n km: {\n y: \"ឆ្នាំ\",\n mo: \"ខែ\",\n w: \"សប្តាហ៍\",\n d: \"ថ្ងៃ\",\n h: \"ម៉ោង\",\n m: \"នាទី\",\n s: \"វិនាទី\",\n ms: \"មិល្លីវិនាទី\"\n },\n kn: {\n y: function (c) {\n return c === 1 ? \"ವರ್ಷ\" : \"ವರ್ಷಗಳು\";\n },\n mo: function (c) {\n return c === 1 ? \"ತಿಂಗಳು\" : \"ತಿಂಗಳುಗಳು\";\n },\n w: function (c) {\n return c === 1 ? \"ವಾರ\" : \"ವಾರಗಳು\";\n },\n d: function (c) {\n return c === 1 ? \"ದಿನ\" : \"ದಿನಗಳು\";\n },\n h: function (c) {\n return c === 1 ? \"ಗಂಟೆ\" : \"ಗಂಟೆಗಳು\";\n },\n m: function (c) {\n return c === 1 ? \"ನಿಮಿಷ\" : \"ನಿಮಿಷಗಳು\";\n },\n s: function (c) {\n return c === 1 ? \"ಸೆಕೆಂಡ್\" : \"ಸೆಕೆಂಡುಗಳು\";\n },\n ms: function (c) {\n return c === 1 ? \"ಮಿಲಿಸೆಕೆಂಡ್\" : \"ಮಿಲಿಸೆಕೆಂಡುಗಳು\";\n }\n },\n ko: {\n y: \"년\",\n mo: \"개월\",\n w: \"주일\",\n d: \"일\",\n h: \"시간\",\n m: \"분\",\n s: \"초\",\n ms: \"밀리 초\",\n decimal: \".\"\n },\n ku: {\n y: \"sal\",\n mo: \"meh\",\n w: \"hefte\",\n d: \"roj\",\n h: \"seet\",\n m: \"deqe\",\n s: \"saniye\",\n ms: \"mîlîçirk\",\n decimal: \",\"\n },\n lo: {\n y: \"ປີ\",\n mo: \"ເດືອນ\",\n w: \"ອາທິດ\",\n d: \"ມື້\",\n h: \"ຊົ່ວໂມງ\",\n m: \"ນາທີ\",\n s: \"ວິນາທີ\",\n ms: \"ມິນລິວິນາທີ\",\n decimal: \",\"\n },\n lt: {\n y: function (c) {\n return c % 10 === 0 || (c % 100 >= 10 && c % 100 <= 20)\n ? \"metų\"\n : \"metai\";\n },\n mo: function (c) {\n return [\"mėnuo\", \"mėnesiai\", \"mėnesių\"][getLithuanianForm(c)];\n },\n w: function (c) {\n return [\"savaitė\", \"savaitės\", \"savaičių\"][getLithuanianForm(c)];\n },\n d: function (c) {\n return [\"diena\", \"dienos\", \"dienų\"][getLithuanianForm(c)];\n },\n h: function (c) {\n return [\"valanda\", \"valandos\", \"valandų\"][getLithuanianForm(c)];\n },\n m: function (c) {\n return [\"minutė\", \"minutės\", \"minučių\"][getLithuanianForm(c)];\n },\n s: function (c) {\n return [\"sekundė\", \"sekundės\", \"sekundžių\"][getLithuanianForm(c)];\n },\n ms: function (c) {\n return [\"milisekundė\", \"milisekundės\", \"milisekundžių\"][\n getLithuanianForm(c)\n ];\n },\n decimal: \",\"\n },\n lv: {\n y: function (c) {\n return getLatvianForm(c) ? \"gads\" : \"gadi\";\n },\n mo: function (c) {\n return getLatvianForm(c) ? \"mēnesis\" : \"mēneši\";\n },\n w: function (c) {\n return getLatvianForm(c) ? \"nedēļa\" : \"nedēļas\";\n },\n d: function (c) {\n return getLatvianForm(c) ? \"diena\" : \"dienas\";\n },\n h: function (c) {\n return getLatvianForm(c) ? \"stunda\" : \"stundas\";\n },\n m: function (c) {\n return getLatvianForm(c) ? \"minūte\" : \"minūtes\";\n },\n s: function (c) {\n return getLatvianForm(c) ? \"sekunde\" : \"sekundes\";\n },\n ms: function (c) {\n return getLatvianForm(c) ? \"milisekunde\" : \"milisekundes\";\n },\n decimal: \",\"\n },\n mk: {\n y: function (c) {\n return c === 1 ? \"година\" : \"години\";\n },\n mo: function (c) {\n return c === 1 ? \"месец\" : \"месеци\";\n },\n w: function (c) {\n return c === 1 ? \"недела\" : \"недели\";\n },\n d: function (c) {\n return c === 1 ? \"ден\" : \"дена\";\n },\n h: function (c) {\n return c === 1 ? \"час\" : \"часа\";\n },\n m: function (c) {\n return c === 1 ? \"минута\" : \"минути\";\n },\n s: function (c) {\n return c === 1 ? \"секунда\" : \"секунди\";\n },\n ms: function (c) {\n return c === 1 ? \"милисекунда\" : \"милисекунди\";\n },\n decimal: \",\"\n },\n mr: {\n y: function (c) {\n return c === 1 ? \"वर्ष\" : \"वर्षे\";\n },\n mo: function (c) {\n return c === 1 ? \"महिना\" : \"महिने\";\n },\n w: function (c) {\n return c === 1 ? \"आठवडा\" : \"आठवडे\";\n },\n d: \"दिवस\",\n h: \"तास\",\n m: function (c) {\n return c === 1 ? \"मिनिट\" : \"मिनिटे\";\n },\n s: \"सेकंद\",\n ms: \"मिलिसेकंद\"\n },\n ms: {\n y: \"tahun\",\n mo: \"bulan\",\n w: \"minggu\",\n d: \"hari\",\n h: \"jam\",\n m: \"minit\",\n s: \"saat\",\n ms: \"milisaat\",\n decimal: \".\"\n },\n nl: {\n y: \"jaar\",\n mo: function (c) {\n return c === 1 ? \"maand\" : \"maanden\";\n },\n w: function (c) {\n return c === 1 ? \"week\" : \"weken\";\n },\n d: function (c) {\n return c === 1 ? \"dag\" : \"dagen\";\n },\n h: \"uur\",\n m: function (c) {\n return c === 1 ? \"minuut\" : \"minuten\";\n },\n s: function (c) {\n return c === 1 ? \"seconde\" : \"seconden\";\n },\n ms: function (c) {\n return c === 1 ? \"milliseconde\" : \"milliseconden\";\n },\n decimal: \",\"\n },\n no: {\n y: \"år\",\n mo: function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"uke\" + (c === 1 ? \"\" : \"r\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"er\");\n },\n h: function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n m: function (c) {\n return \"minutt\" + (c === 1 ? \"\" : \"er\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n pl: {\n y: function (c) {\n return [\"rok\", \"roku\", \"lata\", \"lat\"][getPolishForm(c)];\n },\n mo: function (c) {\n return [\"miesiąc\", \"miesiąca\", \"miesiące\", \"miesięcy\"][\n getPolishForm(c)\n ];\n },\n w: function (c) {\n return [\"tydzień\", \"tygodnia\", \"tygodnie\", \"tygodni\"][getPolishForm(c)];\n },\n d: function (c) {\n return [\"dzień\", \"dnia\", \"dni\", \"dni\"][getPolishForm(c)];\n },\n h: function (c) {\n return [\"godzina\", \"godziny\", \"godziny\", \"godzin\"][getPolishForm(c)];\n },\n m: function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getPolishForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][getPolishForm(c)];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getPolishForm(c)\n ];\n },\n decimal: \",\"\n },\n pt: {\n y: function (c) {\n return \"ano\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return c === 1 ? \"mês\" : \"meses\";\n },\n w: function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"dia\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milissegundo\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n ro: {\n y: function (c) {\n return c === 1 ? \"an\" : \"ani\";\n },\n mo: function (c) {\n return c === 1 ? \"lună\" : \"luni\";\n },\n w: function (c) {\n return c === 1 ? \"săptămână\" : \"săptămâni\";\n },\n d: function (c) {\n return c === 1 ? \"zi\" : \"zile\";\n },\n h: function (c) {\n return c === 1 ? \"oră\" : \"ore\";\n },\n m: function (c) {\n return c === 1 ? \"minut\" : \"minute\";\n },\n s: function (c) {\n return c === 1 ? \"secundă\" : \"secunde\";\n },\n ms: function (c) {\n return c === 1 ? \"milisecundă\" : \"milisecunde\";\n },\n decimal: \",\"\n },\n ru: {\n y: function (c) {\n return [\"лет\", \"год\", \"года\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месяцев\", \"месяц\", \"месяца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"недель\", \"неделя\", \"недели\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дней\", \"день\", \"дня\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"часов\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минут\", \"минута\", \"минуты\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунд\", \"секунда\", \"секунды\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"миллисекунд\", \"миллисекунда\", \"миллисекунды\"][\n getSlavicForm(c)\n ];\n },\n decimal: \",\"\n },\n sq: {\n y: function (c) {\n return c === 1 ? \"vit\" : \"vjet\";\n },\n mo: \"muaj\",\n w: \"javë\",\n d: \"ditë\",\n h: \"orë\",\n m: function (c) {\n return \"minut\" + (c === 1 ? \"ë\" : \"a\");\n },\n s: function (c) {\n return \"sekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n ms: function (c) {\n return \"milisekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n decimal: \",\"\n },\n sr: {\n y: function (c) {\n return [\"години\", \"година\", \"године\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месеци\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"недељи\", \"недеља\", \"недеље\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дани\", \"дан\", \"дана\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"сати\", \"сат\", \"сата\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минута\", \"минут\", \"минута\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунди\", \"секунда\", \"секунде\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунде\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n ta: {\n y: function (c) {\n return c === 1 ? \"வருடம்\" : \"ஆண்டுகள்\";\n },\n mo: function (c) {\n return c === 1 ? \"மாதம்\" : \"மாதங்கள்\";\n },\n w: function (c) {\n return c === 1 ? \"வாரம்\" : \"வாரங்கள்\";\n },\n d: function (c) {\n return c === 1 ? \"நாள்\" : \"நாட்கள்\";\n },\n h: function (c) {\n return c === 1 ? \"மணி\" : \"மணிநேரம்\";\n },\n m: function (c) {\n return \"நிமிட\" + (c === 1 ? \"ம்\" : \"ங்கள்\");\n },\n s: function (c) {\n return \"வினாடி\" + (c === 1 ? \"\" : \"கள்\");\n },\n ms: function (c) {\n return \"மில்லி விநாடி\" + (c === 1 ? \"\" : \"கள்\");\n }\n },\n te: {\n y: function (c) {\n return \"సంవత్స\" + (c === 1 ? \"రం\" : \"రాల\");\n },\n mo: function (c) {\n return \"నెల\" + (c === 1 ? \"\" : \"ల\");\n },\n w: function (c) {\n return c === 1 ? \"వారం\" : \"వారాలు\";\n },\n d: function (c) {\n return \"రోజు\" + (c === 1 ? \"\" : \"లు\");\n },\n h: function (c) {\n return \"గంట\" + (c === 1 ? \"\" : \"లు\");\n },\n m: function (c) {\n return c === 1 ? \"నిమిషం\" : \"నిమిషాలు\";\n },\n s: function (c) {\n return c === 1 ? \"సెకను\" : \"సెకన్లు\";\n },\n ms: function (c) {\n return c === 1 ? \"మిల్లీసెకన్\" : \"మిల్లీసెకన్లు\";\n }\n },\n uk: {\n y: function (c) {\n return [\"років\", \"рік\", \"роки\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"місяців\", \"місяць\", \"місяці\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"тижнів\", \"тиждень\", \"тижні\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"днів\", \"день\", \"дні\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"годин\", \"година\", \"години\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"хвилин\", \"хвилина\", \"хвилини\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунд\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"мілісекунд\", \"мілісекунда\", \"мілісекунди\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n ur: {\n y: \"سال\",\n mo: function (c) {\n return c === 1 ? \"مہینہ\" : \"مہینے\";\n },\n w: function (c) {\n return c === 1 ? \"ہفتہ\" : \"ہفتے\";\n },\n d: \"دن\",\n h: function (c) {\n return c === 1 ? \"گھنٹہ\" : \"گھنٹے\";\n },\n m: \"منٹ\",\n s: \"سیکنڈ\",\n ms: \"ملی سیکنڈ\",\n decimal: \".\"\n },\n sk: {\n y: function (c) {\n return [\"rok\", \"roky\", \"roky\", \"rokov\"][getCzechOrSlovakForm(c)];\n },\n mo: function (c) {\n return [\"mesiac\", \"mesiace\", \"mesiace\", \"mesiacov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n w: function (c) {\n return [\"týždeň\", \"týždne\", \"týždne\", \"týždňov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n d: function (c) {\n return [\"deň\", \"dni\", \"dni\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n h: function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodín\"][getCzechOrSlovakForm(c)];\n },\n m: function (c) {\n return [\"minúta\", \"minúty\", \"minúty\", \"minút\"][getCzechOrSlovakForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n decimal: \",\"\n },\n sl: {\n y: function (c) {\n if (c % 10 === 1) {\n return \"leto\";\n } else if (c % 100 === 2) {\n return \"leti\";\n } else if (\n c % 100 === 3 ||\n c % 100 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 5)\n ) {\n return \"leta\";\n } else {\n return \"let\";\n }\n },\n mo: function (c) {\n if (c % 10 === 1) {\n return \"mesec\";\n } else if (c % 100 === 2 || (Math.floor(c) !== c && c % 100 <= 5)) {\n return \"meseca\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"mesece\";\n } else {\n return \"mesecev\";\n }\n },\n w: function (c) {\n if (c % 10 === 1) {\n return \"teden\";\n } else if (c % 10 === 2 || (Math.floor(c) !== c && c % 100 <= 4)) {\n return \"tedna\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"tedne\";\n } else {\n return \"tednov\";\n }\n },\n d: function (c) {\n return c % 100 === 1 ? \"dan\" : \"dni\";\n },\n h: function (c) {\n if (c % 10 === 1) {\n return \"ura\";\n } else if (c % 100 === 2) {\n return \"uri\";\n } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {\n return \"ure\";\n } else {\n return \"ur\";\n }\n },\n m: function (c) {\n if (c % 10 === 1) {\n return \"minuta\";\n } else if (c % 10 === 2) {\n return \"minuti\";\n } else if (\n c % 10 === 3 ||\n c % 10 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 4)\n ) {\n return \"minute\";\n } else {\n return \"minut\";\n }\n },\n s: function (c) {\n if (c % 10 === 1) {\n return \"sekunda\";\n } else if (c % 100 === 2) {\n return \"sekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"sekunde\";\n } else {\n return \"sekund\";\n }\n },\n ms: function (c) {\n if (c % 10 === 1) {\n return \"milisekunda\";\n } else if (c % 100 === 2) {\n return \"milisekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"milisekunde\";\n } else {\n return \"milisekund\";\n }\n },\n decimal: \",\"\n },\n sv: {\n y: \"år\",\n mo: function (c) {\n return \"månad\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"veck\" + (c === 1 ? \"a\" : \"or\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"ar\");\n },\n h: function (c) {\n return \"timm\" + (c === 1 ? \"e\" : \"ar\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"er\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n sw: {\n y: function (c) {\n return c === 1 ? \"mwaka\" : \"miaka\";\n },\n mo: function (c) {\n return c === 1 ? \"mwezi\" : \"miezi\";\n },\n w: \"wiki\",\n d: function (c) {\n return c === 1 ? \"siku\" : \"masiku\";\n },\n h: function (c) {\n return c === 1 ? \"saa\" : \"masaa\";\n },\n m: \"dakika\",\n s: \"sekunde\",\n ms: \"milisekunde\",\n decimal: \".\",\n _numberFirst: true\n },\n tr: {\n y: \"yıl\",\n mo: \"ay\",\n w: \"hafta\",\n d: \"gün\",\n h: \"saat\",\n m: \"dakika\",\n s: \"saniye\",\n ms: \"milisaniye\",\n decimal: \",\"\n },\n th: {\n y: \"ปี\",\n mo: \"เดือน\",\n w: \"สัปดาห์\",\n d: \"วัน\",\n h: \"ชั่วโมง\",\n m: \"นาที\",\n s: \"วินาที\",\n ms: \"มิลลิวินาที\",\n decimal: \".\"\n },\n vi: {\n y: \"năm\",\n mo: \"tháng\",\n w: \"tuần\",\n d: \"ngày\",\n h: \"giờ\",\n m: \"phút\",\n s: \"giây\",\n ms: \"mili giây\",\n decimal: \",\"\n },\n zh_CN: {\n y: \"年\",\n mo: \"个月\",\n w: \"周\",\n d: \"天\",\n h: \"小时\",\n m: \"分钟\",\n s: \"秒\",\n ms: \"毫秒\",\n decimal: \".\"\n },\n zh_TW: {\n y: \"年\",\n mo: \"個月\",\n w: \"周\",\n d: \"天\",\n h: \"小時\",\n m: \"分鐘\",\n s: \"秒\",\n ms: \"毫秒\",\n decimal: \".\"\n }\n };\n\n // You can create a humanizer, which returns a function with default\n // parameters.\n function humanizer(passedOptions) {\n var result = function humanizer(ms, humanizerOptions) {\n var options = assign({}, result, humanizerOptions || {});\n return doHumanization(ms, options);\n };\n\n return assign(\n result,\n {\n language: \"en\",\n spacer: \" \",\n conjunction: \"\",\n serialComma: true,\n units: [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\"],\n languages: {},\n round: false,\n unitMeasures: {\n y: 31557600000,\n mo: 2629800000,\n w: 604800000,\n d: 86400000,\n h: 3600000,\n m: 60000,\n s: 1000,\n ms: 1\n }\n },\n passedOptions\n );\n }\n\n // The main function is just a wrapper around a default humanizer.\n var humanizeDuration = humanizer({});\n\n // Build dictionary from options\n function getDictionary(options) {\n var languagesFromOptions = [options.language];\n\n if (has(options, \"fallbacks\")) {\n if (isArray(options.fallbacks) && options.fallbacks.length) {\n languagesFromOptions = languagesFromOptions.concat(options.fallbacks);\n } else {\n throw new Error(\"fallbacks must be an array with at least one element\");\n }\n }\n\n for (var i = 0; i < languagesFromOptions.length; i++) {\n var languageToTry = languagesFromOptions[i];\n if (has(options.languages, languageToTry)) {\n return options.languages[languageToTry];\n } else if (has(LANGUAGES, languageToTry)) {\n return LANGUAGES[languageToTry];\n }\n }\n\n throw new Error(\"No language found.\");\n }\n\n // doHumanization does the bulk of the work.\n function doHumanization(ms, options) {\n var i, len, piece;\n\n // Make sure we have a positive number.\n // Has the nice sideffect of turning Number objects into primitives.\n ms = Math.abs(ms);\n\n var dictionary = getDictionary(options);\n var pieces = [];\n\n // Start at the top and keep removing units, bit by bit.\n var unitName, unitMS, unitCount;\n for (i = 0, len = options.units.length; i < len; i++) {\n unitName = options.units[i];\n unitMS = options.unitMeasures[unitName];\n\n // What's the number of full units we can fit?\n if (i + 1 === len) {\n if (has(options, \"maxDecimalPoints\")) {\n // We need to use this expValue to avoid rounding functionality of toFixed call\n var expValue = Math.pow(10, options.maxDecimalPoints);\n var unitCountFloat = ms / unitMS;\n unitCount = parseFloat(\n (Math.floor(expValue * unitCountFloat) / expValue).toFixed(\n options.maxDecimalPoints\n )\n );\n } else {\n unitCount = ms / unitMS;\n }\n } else {\n unitCount = Math.floor(ms / unitMS);\n }\n\n // Add the string.\n pieces.push({\n unitCount: unitCount,\n unitName: unitName\n });\n\n // Remove what we just figured out.\n ms -= unitCount * unitMS;\n }\n\n var firstOccupiedUnitIndex = 0;\n for (i = 0; i < pieces.length; i++) {\n if (pieces[i].unitCount) {\n firstOccupiedUnitIndex = i;\n break;\n }\n }\n\n if (options.round) {\n var ratioToLargerUnit, previousPiece;\n for (i = pieces.length - 1; i >= 0; i--) {\n piece = pieces[i];\n piece.unitCount = Math.round(piece.unitCount);\n\n if (i === 0) {\n break;\n }\n\n previousPiece = pieces[i - 1];\n\n ratioToLargerUnit =\n options.unitMeasures[previousPiece.unitName] /\n options.unitMeasures[piece.unitName];\n if (\n piece.unitCount % ratioToLargerUnit === 0 ||\n (options.largest && options.largest - 1 < i - firstOccupiedUnitIndex)\n ) {\n previousPiece.unitCount += piece.unitCount / ratioToLargerUnit;\n piece.unitCount = 0;\n }\n }\n }\n\n var result = [];\n for (i = 0, pieces.length; i < len; i++) {\n piece = pieces[i];\n if (piece.unitCount) {\n result.push(\n render(piece.unitCount, piece.unitName, dictionary, options)\n );\n }\n\n if (result.length === options.largest) {\n break;\n }\n }\n\n if (result.length) {\n var delimiter;\n if (has(options, \"delimiter\")) {\n delimiter = options.delimiter;\n } else if (has(dictionary, \"delimiter\")) {\n delimiter = dictionary.delimiter;\n } else {\n delimiter = \", \";\n }\n\n if (!options.conjunction || result.length === 1) {\n return result.join(delimiter);\n } else if (result.length === 2) {\n return result.join(options.conjunction);\n } else if (result.length > 2) {\n return (\n result.slice(0, -1).join(delimiter) +\n (options.serialComma ? \",\" : \"\") +\n options.conjunction +\n result.slice(-1)\n );\n }\n } else {\n return render(\n 0,\n options.units[options.units.length - 1],\n dictionary,\n options\n );\n }\n }\n\n function render(count, type, dictionary, options) {\n var decimal;\n if (has(options, \"decimal\")) {\n decimal = options.decimal;\n } else if (has(dictionary, \"decimal\")) {\n decimal = dictionary.decimal;\n } else {\n decimal = \".\";\n }\n\n var countStr;\n if (typeof dictionary._formatCount === \"function\") {\n countStr = dictionary._formatCount(count, decimal);\n } else {\n countStr = count.toString().replace(\".\", decimal);\n }\n\n var dictionaryValue = dictionary[type];\n var word;\n if (typeof dictionaryValue === \"function\") {\n word = dictionaryValue(count);\n } else {\n word = dictionaryValue;\n }\n\n if (dictionary._numberFirst) {\n return word + options.spacer + countStr;\n }\n return countStr + options.spacer + word;\n }\n\n function assign(destination) {\n var source;\n for (var i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (var prop in source) {\n if (has(source, prop)) {\n destination[prop] = source[prop];\n }\n }\n }\n return destination;\n }\n\n function getArabicForm(c) {\n if (c === 1) {\n return 0;\n }\n if (c === 2) {\n return 1;\n }\n if (c > 2 && c < 11) {\n return 2;\n }\n return 0;\n }\n\n function getPolishForm(c) {\n if (c === 1) {\n return 0;\n } else if (Math.floor(c) !== c) {\n return 1;\n } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {\n return 2;\n } else {\n return 3;\n }\n }\n\n function getSlavicForm(c) {\n if (Math.floor(c) !== c) {\n return 2;\n } else if (\n (c % 100 >= 5 && c % 100 <= 20) ||\n (c % 10 >= 5 && c % 10 <= 9) ||\n c % 10 === 0\n ) {\n return 0;\n } else if (c % 10 === 1) {\n return 1;\n } else if (c > 1) {\n return 2;\n } else {\n return 0;\n }\n }\n\n function getCzechOrSlovakForm(c) {\n if (c === 1) {\n return 0;\n } else if (Math.floor(c) !== c) {\n return 1;\n } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {\n return 2;\n } else {\n return 3;\n }\n }\n\n function getLithuanianForm(c) {\n if (c === 1 || (c % 10 === 1 && c % 100 > 20)) {\n return 0;\n } else if (\n Math.floor(c) !== c ||\n (c % 10 >= 2 && c % 100 > 20) ||\n (c % 10 >= 2 && c % 100 < 10)\n ) {\n return 1;\n } else {\n return 2;\n }\n }\n\n function getLatvianForm(c) {\n return c % 10 === 1 && c % 100 !== 11;\n }\n\n // We need to make sure we support browsers that don't have\n // `Array.isArray`, so we define a fallback here.\n var isArray =\n Array.isArray ||\n function (arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n\n function has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n humanizeDuration.getSupportedLanguages = function getSupportedLanguages() {\n var result = [];\n for (var language in LANGUAGES) {\n if (has(LANGUAGES, language) && language !== \"gr\") {\n result.push(language);\n }\n }\n return result;\n };\n\n humanizeDuration.humanizer = humanizer;\n\n if (typeof define === \"function\" && define.amd) {\n define(function () {\n return humanizeDuration;\n });\n } else if (typeof module !== \"undefined\" && module.exports) {\n module.exports = humanizeDuration;\n } else {\n this.humanizeDuration = humanizeDuration;\n }\n})();\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","module.exports.degree = require('./src/degree.js');\nmodule.exports.betweenness = require('./src/betweenness.js');\nmodule.exports.closeness = require('./src/closeness.js');\nmodule.exports.eccentricity = require('./src/eccentricity.js');\n","module.exports = betweennes;\n\n/**\n * I'm using http://www.inf.uni-konstanz.de/algo/publications/b-vspbc-08.pdf\n * as a reference for this implementation\n */\nfunction betweennes(graph, oriented) {\n var Q = [],\n S = []; // Queue and Stack\n // list of predcessors on shorteest paths from source\n var pred = Object.create(null);\n // distance from source\n var dist = Object.create(null);\n // number of shortest paths from source to key\n var sigma = Object.create(null);\n // dependency of source on key\n var delta = Object.create(null);\n\n var currentNode;\n var centrality = Object.create(null);\n\n graph.forEachNode(setCentralityToZero);\n graph.forEachNode(calculateCentrality);\n\n if (!oriented) {\n // The centrality scores need to be divided by two if the graph is not oriented,\n // since all shortest paths are considered twice\n Object.keys(centrality).forEach(divideByTwo);\n }\n\n return centrality;\n\n function divideByTwo(key) {\n centrality[key] /= 2;\n }\n\n function setCentralityToZero(node) {\n centrality[node.id] = 0;\n }\n\n function calculateCentrality(node) {\n currentNode = node.id;\n singleSourceShortestPath(currentNode);\n accumulate();\n }\n\n function accumulate() {\n graph.forEachNode(setDeltaToZero);\n while (S.length) {\n var w = S.pop();\n var coeff = (1 + delta[w])/sigma[w];\n var predcessors = pred[w];\n for (var idx = 0; idx < predcessors.length; ++idx) {\n var v = predcessors[idx];\n delta[v] += sigma[v] * coeff;\n }\n if (w !== currentNode) {\n centrality[w] += delta[w];\n }\n }\n }\n\n function setDeltaToZero(node) {\n delta[node.id] = 0;\n }\n\n function singleSourceShortestPath(source) {\n graph.forEachNode(initNode);\n dist[source] = 0;\n sigma[source] = 1;\n Q.push(source);\n\n while (Q.length) {\n var v = Q.shift();\n S.push(v);\n graph.forEachLinkedNode(v, toId, oriented);\n }\n\n function toId(otherNode) {\n // NOTE: This code will also consider multi-edges, which are often\n // ignored by popular software (Gephi/NetworkX). Depending on your use\n // case this may not be desired and deduping needs to be performed. To\n // save memory I'm not deduping here...\n processNode(otherNode.id);\n }\n\n function initNode(node) {\n var nodeId = node.id;\n pred[nodeId] = []; // empty list\n dist[nodeId] = -1;\n sigma[nodeId] = 0;\n }\n\n function processNode(w) {\n // path discovery\n if (dist[w] === -1) {\n // Node w is found for the first time\n dist[w] = dist[v] + 1;\n Q.push(w);\n }\n // path counting\n if (dist[w] === dist[v] + 1) {\n // edge (v, w) on a shortest path\n sigma[w] += sigma[v];\n pred[w].push(v);\n }\n }\n }\n}\n","module.exports = closeness;\r\n\r\n/**\r\n * In a connected graph, the normalized closeness centrality of a node is the average\r\n * length of the shortest path between the node and all other nodes in the\r\n * graph. Thus the more central a node is, the closer it is to all other nodes.\r\n */\r\nfunction closeness(graph, oriented) {\r\n var Q = [];\r\n // list of predcessors on shortest paths from source\r\n // distance from source\r\n var dist = Object.create(null);\r\n\r\n var currentNode;\r\n var centrality = Object.create(null);\r\n\r\n graph.forEachNode(setCentralityToZero);\r\n graph.forEachNode(calculateCentrality);\r\n\r\n return centrality;\r\n\r\n function setCentralityToZero(node) {\r\n centrality[node.id] = 0;\r\n }\r\n\r\n function calculateCentrality(node) {\r\n currentNode = node.id;\r\n singleSourceShortestPath(currentNode);\r\n accumulate();\r\n }\r\n\r\n function accumulate() {\r\n // Add all distances for node to array, excluding -1s\r\n var distances = Object.keys(dist).map(function(key) {return dist[key]}).filter(function(val){return val !== -1});\r\n // Set number of reachable nodes\r\n var reachableNodesTotal = distances.length;\r\n // Compute sum of all distances for node\r\n var totalDistance = distances.reduce(function(a,b) { return a + b });\r\n if (totalDistance > 0) {\r\n centrality[currentNode] = ((reachableNodesTotal - 1) / totalDistance); \r\n } else {\r\n centrality[currentNode] = 0;\r\n }\r\n }\r\n\r\n function singleSourceShortestPath(source) {\r\n graph.forEachNode(initNode);\r\n dist[source] = 0;\r\n Q.push(source);\r\n\r\n while (Q.length) {\r\n var v = Q.shift();\r\n graph.forEachLinkedNode(v, processNode, oriented);\r\n }\r\n\r\n function initNode(node) {\r\n var nodeId = node.id;\r\n dist[nodeId] = -1;\r\n }\r\n\r\n function processNode(otherNode) {\r\n var w = otherNode.id\r\n if (dist[w] === -1) {\r\n // Node w is found for the first time\r\n dist[w] = dist[v] + 1;\r\n Q.push(w);\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = degree;\n\n/**\n * Calculates graph nodes degree centrality (in/out or both).\n *\n * @see http://en.wikipedia.org/wiki/Centrality#Degree_centrality\n *\n * @param {ngraph.graph} graph object for which we are calculating centrality.\n * @param {string} [kind=both] What kind of degree centrality needs to be calculated:\n * 'in' - calculate in-degree centrality\n * 'out' - calculate out-degree centrality\n * 'inout' - (default) generic degree centrality is calculated\n */\nfunction degree(graph, kind) {\n var getNodeDegree;\n var result = Object.create(null);\n\n kind = (kind || 'both').toLowerCase();\n if (kind === 'both' || kind === 'inout') {\n getNodeDegree = inoutDegreeCalculator;\n } else if (kind === 'in') {\n getNodeDegree = inDegreeCalculator;\n } else if (kind === 'out') {\n getNodeDegree = outDegreeCalculator;\n } else {\n throw new Error('Expected centrality degree kind is: in, out or both');\n }\n\n graph.forEachNode(calculateNodeDegree);\n\n return result;\n\n function calculateNodeDegree(node) {\n var links = graph.getLinks(node.id);\n result[node.id] = getNodeDegree(links, node.id);\n }\n}\n\nfunction inDegreeCalculator(links, nodeId) {\n var total = 0;\n if (!links) return total;\n\n for (var i = 0; i < links.length; i += 1) {\n total += (links[i].toId === nodeId) ? 1 : 0;\n }\n return total;\n}\n\nfunction outDegreeCalculator(links, nodeId) {\n var total = 0;\n if (!links) return total;\n\n for (var i = 0; i < links.length; i += 1) {\n total += (links[i].fromId === nodeId) ? 1 : 0;\n }\n return total;\n}\n\nfunction inoutDegreeCalculator(links) {\n if (!links) return 0;\n\n return links.length;\n}\n","module.exports = eccentricity;\r\n\r\n/**\r\n * The eccentricity centrality of a node is the greatest distance between that node and\r\n * any other node in the network. \r\n */\r\nfunction eccentricity(graph, oriented) {\r\n var Q = [];\r\n // distance from source\r\n var dist = Object.create(null);\r\n\r\n var currentNode;\r\n var centrality = Object.create(null);\r\n\r\n graph.forEachNode(setCentralityToZero);\r\n graph.forEachNode(calculateCentrality);\r\n\r\n return centrality;\r\n\r\n function setCentralityToZero(node) {\r\n centrality[node.id] = 0;\r\n }\r\n\r\n function calculateCentrality(node) {\r\n currentNode = node.id;\r\n singleSourceShortestPath(currentNode);\r\n accumulate();\r\n }\r\n\r\n function accumulate() {\r\n var maxDist = 0;\r\n Object.keys(dist).forEach(function (key) {\r\n var val = dist[key];\r\n if (maxDist < val) maxDist = val;\r\n });\r\n\r\n centrality[currentNode] = maxDist;\r\n }\r\n\r\n function singleSourceShortestPath(source) {\r\n graph.forEachNode(initNode);\r\n dist[source] = 0;\r\n Q.push(source);\r\n\r\n while (Q.length) {\r\n var v = Q.shift();\r\n graph.forEachLinkedNode(v, processNode, oriented);\r\n }\r\n\r\n function initNode(node) {\r\n var nodeId = node.id;\r\n dist[nodeId] = -1;\r\n }\r\n\r\n function processNode(otherNode) {\r\n var w = otherNode.id\r\n if (dist[w] === -1) {\r\n // Node w is found for the first time\r\n dist[w] = dist[v] + 1;\r\n Q.push(w);\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = function(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","module.exports = exposeProperties;\n\n/**\n * Augments `target` object with getter/setter functions, which modify settings\n *\n * @example\n * var target = {};\n * exposeProperties({ age: 42}, target);\n * target.age(); // returns 42\n * target.age(24); // make age 24;\n *\n * var filteredTarget = {};\n * exposeProperties({ age: 42, name: 'John'}, filteredTarget, ['name']);\n * filteredTarget.name(); // returns 'John'\n * filteredTarget.age === undefined; // true\n */\nfunction exposeProperties(settings, target, filter) {\n var needsFilter = Object.prototype.toString.call(filter) === '[object Array]';\n if (needsFilter) {\n for (var i = 0; i < filter.length; ++i) {\n augment(settings, target, filter[i]);\n }\n } else {\n for (var key in settings) {\n augment(settings, target, key);\n }\n }\n}\n\nfunction augment(source, target, key) {\n if (source.hasOwnProperty(key)) {\n if (typeof target[key] === 'function') {\n // this accessor is already defined. Ignore it\n return;\n }\n target[key] = function (value) {\n if (value !== undefined) {\n source[key] = value;\n return target;\n }\n return source[key];\n }\n }\n}\n","module.exports = createLayout;\nmodule.exports.simulator = require('ngraph.physics.simulator');\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates force based layout for a given graph.\n *\n * @param {ngraph.graph} graph which needs to be laid out\n * @param {object} physicsSettings if you need custom settings\n * for physics simulator you can pass your own settings here. If it's not passed\n * a default one will be created.\n */\nfunction createLayout(graph, physicsSettings) {\n if (!graph) {\n throw new Error('Graph structure cannot be undefined');\n }\n\n var createSimulator = require('ngraph.physics.simulator');\n var physicsSimulator = createSimulator(physicsSettings);\n\n var nodeMass = defaultNodeMass\n if (physicsSettings && typeof physicsSettings.nodeMass === 'function') {\n nodeMass = physicsSettings.nodeMass\n }\n\n var nodeBodies = Object.create(null);\n var springs = {};\n var bodiesCount = 0;\n\n var springTransform = physicsSimulator.settings.springTransform || noop;\n\n // Initialize physics with what we have in the graph:\n initPhysics();\n listenToEvents();\n\n var wasStable = false;\n\n var api = {\n /**\n * Performs one step of iterative layout algorithm\n *\n * @returns {boolean} true if the system should be considered stable; Flase otherwise.\n * The system is stable if no further call to `step()` can improve the layout.\n */\n step: function() {\n if (bodiesCount === 0) return true; // TODO: This will never fire 'stable'\n\n var lastMove = physicsSimulator.step();\n\n // Save the movement in case if someone wants to query it in the step\n // callback.\n api.lastMove = lastMove;\n\n // Allow listeners to perform low-level actions after nodes are updated.\n api.fire('step');\n\n var ratio = lastMove/bodiesCount;\n var isStableNow = ratio <= 0.01; // TODO: The number is somewhat arbitrary...\n\n if (wasStable !== isStableNow) {\n wasStable = isStableNow;\n onStableChanged(isStableNow);\n }\n\n return isStableNow;\n },\n\n /**\n * For a given `nodeId` returns position\n */\n getNodePosition: function (nodeId) {\n return getInitializedBody(nodeId).pos;\n },\n\n /**\n * Sets position of a node to a given coordinates\n * @param {string} nodeId node identifier\n * @param {number} x position of a node\n * @param {number} y position of a node\n * @param {number=} z position of node (only if applicable to body)\n */\n setNodePosition: function (nodeId) {\n var body = getInitializedBody(nodeId);\n body.setPosition.apply(body, Array.prototype.slice.call(arguments, 1));\n physicsSimulator.invalidateBBox();\n },\n\n /**\n * @returns {Object} Link position by link id\n * @returns {Object.from} {x, y} coordinates of link start\n * @returns {Object.to} {x, y} coordinates of link end\n */\n getLinkPosition: function (linkId) {\n var spring = springs[linkId];\n if (spring) {\n return {\n from: spring.from.pos,\n to: spring.to.pos\n };\n }\n },\n\n /**\n * @returns {Object} area required to fit in the graph. Object contains\n * `x1`, `y1` - top left coordinates\n * `x2`, `y2` - bottom right coordinates\n */\n getGraphRect: function () {\n return physicsSimulator.getBBox();\n },\n\n /**\n * Iterates over each body in the layout simulator and performs a callback(body, nodeId)\n */\n forEachBody: forEachBody,\n\n /*\n * Requests layout algorithm to pin/unpin node to its current position\n * Pinned nodes should not be affected by layout algorithm and always\n * remain at their position\n */\n pinNode: function (node, isPinned) {\n var body = getInitializedBody(node.id);\n body.isPinned = !!isPinned;\n },\n\n /**\n * Checks whether given graph's node is currently pinned\n */\n isNodePinned: function (node) {\n return getInitializedBody(node.id).isPinned;\n },\n\n /**\n * Request to release all resources\n */\n dispose: function() {\n graph.off('changed', onGraphChanged);\n api.fire('disposed');\n },\n\n /**\n * Gets physical body for a given node id. If node is not found undefined\n * value is returned.\n */\n getBody: getBody,\n\n /**\n * Gets spring for a given edge.\n *\n * @param {string} linkId link identifer. If two arguments are passed then\n * this argument is treated as formNodeId\n * @param {string=} toId when defined this parameter denotes head of the link\n * and first argument is trated as tail of the link (fromId)\n */\n getSpring: getSpring,\n\n /**\n * [Read only] Gets current physics simulator\n */\n simulator: physicsSimulator,\n\n /**\n * Gets the graph that was used for layout\n */\n graph: graph,\n\n /**\n * Gets amount of movement performed during last step opeartion\n */\n lastMove: 0\n };\n\n eventify(api);\n\n return api;\n\n function forEachBody(cb) {\n Object.keys(nodeBodies).forEach(function(bodyId) {\n cb(nodeBodies[bodyId], bodyId);\n });\n }\n\n function getSpring(fromId, toId) {\n var linkId;\n if (toId === undefined) {\n if (typeof fromId !== 'object') {\n // assume fromId as a linkId:\n linkId = fromId;\n } else {\n // assume fromId to be a link object:\n linkId = fromId.id;\n }\n } else {\n // toId is defined, should grab link:\n var link = graph.hasLink(fromId, toId);\n if (!link) return;\n linkId = link.id;\n }\n\n return springs[linkId];\n }\n\n function getBody(nodeId) {\n return nodeBodies[nodeId];\n }\n\n function listenToEvents() {\n graph.on('changed', onGraphChanged);\n }\n\n function onStableChanged(isStable) {\n api.fire('stable', isStable);\n }\n\n function onGraphChanged(changes) {\n for (var i = 0; i < changes.length; ++i) {\n var change = changes[i];\n if (change.changeType === 'add') {\n if (change.node) {\n initBody(change.node.id);\n }\n if (change.link) {\n initLink(change.link);\n }\n } else if (change.changeType === 'remove') {\n if (change.node) {\n releaseNode(change.node);\n }\n if (change.link) {\n releaseLink(change.link);\n }\n }\n }\n bodiesCount = graph.getNodesCount();\n }\n\n function initPhysics() {\n bodiesCount = 0;\n\n graph.forEachNode(function (node) {\n initBody(node.id);\n bodiesCount += 1;\n });\n\n graph.forEachLink(initLink);\n }\n\n function initBody(nodeId) {\n var body = nodeBodies[nodeId];\n if (!body) {\n var node = graph.getNode(nodeId);\n if (!node) {\n throw new Error('initBody() was called with unknown node id');\n }\n\n var pos = node.position;\n if (!pos) {\n var neighbors = getNeighborBodies(node);\n pos = physicsSimulator.getBestNewBodyPosition(neighbors);\n }\n\n body = physicsSimulator.addBodyAt(pos);\n body.id = nodeId;\n\n nodeBodies[nodeId] = body;\n updateBodyMass(nodeId);\n\n if (isNodeOriginallyPinned(node)) {\n body.isPinned = true;\n }\n }\n }\n\n function releaseNode(node) {\n var nodeId = node.id;\n var body = nodeBodies[nodeId];\n if (body) {\n nodeBodies[nodeId] = null;\n delete nodeBodies[nodeId];\n\n physicsSimulator.removeBody(body);\n }\n }\n\n function initLink(link) {\n updateBodyMass(link.fromId);\n updateBodyMass(link.toId);\n\n var fromBody = nodeBodies[link.fromId],\n toBody = nodeBodies[link.toId],\n spring = physicsSimulator.addSpring(fromBody, toBody, link.length);\n\n springTransform(link, spring);\n\n springs[link.id] = spring;\n }\n\n function releaseLink(link) {\n var spring = springs[link.id];\n if (spring) {\n var from = graph.getNode(link.fromId),\n to = graph.getNode(link.toId);\n\n if (from) updateBodyMass(from.id);\n if (to) updateBodyMass(to.id);\n\n delete springs[link.id];\n\n physicsSimulator.removeSpring(spring);\n }\n }\n\n function getNeighborBodies(node) {\n // TODO: Could probably be done better on memory\n var neighbors = [];\n if (!node.links) {\n return neighbors;\n }\n var maxNeighbors = Math.min(node.links.length, 2);\n for (var i = 0; i < maxNeighbors; ++i) {\n var link = node.links[i];\n var otherBody = link.fromId !== node.id ? nodeBodies[link.fromId] : nodeBodies[link.toId];\n if (otherBody && otherBody.pos) {\n neighbors.push(otherBody);\n }\n }\n\n return neighbors;\n }\n\n function updateBodyMass(nodeId) {\n var body = nodeBodies[nodeId];\n body.mass = nodeMass(nodeId);\n if (Number.isNaN(body.mass)) {\n throw new Error('Node mass should be a number')\n }\n }\n\n /**\n * Checks whether graph node has in its settings pinned attribute,\n * which means layout algorithm cannot move it. Node can be preconfigured\n * as pinned, if it has \"isPinned\" attribute, or when node.data has it.\n *\n * @param {Object} node a graph node to check\n * @return {Boolean} true if node should be treated as pinned; false otherwise.\n */\n function isNodeOriginallyPinned(node) {\n return (node && (node.isPinned || (node.data && node.data.isPinned)));\n }\n\n function getInitializedBody(nodeId) {\n var body = nodeBodies[nodeId];\n if (!body) {\n initBody(nodeId);\n body = nodeBodies[nodeId];\n }\n return body;\n }\n\n /**\n * Calculates mass of a body, which corresponds to node with given id.\n *\n * @param {String|Number} nodeId identifier of a node, for which body mass needs to be calculated\n * @returns {Number} recommended mass of the body;\n */\n function defaultNodeMass(nodeId) {\n var links = graph.getLinks(nodeId);\n if (!links) return 1;\n return 1 + links.length / 3.0;\n }\n}\n\nfunction noop() { }\n","module.exports = function(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","module.exports = load;\n\nvar createGraph = require('ngraph.graph');\n\nfunction load(jsonGraph, nodeTransform, linkTransform) {\n var stored;\n nodeTransform = nodeTransform || id;\n linkTransform = linkTransform || id;\n if (typeof jsonGraph === 'string') {\n stored = JSON.parse(jsonGraph);\n } else {\n stored = jsonGraph;\n }\n\n var graph = createGraph(),\n i;\n\n if (stored.links === undefined || stored.nodes === undefined) {\n throw new Error('Cannot load graph without links and nodes');\n }\n\n for (i = 0; i < stored.nodes.length; ++i) {\n var parsedNode = nodeTransform(stored.nodes[i]);\n if (!parsedNode.hasOwnProperty('id')) {\n throw new Error('Graph node format is invalid: Node id is missing');\n }\n\n graph.addNode(parsedNode.id, parsedNode.data);\n }\n\n for (i = 0; i < stored.links.length; ++i) {\n var link = linkTransform(stored.links[i]);\n if (!link.hasOwnProperty('fromId') || !link.hasOwnProperty('toId')) {\n throw new Error('Graph link format is invalid. Both fromId and toId are required');\n }\n\n graph.addLink(link.fromId, link.toId, link.data);\n }\n\n return graph;\n}\n\nfunction id(x) { return x; }\n","var createGraph = require('ngraph.graph');\n\nmodule.exports = factory(createGraph);\n\n// Allow other developers have their own createGraph\nmodule.exports.factory = factory;\n\nfunction factory(createGraph) {\n return {\n ladder: ladder,\n complete: complete,\n completeBipartite: completeBipartite,\n balancedBinTree: balancedBinTree,\n path: path,\n circularLadder: circularLadder,\n grid: grid,\n grid3: grid3,\n noLinks: noLinks,\n wattsStrogatz: wattsStrogatz,\n cliqueCircle: cliqueCircle\n };\n\n\n function ladder(n) {\n /**\n * Ladder graph is a graph in form of ladder\n * @param {Number} n Represents number of steps in the ladder\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = createGraph(),\n i;\n\n for (i = 0; i < n - 1; ++i) {\n g.addLink(i, i + 1);\n // first row\n g.addLink(n + i, n + i + 1);\n // second row\n g.addLink(i, n + i);\n // ladder's step\n }\n\n g.addLink(n - 1, 2 * n - 1);\n // last step in the ladder;\n\n return g;\n }\n\n function circularLadder(n) {\n /**\n * Circular ladder with n steps.\n *\n * @param {Number} n of steps in the ladder.\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = ladder(n);\n\n g.addLink(0, n - 1);\n g.addLink(n, 2 * n - 1);\n return g;\n }\n\n function complete(n) {\n /**\n * Complete graph Kn.\n *\n * @param {Number} n represents number of nodes in the complete graph.\n */\n if (!n || n < 1) {\n throw new Error(\"At least two nodes are expected for complete graph\");\n }\n\n var g = createGraph(),\n i,\n j;\n\n for (i = 0; i < n; ++i) {\n for (j = i + 1; j < n; ++j) {\n if (i !== j) {\n g.addLink(i, j);\n }\n }\n }\n\n return g;\n }\n\n function completeBipartite (n, m) {\n /**\n * Complete bipartite graph K n,m. Each node in the\n * first partition is connected to all nodes in the second partition.\n *\n * @param {Number} n represents number of nodes in the first graph partition\n * @param {Number} m represents number of nodes in the second graph partition\n */\n if (!n || !m || n < 0 || m < 0) {\n throw new Error(\"Graph dimensions are invalid. Number of nodes in each partition should be greater than 0\");\n }\n\n var g = createGraph(),\n i, j;\n\n for (i = 0; i < n; ++i) {\n for (j = n; j < n + m; ++j) {\n g.addLink(i, j);\n }\n }\n\n return g;\n }\n\n function path(n) {\n /**\n * Path graph with n steps.\n *\n * @param {Number} n number of nodes in the path\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = createGraph(),\n i;\n\n g.addNode(0);\n\n for (i = 1; i < n; ++i) {\n g.addLink(i - 1, i);\n }\n\n return g;\n }\n\n\n function grid(n, m) {\n /**\n * Grid graph with n rows and m columns.\n *\n * @param {Number} n of rows in the graph.\n * @param {Number} m of columns in the graph.\n */\n if (n < 1 || m < 1) {\n throw new Error(\"Invalid number of nodes in grid graph\");\n }\n var g = createGraph(),\n i,\n j;\n if (n === 1 && m === 1) {\n g.addNode(0);\n return g;\n }\n\n for (i = 0; i < n; ++i) {\n for (j = 0; j < m; ++j) {\n var node = i + j * n;\n if (i > 0) { g.addLink(node, i - 1 + j * n); }\n if (j > 0) { g.addLink(node, i + (j - 1) * n); }\n }\n }\n\n return g;\n }\n\n function grid3(n, m, z) {\n /**\n * 3D grid with n rows and m columns and z levels.\n *\n * @param {Number} n of rows in the graph.\n * @param {Number} m of columns in the graph.\n * @param {Number} z of levels in the graph.\n */\n if (n < 1 || m < 1 || z < 1) {\n throw new Error(\"Invalid number of nodes in grid3 graph\");\n }\n var g = createGraph(),\n i, j, k;\n\n if (n === 1 && m === 1 && z === 1) {\n g.addNode(0);\n return g;\n }\n\n for (k = 0; k < z; ++k) {\n for (i = 0; i < n; ++i) {\n for (j = 0; j < m; ++j) {\n var level = k * n * m;\n var node = i + j * n + level;\n if (i > 0) { g.addLink(node, i - 1 + j * n + level); }\n if (j > 0) { g.addLink(node, i + (j - 1) * n + level); }\n if (k > 0) { g.addLink(node, i + j * n + (k - 1) * n * m ); }\n }\n }\n }\n\n return g;\n }\n\n function balancedBinTree(n) {\n /**\n * Balanced binary tree with n levels.\n *\n * @param {Number} n of levels in the binary tree\n */\n if (n < 0) {\n throw new Error(\"Invalid number of nodes in balanced tree\");\n }\n var g = createGraph(),\n count = Math.pow(2, n),\n level;\n\n if (n === 0) {\n g.addNode(1);\n }\n\n for (level = 1; level < count; ++level) {\n var root = level,\n left = root * 2,\n right = root * 2 + 1;\n\n g.addLink(root, left);\n g.addLink(root, right);\n }\n\n return g;\n }\n\n function noLinks(n) {\n /**\n * Graph with no links\n *\n * @param {Number} n of nodes in the graph\n */\n if (n < 0) {\n throw new Error(\"Number of nodes should be >= 0\");\n }\n\n var g = createGraph(), i;\n for (i = 0; i < n; ++i) {\n g.addNode(i);\n }\n\n return g;\n }\n\n function cliqueCircle(cliqueCount, cliqueSize) {\n /**\n * A circular graph with cliques instead of individual nodes\n *\n * @param {Number} cliqueCount number of cliques inside circle\n * @param {Number} cliqueSize number of nodes inside each clique\n */\n\n if (cliqueCount < 1) throw new Error('Invalid number of cliqueCount in cliqueCircle');\n if (cliqueSize < 1) throw new Error('Invalid number of cliqueSize in cliqueCircle');\n\n var graph = createGraph();\n\n for (var i = 0; i < cliqueCount; ++i) {\n appendClique(cliqueSize, i * cliqueSize)\n\n if (i > 0) {\n graph.addLink(i * cliqueSize, i * cliqueSize - 1);\n }\n }\n graph.addLink(0, graph.getNodesCount() - 1);\n\n return graph;\n\n function appendClique(size, from) {\n for (var i = 0; i < size; ++i) {\n graph.addNode(i + from)\n }\n\n for (var i = 0; i < size; ++i) {\n for (var j = i + 1; j < size; ++j) {\n graph.addLink(i + from, j + from)\n }\n }\n }\n }\n\n function wattsStrogatz(n, k, p, seed) {\n /**\n * Watts-Strogatz small-world graph.\n *\n * @param {Number} n The number of nodes\n * @param {Number} k Each node is connected to k nearest neighbors in ring topology\n * @param {Number} p The probability of rewiring each edge\n\n * @see https://github.com/networkx/networkx/blob/master/networkx/generators/random_graphs.py\n */\n if (k >= n) throw new Error('Choose smaller `k`. It cannot be larger than number of nodes `n`');\n\n\n var random = require('ngraph.random').random(seed || 42);\n\n var g = createGraph(), i, to;\n for (i = 0; i < n; ++i) {\n g.addNode(i);\n }\n\n // connect each node to k/2 neighbors\n var neighborsSize = Math.floor(k/2 + 1);\n for (var j = 1; j < neighborsSize; ++j) {\n for (i = 0; i < n; ++i) {\n to = (j + i) % n;\n g.addLink(i, to);\n }\n }\n\n // rewire edges from each node\n // loop over all nodes in order (label) and neighbors in order (distance)\n // no self loops or multiple edges allowed\n for (j = 1; j < neighborsSize; ++j) {\n for (i = 0; i < n; ++i) {\n if (random.nextDouble() < p) {\n var from = i;\n to = (j + i) % n;\n\n var newTo = random.next(n);\n var needsRewire = (newTo === from || g.hasLink(from, newTo));\n if (needsRewire && g.getLinks(from).length === n - 1) {\n // we cannot rewire this node, it has too many links.\n continue;\n }\n // Enforce no self-loops or multiple edges\n while (needsRewire) {\n newTo = random.next(n);\n needsRewire = (newTo === from || g.hasLink(from, newTo));\n }\n var link = g.hasLink(from, to);\n g.removeLink(link);\n g.addLink(from, newTo);\n }\n }\n }\n\n return g;\n }\n}\n","module.exports = random;\n\n// TODO: Deprecate?\nmodule.exports.random = random,\nmodule.exports.randomIterator = randomIterator\n\n/**\n * Creates seeded PRNG with two methods:\n * next() and nextDouble()\n */\nfunction random(inputSeed) {\n var seed = typeof inputSeed === 'number' ? inputSeed : (+new Date());\n return new Generator(seed)\n}\n\nfunction Generator(seed) {\n this.seed = seed;\n}\n\n/**\n * Generates random integer number in the range from 0 (inclusive) to maxValue (exclusive)\n *\n * @param maxValue Number REQUIRED. Omitting this number will result in NaN values from PRNG.\n */\nGenerator.prototype.next = next;\n\n/**\n * Generates random double number in the range from 0 (inclusive) to 1 (exclusive)\n * This function is the same as Math.random() (except that it could be seeded)\n */\nGenerator.prototype.nextDouble = nextDouble;\n\n/**\n * Returns a random real number uniformly in [0, 1)\n */\nGenerator.prototype.uniform = nextDouble;\n\nGenerator.prototype.gaussian = gaussian;\n\nfunction gaussian() {\n // use the polar form of the Box-Muller transform\n // based on https://introcs.cs.princeton.edu/java/23recursion/StdRandom.java\n var r, x, y;\n do {\n x = this.nextDouble() * 2 - 1;\n y = this.nextDouble() * 2 - 1;\n r = x * x + y * y;\n } while (r >= 1 || r === 0);\n\n return x * Math.sqrt(-2 * Math.log(r)/r);\n}\n\nfunction nextDouble() {\n var seed = this.seed;\n // Robert Jenkins' 32 bit integer hash function.\n seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;\n seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;\n seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;\n seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;\n seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;\n seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;\n this.seed = seed;\n return (seed & 0xfffffff) / 0x10000000;\n}\n\nfunction next(maxValue) {\n return Math.floor(this.nextDouble() * maxValue);\n}\n\n/*\n * Creates iterator over array, which returns items of array in random order\n * Time complexity is guaranteed to be O(n);\n */\nfunction randomIterator(array, customRandom) {\n var localRandom = customRandom || random();\n if (typeof localRandom.next !== 'function') {\n throw new Error('customRandom does not match expected API: next() function is missing');\n }\n\n return {\n forEach: forEach,\n\n /**\n * Shuffles array randomly, in place.\n */\n shuffle: shuffle\n };\n\n function shuffle() {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n }\n\n return array;\n }\n\n function forEach(callback) {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n\n callback(t);\n }\n\n if (array.length) {\n callback(array[0]);\n }\n }\n}","/**\n * @fileOverview Contains definition of the core graph object.\n */\n\n// TODO: need to change storage layer:\n// 1. Be able to get all nodes O(1)\n// 2. Be able to get number of links O(1)\n\n/**\n * @example\n * var graph = require('ngraph.graph')();\n * graph.addNode(1); // graph has one node.\n * graph.addLink(2, 3); // now graph contains three nodes and one link.\n *\n */\nmodule.exports = createGraph;\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates a new graph\n */\nfunction createGraph(options) {\n // Graph structure is maintained as dictionary of nodes\n // and array of links. Each node has 'links' property which\n // hold all links related to that node. And general links\n // array is used to speed up all links enumeration. This is inefficient\n // in terms of memory, but simplifies coding.\n options = options || {};\n if ('uniqueLinkId' in options) {\n console.warn(\n 'ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\\n' +\n 'Use `multigraph` option instead\\n',\n '\\n',\n 'Note: there is also change in default behavior: From now own each graph\\n'+\n 'is considered to be not a multigraph by default (each edge is unique).'\n );\n\n options.multigraph = options.uniqueLinkId;\n }\n\n // Dear reader, the non-multigraphs do not guarantee that there is only\n // one link for a given pair of node. When this option is set to false\n // we can save some memory and CPU (18% faster for non-multigraph);\n if (options.multigraph === undefined) options.multigraph = false;\n\n var nodes = typeof Object.create === 'function' ? Object.create(null) : {},\n links = [],\n // Hash of multi-edges. Used to track ids of edges between same nodes\n multiEdges = {},\n nodesCount = 0,\n suspendEvents = 0,\n\n forEachNode = createNodeIterator(),\n createLink = options.multigraph ? createUniqueLink : createSingleLink,\n\n // Our graph API provides means to listen to graph changes. Users can subscribe\n // to be notified about changes in the graph by using `on` method. However\n // in some cases they don't use it. To avoid unnecessary memory consumption\n // we will not record graph changes until we have at least one subscriber.\n // Code below supports this optimization.\n //\n // Accumulates all changes made during graph updates.\n // Each change element contains:\n // changeType - one of the strings: 'add', 'remove' or 'update';\n // node - if change is related to node this property is set to changed graph's node;\n // link - if change is related to link this property is set to changed graph's link;\n changes = [],\n recordLinkChange = noop,\n recordNodeChange = noop,\n enterModification = noop,\n exitModification = noop;\n\n // this is our public API:\n var graphPart = {\n /**\n * Adds node to the graph. If node with given id already exists in the graph\n * its data is extended with whatever comes in 'data' argument.\n *\n * @param nodeId the node's identifier. A string or number is preferred.\n * @param [data] additional data for the node being added. If node already\n * exists its data object is augmented with the new one.\n *\n * @return {node} The newly added node or node with given id if it already exists.\n */\n addNode: addNode,\n\n /**\n * Adds a link to the graph. The function always create a new\n * link between two nodes. If one of the nodes does not exists\n * a new node is created.\n *\n * @param fromId link start node id;\n * @param toId link end node id;\n * @param [data] additional data to be set on the new link;\n *\n * @return {link} The newly created link\n */\n addLink: addLink,\n\n /**\n * Removes link from the graph. If link does not exist does nothing.\n *\n * @param link - object returned by addLink() or getLinks() methods.\n *\n * @returns true if link was removed; false otherwise.\n */\n removeLink: removeLink,\n\n /**\n * Removes node with given id from the graph. If node does not exist in the graph\n * does nothing.\n *\n * @param nodeId node's identifier passed to addNode() function.\n *\n * @returns true if node was removed; false otherwise.\n */\n removeNode: removeNode,\n\n /**\n * Gets node with given identifier. If node does not exist undefined value is returned.\n *\n * @param nodeId requested node identifier;\n *\n * @return {node} in with requested identifier or undefined if no such node exists.\n */\n getNode: getNode,\n\n /**\n * Gets number of nodes in this graph.\n *\n * @return number of nodes in the graph.\n */\n getNodesCount: function () {\n return nodesCount;\n },\n\n /**\n * Gets total number of links in the graph.\n */\n getLinksCount: function () {\n return links.length;\n },\n\n /**\n * Gets all links (inbound and outbound) from the node with given id.\n * If node with given id is not found null is returned.\n *\n * @param nodeId requested node identifier.\n *\n * @return Array of links from and to requested node if such node exists;\n * otherwise null is returned.\n */\n getLinks: getLinks,\n\n /**\n * Invokes callback on each node of the graph.\n *\n * @param {Function(node)} callback Function to be invoked. The function\n * is passed one argument: visited node.\n */\n forEachNode: forEachNode,\n\n /**\n * Invokes callback on every linked (adjacent) node to the given one.\n *\n * @param nodeId Identifier of the requested node.\n * @param {Function(node, link)} callback Function to be called on all linked nodes.\n * The function is passed two parameters: adjacent node and link object itself.\n * @param oriented if true graph treated as oriented.\n */\n forEachLinkedNode: forEachLinkedNode,\n\n /**\n * Enumerates all links in the graph\n *\n * @param {Function(link)} callback Function to be called on all links in the graph.\n * The function is passed one parameter: graph's link object.\n *\n * Link object contains at least the following fields:\n * fromId - node id where link starts;\n * toId - node id where link ends,\n * data - additional data passed to graph.addLink() method.\n */\n forEachLink: forEachLink,\n\n /**\n * Suspend all notifications about graph changes until\n * endUpdate is called.\n */\n beginUpdate: enterModification,\n\n /**\n * Resumes all notifications about graph changes and fires\n * graph 'changed' event in case there are any pending changes.\n */\n endUpdate: exitModification,\n\n /**\n * Removes all nodes and links from the graph.\n */\n clear: clear,\n\n /**\n * Detects whether there is a link between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n * NOTE: this function is synonim for getLink()\n *\n * @returns link if there is one. null otherwise.\n */\n hasLink: getLink,\n\n /**\n * Detects whether there is a node with given id\n * \n * Operation complexity is O(1)\n * NOTE: this function is synonim for getNode()\n *\n * @returns node if there is one; Falsy value otherwise.\n */\n hasNode: getNode,\n\n /**\n * Gets an edge between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n *\n * @param {string} fromId link start identifier\n * @param {string} toId link end identifier\n *\n * @returns link if there is one. null otherwise.\n */\n getLink: getLink\n };\n\n // this will add `on()` and `fire()` methods.\n eventify(graphPart);\n\n monitorSubscribers();\n\n return graphPart;\n\n function monitorSubscribers() {\n var realOn = graphPart.on;\n\n // replace real `on` with our temporary on, which will trigger change\n // modification monitoring:\n graphPart.on = on;\n\n function on() {\n // now it's time to start tracking stuff:\n graphPart.beginUpdate = enterModification = enterModificationReal;\n graphPart.endUpdate = exitModification = exitModificationReal;\n recordLinkChange = recordLinkChangeReal;\n recordNodeChange = recordNodeChangeReal;\n\n // this will replace current `on` method with real pub/sub from `eventify`.\n graphPart.on = realOn;\n // delegate to real `on` handler:\n return realOn.apply(graphPart, arguments);\n }\n }\n\n function recordLinkChangeReal(link, changeType) {\n changes.push({\n link: link,\n changeType: changeType\n });\n }\n\n function recordNodeChangeReal(node, changeType) {\n changes.push({\n node: node,\n changeType: changeType\n });\n }\n\n function addNode(nodeId, data) {\n if (nodeId === undefined) {\n throw new Error('Invalid node identifier');\n }\n\n enterModification();\n\n var node = getNode(nodeId);\n if (!node) {\n node = new Node(nodeId, data);\n nodesCount++;\n recordNodeChange(node, 'add');\n } else {\n node.data = data;\n recordNodeChange(node, 'update');\n }\n\n nodes[nodeId] = node;\n\n exitModification();\n return node;\n }\n\n function getNode(nodeId) {\n return nodes[nodeId];\n }\n\n function removeNode(nodeId) {\n var node = getNode(nodeId);\n if (!node) {\n return false;\n }\n\n enterModification();\n\n var prevLinks = node.links;\n if (prevLinks) {\n node.links = null;\n for(var i = 0; i < prevLinks.length; ++i) {\n removeLink(prevLinks[i]);\n }\n }\n\n delete nodes[nodeId];\n nodesCount--;\n\n recordNodeChange(node, 'remove');\n\n exitModification();\n\n return true;\n }\n\n\n function addLink(fromId, toId, data) {\n enterModification();\n\n var fromNode = getNode(fromId) || addNode(fromId);\n var toNode = getNode(toId) || addNode(toId);\n\n var link = createLink(fromId, toId, data);\n\n links.push(link);\n\n // TODO: this is not cool. On large graphs potentially would consume more memory.\n addLinkToNode(fromNode, link);\n if (fromId !== toId) {\n // make sure we are not duplicating links for self-loops\n addLinkToNode(toNode, link);\n }\n\n recordLinkChange(link, 'add');\n\n exitModification();\n\n return link;\n }\n\n function createSingleLink(fromId, toId, data) {\n var linkId = makeLinkId(fromId, toId);\n return new Link(fromId, toId, data, linkId);\n }\n\n function createUniqueLink(fromId, toId, data) {\n // TODO: Get rid of this method.\n var linkId = makeLinkId(fromId, toId);\n var isMultiEdge = multiEdges.hasOwnProperty(linkId);\n if (isMultiEdge || getLink(fromId, toId)) {\n if (!isMultiEdge) {\n multiEdges[linkId] = 0;\n }\n var suffix = '@' + (++multiEdges[linkId]);\n linkId = makeLinkId(fromId + suffix, toId + suffix);\n }\n\n return new Link(fromId, toId, data, linkId);\n }\n\n function getLinks(nodeId) {\n var node = getNode(nodeId);\n return node ? node.links : null;\n }\n\n function removeLink(link) {\n if (!link) {\n return false;\n }\n var idx = indexOfElementInArray(link, links);\n if (idx < 0) {\n return false;\n }\n\n enterModification();\n\n links.splice(idx, 1);\n\n var fromNode = getNode(link.fromId);\n var toNode = getNode(link.toId);\n\n if (fromNode) {\n idx = indexOfElementInArray(link, fromNode.links);\n if (idx >= 0) {\n fromNode.links.splice(idx, 1);\n }\n }\n\n if (toNode) {\n idx = indexOfElementInArray(link, toNode.links);\n if (idx >= 0) {\n toNode.links.splice(idx, 1);\n }\n }\n\n recordLinkChange(link, 'remove');\n\n exitModification();\n\n return true;\n }\n\n function getLink(fromNodeId, toNodeId) {\n // TODO: Use sorted links to speed this up\n var node = getNode(fromNodeId),\n i;\n if (!node || !node.links) {\n return null;\n }\n\n for (i = 0; i < node.links.length; ++i) {\n var link = node.links[i];\n if (link.fromId === fromNodeId && link.toId === toNodeId) {\n return link;\n }\n }\n\n return null; // no link.\n }\n\n function clear() {\n enterModification();\n forEachNode(function(node) {\n removeNode(node.id);\n });\n exitModification();\n }\n\n function forEachLink(callback) {\n var i, length;\n if (typeof callback === 'function') {\n for (i = 0, length = links.length; i < length; ++i) {\n callback(links[i]);\n }\n }\n }\n\n function forEachLinkedNode(nodeId, callback, oriented) {\n var node = getNode(nodeId);\n\n if (node && node.links && typeof callback === 'function') {\n if (oriented) {\n return forEachOrientedLink(node.links, nodeId, callback);\n } else {\n return forEachNonOrientedLink(node.links, nodeId, callback);\n }\n }\n }\n\n function forEachNonOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n var linkedNodeId = link.fromId === nodeId ? link.toId : link.fromId;\n\n quitFast = callback(nodes[linkedNodeId], link);\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n\n function forEachOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n if (link.fromId === nodeId) {\n quitFast = callback(nodes[link.toId], link);\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n }\n\n // we will not fire anything until users of this library explicitly call `on()`\n // method.\n function noop() {}\n\n // Enter, Exit modification allows bulk graph updates without firing events.\n function enterModificationReal() {\n suspendEvents += 1;\n }\n\n function exitModificationReal() {\n suspendEvents -= 1;\n if (suspendEvents === 0 && changes.length > 0) {\n graphPart.fire('changed', changes);\n changes.length = 0;\n }\n }\n\n function createNodeIterator() {\n // Object.keys iterator is 1.3x faster than `for in` loop.\n // See `https://github.com/anvaka/ngraph.graph/tree/bench-for-in-vs-obj-keys`\n // branch for perf test\n return Object.keys ? objectKeysIterator : forInIterator;\n }\n\n function objectKeysIterator(callback) {\n if (typeof callback !== 'function') {\n return;\n }\n\n var keys = Object.keys(nodes);\n for (var i = 0; i < keys.length; ++i) {\n if (callback(nodes[keys[i]])) {\n return true; // client doesn't want to proceed. Return.\n }\n }\n }\n\n function forInIterator(callback) {\n if (typeof callback !== 'function') {\n return;\n }\n var node;\n\n for (node in nodes) {\n if (callback(nodes[node])) {\n return true; // client doesn't want to proceed. Return.\n }\n }\n }\n}\n\n// need this for old browsers. Should this be a separate module?\nfunction indexOfElementInArray(element, array) {\n if (!array) return -1;\n\n if (array.indexOf) {\n return array.indexOf(element);\n }\n\n var len = array.length,\n i;\n\n for (i = 0; i < len; i += 1) {\n if (array[i] === element) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Internal structure to represent node;\n */\nfunction Node(id, data) {\n this.id = id;\n this.links = null;\n this.data = data;\n}\n\nfunction addLinkToNode(node, link) {\n if (node.links) {\n node.links.push(link);\n } else {\n node.links = [link];\n }\n}\n\n/**\n * Internal structure to represent links;\n */\nfunction Link(fromId, toId, data, id) {\n this.fromId = fromId;\n this.toId = toId;\n this.data = data;\n this.id = id;\n}\n\nfunction hashCode(str) {\n var hash = 0, i, chr, len;\n if (str.length == 0) return hash;\n for (i = 0, len = str.length; i < len; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nfunction makeLinkId(fromId, toId) {\n return fromId.toString() + '👉 ' + toId.toString();\n}\n","module.exports = merge;\n\n/**\n * Augments `target` with properties in `options`. Does not override\n * target's properties if they are defined and matches expected type in \n * options\n *\n * @returns {Object} merged object\n */\nfunction merge(target, options) {\n var key;\n if (!target) { target = {}; }\n if (options) {\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n var targetHasIt = target.hasOwnProperty(key),\n optionsValueType = typeof options[key],\n shouldReplace = !targetHasIt || (typeof target[key] !== optionsValueType);\n\n if (shouldReplace) {\n target[key] = options[key];\n } else if (optionsValueType === 'object') {\n // go deep, don't care about loops here, we are simple API!:\n target[key] = merge(target[key], options[key]);\n }\n }\n }\n }\n\n return target;\n}\n","module.exports = {\n Body: Body,\n Vector2d: Vector2d,\n Body3d: Body3d,\n Vector3d: Vector3d\n};\n\nfunction Body(x, y) {\n this.pos = new Vector2d(x, y);\n this.prevPos = new Vector2d(x, y);\n this.force = new Vector2d();\n this.velocity = new Vector2d();\n this.mass = 1;\n}\n\nBody.prototype.setPosition = function (x, y) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n};\n\nfunction Vector2d(x, y) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n }\n}\n\nVector2d.prototype.reset = function () {\n this.x = this.y = 0;\n};\n\nfunction Body3d(x, y, z) {\n this.pos = new Vector3d(x, y, z);\n this.prevPos = new Vector3d(x, y, z);\n this.force = new Vector3d();\n this.velocity = new Vector3d();\n this.mass = 1;\n}\n\nBody3d.prototype.setPosition = function (x, y, z) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n this.prevPos.z = this.pos.z = z;\n};\n\nfunction Vector3d(x, y, z) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n this.z = typeof x.z === 'number' ? x.z : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n this.z = typeof z === 'number' ? z : 0;\n }\n};\n\nVector3d.prototype.reset = function () {\n this.x = this.y = this.z = 0;\n};\n","/**\n * Manages a simulation of physical forces acting on bodies and springs.\n */\nmodule.exports = physicsSimulator;\n\nfunction physicsSimulator(settings) {\n var Spring = require('./lib/spring');\n var expose = require('ngraph.expose');\n var merge = require('ngraph.merge');\n var eventify = require('ngraph.events');\n\n settings = merge(settings, {\n /**\n * Ideal length for links (springs in physical model).\n */\n springLength: 30,\n\n /**\n * Hook's law coefficient. 1 - solid spring.\n */\n springCoeff: 0.0008,\n\n /**\n * Coulomb's law coefficient. It's used to repel nodes thus should be negative\n * if you make it positive nodes start attract each other :).\n */\n gravity: -1.2,\n\n /**\n * Theta coefficient from Barnes Hut simulation. Ranged between (0, 1).\n * The closer it's to 1 the more nodes algorithm will have to go through.\n * Setting it to one makes Barnes Hut simulation no different from\n * brute-force forces calculation (each node is considered).\n */\n theta: 0.8,\n\n /**\n * Drag force coefficient. Used to slow down system, thus should be less than 1.\n * The closer it is to 0 the less tight system will be.\n */\n dragCoeff: 0.02,\n\n /**\n * Default time step (dt) for forces integration\n */\n timeStep : 20,\n });\n\n // We allow clients to override basic factory methods:\n var createQuadTree = settings.createQuadTree || require('ngraph.quadtreebh');\n var createBounds = settings.createBounds || require('./lib/bounds');\n var createDragForce = settings.createDragForce || require('./lib/dragForce');\n var createSpringForce = settings.createSpringForce || require('./lib/springForce');\n var integrate = settings.integrator || require('./lib/eulerIntegrator');\n var createBody = settings.createBody || require('./lib/createBody');\n\n var bodies = [], // Bodies in this simulation.\n springs = [], // Springs in this simulation.\n quadTree = createQuadTree(settings),\n bounds = createBounds(bodies, settings),\n springForce = createSpringForce(settings),\n dragForce = createDragForce(settings);\n\n var bboxNeedsUpdate = true;\n var totalMovement = 0; // how much movement we made on last step\n\n var publicApi = {\n /**\n * Array of bodies, registered with current simulator\n *\n * Note: To add new body, use addBody() method. This property is only\n * exposed for testing/performance purposes.\n */\n bodies: bodies,\n\n quadTree: quadTree,\n\n /**\n * Array of springs, registered with current simulator\n *\n * Note: To add new spring, use addSpring() method. This property is only\n * exposed for testing/performance purposes.\n */\n springs: springs,\n\n /**\n * Returns settings with which current simulator was initialized\n */\n settings: settings,\n\n /**\n * Performs one step of force simulation.\n *\n * @returns {boolean} true if system is considered stable; False otherwise.\n */\n step: function () {\n accumulateForces();\n\n var movement = integrate(bodies, settings.timeStep);\n bounds.update();\n\n return movement;\n },\n\n /**\n * Adds body to the system\n *\n * @param {ngraph.physics.primitives.Body} body physical body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBody: function (body) {\n if (!body) {\n throw new Error('Body is required');\n }\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Adds body to the system at given position\n *\n * @param {Object} pos position of a body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBodyAt: function (pos) {\n if (!pos) {\n throw new Error('Body position is required');\n }\n var body = createBody(pos);\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Removes body from the system\n *\n * @param {ngraph.physics.primitives.Body} body to remove\n *\n * @returns {Boolean} true if body found and removed. falsy otherwise;\n */\n removeBody: function (body) {\n if (!body) { return; }\n\n var idx = bodies.indexOf(body);\n if (idx < 0) { return; }\n\n bodies.splice(idx, 1);\n if (bodies.length === 0) {\n bounds.reset();\n }\n return true;\n },\n\n /**\n * Adds a spring to this simulation.\n *\n * @returns {Object} - a handle for a spring. If you want to later remove\n * spring pass it to removeSpring() method.\n */\n addSpring: function (body1, body2, springLength, springWeight, springCoefficient) {\n if (!body1 || !body2) {\n throw new Error('Cannot add null spring to force simulator');\n }\n\n if (typeof springLength !== 'number') {\n springLength = -1; // assume global configuration\n }\n\n var spring = new Spring(body1, body2, springLength, springCoefficient >= 0 ? springCoefficient : -1, springWeight);\n springs.push(spring);\n\n // TODO: could mark simulator as dirty.\n return spring;\n },\n\n /**\n * Returns amount of movement performed on last step() call\n */\n getTotalMovement: function () {\n return totalMovement;\n },\n\n /**\n * Removes spring from the system\n *\n * @param {Object} spring to remove. Spring is an object returned by addSpring\n *\n * @returns {Boolean} true if spring found and removed. falsy otherwise;\n */\n removeSpring: function (spring) {\n if (!spring) { return; }\n var idx = springs.indexOf(spring);\n if (idx > -1) {\n springs.splice(idx, 1);\n return true;\n }\n },\n\n getBestNewBodyPosition: function (neighbors) {\n return bounds.getBestNewPosition(neighbors);\n },\n\n /**\n * Returns bounding box which covers all bodies\n */\n getBBox: function () {\n if (bboxNeedsUpdate) {\n bounds.update();\n bboxNeedsUpdate = false;\n }\n return bounds.box;\n },\n\n invalidateBBox: function () {\n bboxNeedsUpdate = true;\n },\n\n gravity: function (value) {\n if (value !== undefined) {\n settings.gravity = value;\n quadTree.options({gravity: value});\n return this;\n } else {\n return settings.gravity;\n }\n },\n\n theta: function (value) {\n if (value !== undefined) {\n settings.theta = value;\n quadTree.options({theta: value});\n return this;\n } else {\n return settings.theta;\n }\n }\n };\n\n // allow settings modification via public API:\n expose(settings, publicApi);\n\n eventify(publicApi);\n\n return publicApi;\n\n function accumulateForces() {\n // Accumulate forces acting on bodies.\n var body,\n i = bodies.length;\n\n if (i) {\n // only add bodies if there the array is not empty:\n quadTree.insertBodies(bodies); // performance: O(n * log n)\n while (i--) {\n body = bodies[i];\n // If body is pinned there is no point updating its forces - it should\n // never move:\n if (!body.isPinned) {\n body.force.reset();\n\n quadTree.updateBodyForce(body);\n dragForce.update(body);\n }\n }\n }\n\n i = springs.length;\n while(i--) {\n springForce.update(springs[i]);\n }\n }\n};\n","module.exports = function (bodies, settings) {\n var random = require('ngraph.random').random(42);\n var boundingBox = { x1: 0, y1: 0, x2: 0, y2: 0 };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset : function () {\n boundingBox.x1 = boundingBox.y1 = 0;\n boundingBox.x2 = boundingBox.y2 = 0;\n },\n\n getBestNewPosition: function (neighbors) {\n var graphRect = boundingBox;\n\n var baseX = 0, baseY = 0;\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n baseX += neighbors[i].pos.x;\n baseY += neighbors[i].pos.y;\n }\n\n baseX /= neighbors.length;\n baseY /= neighbors.length;\n } else {\n baseX = (graphRect.x1 + graphRect.x2) / 2;\n baseY = (graphRect.y1 + graphRect.y2) / 2;\n }\n\n var springLength = settings.springLength;\n return {\n x: baseX + random.next(springLength) - springLength / 2,\n y: baseY + random.next(springLength) - springLength / 2\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) { return; } // don't have to wory here.\n\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE;\n\n while(i--) {\n // this is O(n), could it be done faster with quadtree?\n // how about pinned nodes?\n var body = bodies[i];\n if (body.isPinned) {\n body.pos.x = body.prevPos.x;\n body.pos.y = body.prevPos.y;\n } else {\n body.prevPos.x = body.pos.x;\n body.prevPos.y = body.pos.y;\n }\n if (body.pos.x < x1) {\n x1 = body.pos.x;\n }\n if (body.pos.x > x2) {\n x2 = body.pos.x;\n }\n if (body.pos.y < y1) {\n y1 = body.pos.y;\n }\n if (body.pos.y > y2) {\n y2 = body.pos.y;\n }\n }\n\n boundingBox.x1 = x1;\n boundingBox.x2 = x2;\n boundingBox.y1 = y1;\n boundingBox.y2 = y2;\n }\n}\n","var physics = require('ngraph.physics.primitives');\n\nmodule.exports = function(pos) {\n return new physics.Body(pos);\n}\n","/**\n * Represents drag force, which reduces force value on each step by given\n * coefficient.\n *\n * @param {Object} options for the drag force\n * @param {Number=} options.dragCoeff drag force coefficient. 0.1 by default\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge'),\n expose = require('ngraph.expose');\n\n options = merge(options, {\n dragCoeff: 0.02\n });\n\n var api = {\n update : function (body) {\n body.force.x -= options.dragCoeff * body.velocity.x;\n body.force.y -= options.dragCoeff * body.velocity.y;\n }\n };\n\n // let easy access to dragCoeff:\n expose(options, api, ['dragCoeff']);\n\n return api;\n};\n","/**\n * Performs forces integration, using given timestep. Uses Euler method to solve\n * differential equation (http://en.wikipedia.org/wiki/Euler_method ).\n *\n * @returns {Number} squared distance of total position updates.\n */\n\nmodule.exports = integrate;\n\nfunction integrate(bodies, timeStep) {\n var dx = 0, tx = 0,\n dy = 0, ty = 0,\n i,\n max = bodies.length;\n\n if (max === 0) {\n return 0;\n }\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep / body.mass;\n\n body.velocity.x += coeff * body.force.x;\n body.velocity.y += coeff * body.force.y;\n var vx = body.velocity.x,\n vy = body.velocity.y,\n v = Math.sqrt(vx * vx + vy * vy);\n\n if (v > 1) {\n body.velocity.x = vx / v;\n body.velocity.y = vy / v;\n }\n\n dx = timeStep * body.velocity.x;\n dy = timeStep * body.velocity.y;\n\n body.pos.x += dx;\n body.pos.y += dy;\n\n tx += Math.abs(dx); ty += Math.abs(dy);\n }\n\n return (tx * tx + ty * ty)/max;\n}\n","module.exports = Spring;\n\n/**\n * Represents a physical spring. Spring connects two bodies, has rest length\n * stiffness coefficient and optional weight\n */\nfunction Spring(fromBody, toBody, length, coeff, weight) {\n this.from = fromBody;\n this.to = toBody;\n this.length = length;\n this.coeff = coeff;\n\n this.weight = typeof weight === 'number' ? weight : 1;\n};\n","/**\n * Represents spring force, which updates forces acting on two bodies, conntected\n * by a spring.\n *\n * @param {Object} options for the spring force\n * @param {Number=} options.springCoeff spring force coefficient.\n * @param {Number=} options.springLength desired length of a spring at rest.\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge');\n var random = require('ngraph.random').random(42);\n var expose = require('ngraph.expose');\n\n options = merge(options, {\n springCoeff: 0.0002,\n springLength: 80\n });\n\n var api = {\n /**\n * Upsates forces acting on a spring\n */\n update : function (spring) {\n var body1 = spring.from,\n body2 = spring.to,\n length = spring.length < 0 ? options.springLength : spring.length,\n dx = body2.pos.x - body1.pos.x,\n dy = body2.pos.y - body1.pos.y,\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n var d = r - length;\n var coeff = ((!spring.coeff || spring.coeff < 0) ? options.springCoeff : spring.coeff) * d / r * spring.weight;\n\n body1.force.x += coeff * dx;\n body1.force.y += coeff * dy;\n\n body2.force.x -= coeff * dx;\n body2.force.y -= coeff * dy;\n }\n };\n\n expose(options, api, ['springCoeff', 'springLength']);\n return api;\n}\n","/**\n * This is Barnes Hut simulation algorithm for 2d case. Implementation\n * is highly optimized (avoids recusion and gc pressure)\n *\n * http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html\n */\n\nmodule.exports = function(options) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n // we require deterministic randomness here\n var random = require('ngraph.random').random(1984),\n Node = require('./node'),\n InsertStack = require('./insertStack'),\n isSamePosition = require('./isSamePosition');\n\n var gravity = options.gravity,\n updateQueue = [],\n insertStack = new InsertStack(),\n theta = options.theta,\n\n nodesCache = [],\n currentInCache = 0,\n root = newNode();\n\n return {\n insertBodies: insertBodies,\n /**\n * Gets root node if its present\n */\n getRoot: function() {\n return root;\n },\n updateBodyForce: update,\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n node.quad0 = null;\n node.quad1 = null;\n node.quad2 = null;\n node.quad3 = null;\n node.body = null;\n node.mass = node.massX = node.massY = 0;\n node.left = node.right = node.top = node.bottom = 0;\n } else {\n node = new Node();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update(sourceBody) {\n var queue = updateQueue,\n v,\n dx,\n dy,\n r, fx = 0,\n fy = 0,\n queueLength = 1,\n shiftIdx = 0,\n pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx],\n body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n dx = body.pos.x - sourceBody.pos.x;\n dy = body.pos.y - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n // This is standard gravition force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n dx = node.massX / node.mass - sourceBody.pos.x;\n dy = node.massY / node.mass - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Sorry about code duplucation. I don't want to create many functions\n // right away. Just want to see performance first.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.right - node.left) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was squarified during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n if (node.quad0) {\n queue[pushIdx] = node.quad0;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad1) {\n queue[pushIdx] = node.quad1;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad2) {\n queue[pushIdx] = node.quad2;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad3) {\n queue[pushIdx] = node.quad3;\n queueLength += 1;\n pushIdx += 1;\n }\n }\n }\n }\n\n sourceBody.force.x += fx;\n sourceBody.force.y += fy;\n }\n\n function insertBodies(bodies) {\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n i,\n max = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n i = max;\n while (i--) {\n var x = bodies[i].pos.x;\n var y = bodies[i].pos.y;\n if (x < x1) {\n x1 = x;\n }\n if (x > x2) {\n x2 = x;\n }\n if (y < y1) {\n y1 = y;\n }\n if (y > y2) {\n y2 = y;\n }\n }\n\n // Squarify the bounds.\n var dx = x2 - x1,\n dy = y2 - y1;\n if (dx > dy) {\n y2 = y1 + dx;\n } else {\n x2 = x1 + dy;\n }\n\n currentInCache = 0;\n root = newNode();\n root.left = x1;\n root.right = x2;\n root.top = y1;\n root.bottom = y2;\n\n i = max - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop(),\n node = stackItem.node,\n body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n var x = body.pos.x;\n var y = body.pos.y;\n node.mass = node.mass + body.mass;\n node.massX = node.massX + body.mass * x;\n node.massY = node.massY + body.mass * y;\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0, // Assume we are in the 0's quad.\n left = node.left,\n right = (node.right + left) / 2,\n top = node.top,\n bottom = (node.bottom + top) / 2;\n\n if (x > right) { // somewhere in the eastern part.\n quadIdx = quadIdx + 1;\n left = right;\n right = node.right;\n }\n if (y > bottom) { // and in south.\n quadIdx = quadIdx + 2;\n top = bottom;\n bottom = node.bottom;\n }\n\n var child = getChild(node, quadIdx);\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n child.left = left;\n child.top = top;\n child.right = right;\n child.bottom = bottom;\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n var dx = (node.right - node.left) * offset;\n var dy = (node.bottom - node.top) * offset;\n\n oldBody.pos.x = node.left + dx;\n oldBody.pos.y = node.top + dy;\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n};\n\nfunction getChild(node, idx) {\n if (idx === 0) return node.quad0;\n if (idx === 1) return node.quad1;\n if (idx === 2) return node.quad2;\n if (idx === 3) return node.quad3;\n return null;\n}\n\nfunction setChild(node, idx, child) {\n if (idx === 0) node.quad0 = child;\n else if (idx === 1) node.quad1 = child;\n else if (idx === 2) node.quad2 = child;\n else if (idx === 3) node.quad3 = child;\n}\n","module.exports = InsertStack;\n\n/**\n * Our implmentation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressue: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n","module.exports = function isSamePosition(point1, point2) {\n var dx = Math.abs(point1.x - point2.x);\n var dy = Math.abs(point1.y - point2.y);\n\n return (dx < 1e-8 && dy < 1e-8);\n};\n","/**\n * Internal data structure to represent 2D QuadTree node\n */\nmodule.exports = function Node() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain boides:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n this.quad0 = null;\n this.quad1 = null;\n this.quad2 = null;\n this.quad3 = null;\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n this.massX = 0;\n this.massY = 0;\n\n // bounding box coordinates\n this.left = 0;\n this.top = 0;\n this.bottom = 0;\n this.right = 0;\n};\n","module.exports = {\n random: random,\n randomIterator: randomIterator\n};\n\n/**\n * Creates seeded PRNG with two methods:\n * next() and nextDouble()\n */\nfunction random(inputSeed) {\n var seed = typeof inputSeed === 'number' ? inputSeed : (+ new Date());\n var randomFunc = function() {\n // Robert Jenkins' 32 bit integer hash function.\n seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;\n seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;\n seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;\n seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;\n seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;\n seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;\n return (seed & 0xfffffff) / 0x10000000;\n };\n\n return {\n /**\n * Generates random integer number in the range from 0 (inclusive) to maxValue (exclusive)\n *\n * @param maxValue Number REQUIRED. Ommitting this number will result in NaN values from PRNG.\n */\n next : function (maxValue) {\n return Math.floor(randomFunc() * maxValue);\n },\n\n /**\n * Generates random double number in the range from 0 (inclusive) to 1 (exclusive)\n * This function is the same as Math.random() (except that it could be seeded)\n */\n nextDouble : function () {\n return randomFunc();\n }\n };\n}\n\n/*\n * Creates iterator over array, which returns items of array in random order\n * Time complexity is guaranteed to be O(n);\n */\nfunction randomIterator(array, customRandom) {\n var localRandom = customRandom || random();\n if (typeof localRandom.next !== 'function') {\n throw new Error('customRandom does not match expected API: next() function is missing');\n }\n\n return {\n forEach : function (callback) {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n\n callback(t);\n }\n\n if (array.length) {\n callback(array[0]);\n }\n },\n\n /**\n * Shuffles array randomly, in place.\n */\n shuffle : function () {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n }\n\n return array;\n }\n };\n}\n","module.exports = save;\n\nfunction save(graph, customNodeTransform, customLinkTransform) {\n // Object contains `nodes` and `links` arrays.\n var result = {\n nodes: [],\n links: []\n };\n\n var nodeTransform = customNodeTransform || defaultTransformForNode;\n var linkTransform = customLinkTransform || defaultTransformForLink;\n\n graph.forEachNode(saveNode);\n graph.forEachLink(saveLink);\n\n return JSON.stringify(result);\n\n function saveNode(node) {\n // Each node of the graph is processed to take only required fields\n // `id` and `data`\n result.nodes.push(nodeTransform(node));\n }\n\n function saveLink(link) {\n // Each link of the graph is also processed to take `fromId`, `toId` and\n // `data`\n result.links.push(linkTransform(link));\n }\n\n function defaultTransformForNode(node) {\n var result = {\n id: node.id\n };\n // We don't want to store undefined fields when it's not necessary:\n if (node.data !== undefined) {\n result.data = node.data;\n }\n\n return result;\n }\n\n function defaultTransformForLink(link) {\n var result = {\n fromId: link.fromId,\n toId: link.toId,\n };\n\n if (link.data !== undefined) {\n result.data = link.data;\n }\n\n return result;\n }\n}\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","module.exports = svg;\n\nsvg.compile = require('./lib/compile');\n\nvar compileTemplate = svg.compileTemplate = require('./lib/compile_template');\n\nvar domEvents = require('add-event-listener');\n\nvar svgns = \"http://www.w3.org/2000/svg\";\nvar xlinkns = \"http://www.w3.org/1999/xlink\";\n\nfunction svg(element, attrBag) {\n var svgElement = augment(element);\n if (attrBag === undefined) {\n return svgElement;\n }\n\n var attributes = Object.keys(attrBag);\n for (var i = 0; i < attributes.length; ++i) {\n var attributeName = attributes[i];\n var value = attrBag[attributeName];\n if (attributeName === 'link') {\n svgElement.link(value);\n } else {\n svgElement.attr(attributeName, value);\n }\n }\n\n return svgElement;\n}\n\nfunction augment(element) {\n var svgElement = element;\n\n if (typeof element === \"string\") {\n svgElement = window.document.createElementNS(svgns, element);\n } else if (element.simplesvg) {\n return element;\n }\n\n var compiledTempalte;\n\n svgElement.simplesvg = true; // this is not good, since we are monkey patching svg\n svgElement.attr = attr;\n svgElement.append = append;\n svgElement.link = link;\n svgElement.text = text;\n\n // add easy eventing\n svgElement.on = on;\n svgElement.off = off;\n\n // data binding:\n svgElement.dataSource = dataSource;\n\n return svgElement;\n\n function dataSource(model) {\n if (!compiledTempalte) compiledTempalte = compileTemplate(svgElement);\n compiledTempalte.link(model);\n return svgElement;\n }\n\n function on(name, cb, useCapture) {\n domEvents.addEventListener(svgElement, name, cb, useCapture);\n return svgElement;\n }\n\n function off(name, cb, useCapture) {\n domEvents.removeEventListener(svgElement, name, cb, useCapture);\n return svgElement;\n }\n\n function append(content) {\n var child = svg(content);\n svgElement.appendChild(child);\n\n return child;\n }\n\n function attr(name, value) {\n if (arguments.length === 2) {\n if (value !== null) {\n svgElement.setAttributeNS(null, name, value);\n } else {\n svgElement.removeAttributeNS(null, name);\n }\n\n return svgElement;\n }\n\n return svgElement.getAttributeNS(null, name);\n }\n\n function link(target) {\n if (arguments.length) {\n svgElement.setAttributeNS(xlinkns, \"xlink:href\", target);\n return svgElement;\n }\n\n return svgElement.getAttributeNS(xlinkns, \"xlink:href\");\n }\n\n function text(textContent) {\n if (textContent !== undefined) {\n svgElement.textContent = textContent;\n return svgElement;\n }\n return svgElement.textContent;\n }\n}\n","var parser = require('./domparser.js');\nvar svg = require('../');\n\nmodule.exports = compile;\n\nfunction compile(svgText) {\n try {\n svgText = addNamespaces(svgText);\n return svg(parser.parseFromString(svgText, \"text/xml\").documentElement);\n } catch (e) {\n throw e;\n }\n}\n\nfunction addNamespaces(text) {\n if (!text) return;\n\n var namespaces = 'xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\"';\n var match = text.match(/^<\\w+/);\n if (match) {\n var tagLength = match[0].length;\n return text.substr(0, tagLength) + ' ' + namespaces + ' ' + text.substr(tagLength);\n } else {\n throw new Error('Cannot parse input text: invalid xml?');\n }\n}\n","module.exports = template;\n\nvar BINDING_EXPR = /{{(.+?)}}/;\n\nfunction template(domNode) {\n var allBindings = Object.create(null);\n extractAllBindings(domNode, allBindings);\n\n return {\n link: function(model) {\n Object.keys(allBindings).forEach(function(key) {\n var setter = allBindings[key];\n setter.forEach(changeModel);\n });\n\n function changeModel(setter) {\n setter(model);\n }\n }\n };\n}\n\nfunction extractAllBindings(domNode, allBindings) {\n var nodeType = domNode.nodeType;\n var typeSupported = (nodeType === 1) || (nodeType === 3);\n if (!typeSupported) return;\n var i;\n if (domNode.hasChildNodes()) {\n var domChildren = domNode.childNodes;\n for (i = 0; i < domChildren.length; ++i) {\n extractAllBindings(domChildren[i], allBindings);\n }\n }\n\n if (nodeType === 3) { // text:\n bindTextContent(domNode, allBindings);\n }\n\n if (!domNode.attributes) return; // this might be a text. Need to figure out what to do in that case\n\n var attrs = domNode.attributes;\n for (i = 0; i < attrs.length; ++i) {\n bindDomAttribute(attrs[i], domNode, allBindings);\n }\n}\n\nfunction bindDomAttribute(domAttribute, element, allBindings) {\n var value = domAttribute.value;\n if (!value) return; // unary attribute?\n\n var modelNameMatch = value.match(BINDING_EXPR);\n if (!modelNameMatch) return; // does not look like a binding\n\n var attrName = domAttribute.localName;\n var modelPropertyName = modelNameMatch[1];\n var isSimpleValue = modelPropertyName.indexOf('.') < 0;\n\n if (!isSimpleValue) throw new Error('simplesvg currently does not support nested bindings');\n\n var propertyBindings = allBindings[modelPropertyName];\n if (!propertyBindings) {\n propertyBindings = allBindings[modelPropertyName] = [attributeSetter];\n } else {\n propertyBindings.push(attributeSetter);\n }\n\n function attributeSetter(model) {\n element.setAttributeNS(null, attrName, model[modelPropertyName]);\n }\n}\nfunction bindTextContent(element, allBindings) {\n // todo reduce duplication\n var value = element.nodeValue;\n if (!value) return; // unary attribute?\n\n var modelNameMatch = value.match(BINDING_EXPR);\n if (!modelNameMatch) return; // does not look like a binding\n\n var modelPropertyName = modelNameMatch[1];\n var isSimpleValue = modelPropertyName.indexOf('.') < 0;\n\n var propertyBindings = allBindings[modelPropertyName];\n if (!propertyBindings) {\n propertyBindings = allBindings[modelPropertyName] = [textSetter];\n } else {\n propertyBindings.push(textSetter);\n }\n\n function textSetter(model) {\n element.nodeValue = model[modelPropertyName];\n }\n}\n","module.exports = createDomparser();\n\nfunction createDomparser() {\n if (typeof DOMParser === 'undefined') {\n return {\n parseFromString: fail\n };\n }\n return new DOMParser();\n}\n\nfunction fail() {\n throw new Error('DOMParser is not supported by this platform. Please open issue here https://github.com/anvaka/simplesvg');\n}\n","var centrality = require('ngraph.centrality');\n\nmodule.exports = centralityWrapper;\n\nfunction centralityWrapper() {\n // TODO: This should not be a function\n return {\n betweennessCentrality: betweennessCentrality,\n degreeCentrality: degreeCentrality\n };\n}\n\nfunction betweennessCentrality(g) {\n var betweenness = centrality.betweenness(g);\n return toVivaGraphCentralityFormat(betweenness);\n}\n\nfunction degreeCentrality(g, kind) {\n var degree = centrality.degree(g, kind);\n return toVivaGraphCentralityFormat(degree);\n}\n\nfunction toVivaGraphCentralityFormat(centrality) {\n return Object.keys(centrality).sort(byValue).map(toKeyValue);\n\n function byValue(x, y) {\n return centrality[y] - centrality[x];\n }\n\n function toKeyValue(key) {\n return {\n key: key,\n value: centrality[key]\n };\n }\n}\n","/**\r\n * @fileOverview Contains collection of primitive operations under graph.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\nmodule.exports = operations;\r\n\r\nfunction operations() {\r\n\r\n return {\r\n /**\r\n * Gets graph density, which is a ratio of actual number of edges to maximum\r\n * number of edges. I.e. graph density 1 means all nodes are connected with each other with an edge.\r\n * Density 0 - graph has no edges. Runtime: O(1)\r\n * \r\n * @param graph represents oriented graph structure.\r\n * @param directed (optional boolean) represents if the graph should be treated as a directed graph.\r\n * \r\n * @returns density of the graph if graph has nodes. NaN otherwise. Returns density for undirected graph by default but returns density for directed graph if a boolean 'true' is passed along with the graph.\r\n */\r\n density : function (graph,directed) {\r\n var nodes = graph.getNodesCount();\r\n if (nodes === 0) {\r\n return NaN;\r\n }\r\n if(directed){\r\n return graph.getLinksCount() / (nodes * (nodes - 1));\r\n } else {\r\n return 2 * graph.getLinksCount() / (nodes * (nodes - 1));\r\n }\r\n }\r\n };\r\n};\r\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = domInputManager;\n\nvar dragndrop = require('./dragndrop.js');\n\nfunction domInputManager(graph, graphics) {\n var nodeEvents = {};\n return {\n /**\n * Called by renderer to listen to drag-n-drop events from node. E.g. for SVG\n * graphics we may listen to DOM events, whereas for WebGL the graphics\n * should provide custom eventing mechanism.\n *\n * @param node - to be monitored.\n * @param handlers - object with set of three callbacks:\n * onStart: function(),\n * onDrag: function(e, offset),\n * onStop: function()\n */\n bindDragNDrop: bindDragNDrop\n };\n\n function bindDragNDrop(node, handlers) {\n var events;\n if (handlers) {\n var nodeUI = graphics.getNodeUI(node.id);\n events = dragndrop(nodeUI);\n if (typeof handlers.onStart === 'function') {\n events.onStart(handlers.onStart);\n }\n if (typeof handlers.onDrag === 'function') {\n events.onDrag(handlers.onDrag);\n }\n if (typeof handlers.onStop === 'function') {\n events.onStop(handlers.onStop);\n }\n\n nodeEvents[node.id] = events;\n } else if ((events = nodeEvents[node.id])) {\n events.release();\n delete nodeEvents[node.id];\n }\n }\n}\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = dragndrop;\n\nvar documentEvents = require('../Utils/documentEvents.js');\nvar browserInfo = require('../Utils/browserInfo.js');\nvar findElementPosition = require('../Utils/findElementPosition.js');\n\n// TODO: Move to input namespace\n// TODO: Methods should be extracted into the prototype. This class\n// does not need to consume so much memory for every tracked element\nfunction dragndrop(element) {\n var start,\n drag,\n end,\n scroll,\n prevSelectStart,\n prevDragStart,\n\n startX = 0,\n startY = 0,\n dragObject,\n touchInProgress = false,\n pinchZoomLength = 0,\n\n getMousePos = function (e) {\n var posx = 0,\n posy = 0;\n\n e = e || window.event;\n\n if (e.pageX || e.pageY) {\n posx = e.pageX;\n posy = e.pageY;\n } else if (e.clientX || e.clientY) {\n posx = e.clientX + window.document.body.scrollLeft + window.document.documentElement.scrollLeft;\n posy = e.clientY + window.document.body.scrollTop + window.document.documentElement.scrollTop;\n }\n\n return [posx, posy];\n },\n\n move = function (e, clientX, clientY) {\n if (drag) {\n drag(e, {x : clientX - startX, y : clientY - startY });\n }\n\n startX = clientX;\n startY = clientY;\n },\n\n stopPropagation = function (e) {\n if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; }\n },\n preventDefault = function (e) {\n if (e.preventDefault) { e.preventDefault(); }\n },\n\n handleDisabledEvent = function (e) {\n stopPropagation(e);\n return false;\n },\n\n handleMouseMove = function (e) {\n e = e || window.event;\n\n move(e, e.clientX, e.clientY);\n },\n\n handleMouseDown = function (e) {\n e = e || window.event;\n if (touchInProgress) {\n // modern browsers will fire mousedown for touch events too\n // we do not want this, since touch is handled separately.\n stopPropagation(e);\n return false;\n }\n // for IE, left click == 1\n // for Firefox, left click == 0\n var isLeftButton = ((e.button === 1 && window.event !== null) || e.button === 0);\n\n if (isLeftButton) {\n startX = e.clientX;\n startY = e.clientY;\n\n // TODO: bump zIndex?\n dragObject = e.target || e.srcElement;\n\n if (start) { start(e, {x: startX, y : startY}); }\n\n documentEvents.on('mousemove', handleMouseMove);\n documentEvents.on('mouseup', handleMouseUp);\n\n\n stopPropagation(e);\n // TODO: What if event already there? Not bullet proof:\n prevSelectStart = window.document.onselectstart;\n prevDragStart = window.document.ondragstart;\n\n window.document.onselectstart = handleDisabledEvent;\n dragObject.ondragstart = handleDisabledEvent;\n\n // prevent text selection (except IE)\n return false;\n }\n },\n\n handleMouseUp = function (e) {\n e = e || window.event;\n\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n\n window.document.onselectstart = prevSelectStart;\n dragObject.ondragstart = prevDragStart;\n dragObject = null;\n if (end) { end(e); }\n },\n\n handleMouseWheel = function (e) {\n if (typeof scroll !== 'function') {\n return;\n }\n\n e = e || window.event;\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n e.returnValue = false;\n var delta,\n mousePos = getMousePos(e),\n elementOffset = findElementPosition(element),\n relMousePos = {\n x: mousePos[0] - elementOffset[0],\n y: mousePos[1] - elementOffset[1]\n };\n\n if (e.wheelDelta) {\n delta = e.wheelDelta / 360; // Chrome/Safari\n } else {\n delta = e.detail / -9; // Mozilla\n }\n\n scroll(e, delta, relMousePos);\n },\n\n updateScrollEvents = function (scrollCallback) {\n if (!scroll && scrollCallback) {\n // client is interested in scrolling. Start listening to events:\n if (browserInfo.browser === 'webkit') {\n element.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari\n } else {\n element.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others\n }\n } else if (scroll && !scrollCallback) {\n if (browserInfo.browser === 'webkit') {\n element.removeEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari\n } else {\n element.removeEventListener('DOMMouseScroll', handleMouseWheel, false); // Others\n }\n }\n\n scroll = scrollCallback;\n },\n\n getPinchZoomLength = function(finger1, finger2) {\n return (finger1.clientX - finger2.clientX) * (finger1.clientX - finger2.clientX) +\n (finger1.clientY - finger2.clientY) * (finger1.clientY - finger2.clientY);\n },\n\n handleTouchMove = function (e) {\n if (e.touches.length === 1) {\n stopPropagation(e);\n\n var touch = e.touches[0];\n move(e, touch.clientX, touch.clientY);\n } else if (e.touches.length === 2) {\n // it's a zoom:\n var currentPinchLength = getPinchZoomLength(e.touches[0], e.touches[1]);\n var delta = 0;\n if (currentPinchLength < pinchZoomLength) {\n delta = -1;\n } else if (currentPinchLength > pinchZoomLength) {\n delta = 1;\n }\n scroll(e, delta, {x: e.touches[0].clientX, y: e.touches[0].clientY});\n pinchZoomLength = currentPinchLength;\n stopPropagation(e);\n preventDefault(e);\n }\n },\n\n handleTouchEnd = function (e) {\n touchInProgress = false;\n documentEvents.off('touchmove', handleTouchMove);\n documentEvents.off('touchend', handleTouchEnd);\n documentEvents.off('touchcancel', handleTouchEnd);\n dragObject = null;\n if (end) { end(e); }\n },\n\n handleSignleFingerTouch = function (e, touch) {\n stopPropagation(e);\n preventDefault(e);\n\n startX = touch.clientX;\n startY = touch.clientY;\n\n dragObject = e.target || e.srcElement;\n\n if (start) { start(e, {x: startX, y : startY}); }\n // TODO: can I enter into the state when touch is in progress\n // but it's still a single finger touch?\n if (!touchInProgress) {\n touchInProgress = true;\n documentEvents.on('touchmove', handleTouchMove);\n documentEvents.on('touchend', handleTouchEnd);\n documentEvents.on('touchcancel', handleTouchEnd);\n }\n },\n\n handleTouchStart = function (e) {\n if (e.touches.length === 1) {\n return handleSignleFingerTouch(e, e.touches[0]);\n } else if (e.touches.length === 2) {\n // handleTouchMove() will care about pinch zoom.\n stopPropagation(e);\n preventDefault(e);\n\n pinchZoomLength = getPinchZoomLength(e.touches[0], e.touches[1]);\n\n }\n // don't care about the rest.\n };\n\n\n element.addEventListener('mousedown', handleMouseDown);\n element.addEventListener('touchstart', handleTouchStart);\n\n return {\n onStart : function (callback) {\n start = callback;\n return this;\n },\n\n onDrag : function (callback) {\n drag = callback;\n return this;\n },\n\n onStop : function (callback) {\n end = callback;\n return this;\n },\n\n /**\n * Occurs when mouse wheel event happens. callback = function(e, scrollDelta, scrollPoint);\n */\n onScroll : function (callback) {\n updateScrollEvents(callback);\n return this;\n },\n\n release : function () {\n // TODO: could be unsafe. We might wanna release dragObject, etc.\n element.removeEventListener('mousedown', handleMouseDown);\n element.removeEventListener('touchstart', handleTouchStart);\n\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n documentEvents.off('touchmove', handleTouchMove);\n documentEvents.off('touchend', handleTouchEnd);\n documentEvents.off('touchcancel', handleTouchEnd);\n\n updateScrollEvents(null);\n }\n };\n}\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = webglInputManager;\n\nvar createInputEvents = require('../WebGL/webglInputEvents.js');\n\nfunction webglInputManager(graph, graphics) {\n var inputEvents = createInputEvents(graphics),\n draggedNode = null,\n internalHandlers = {},\n pos = {x : 0, y : 0};\n\n inputEvents.mouseDown(function (node, e) {\n draggedNode = node;\n pos.x = e.clientX;\n pos.y = e.clientY;\n\n inputEvents.mouseCapture(draggedNode);\n\n var handlers = internalHandlers[node.id];\n if (handlers && handlers.onStart) {\n handlers.onStart(e, pos);\n }\n\n return true;\n }).mouseUp(function (node) {\n inputEvents.releaseMouseCapture(draggedNode);\n\n draggedNode = null;\n var handlers = internalHandlers[node.id];\n if (handlers && handlers.onStop) {\n handlers.onStop();\n }\n return true;\n }).mouseMove(function (node, e) {\n if (draggedNode) {\n var handlers = internalHandlers[draggedNode.id];\n if (handlers && handlers.onDrag) {\n handlers.onDrag(e, {x : e.clientX - pos.x, y : e.clientY - pos.y });\n }\n\n pos.x = e.clientX;\n pos.y = e.clientY;\n return true;\n }\n });\n\n return {\n /**\n * Called by renderer to listen to drag-n-drop events from node. E.g. for SVG\n * graphics we may listen to DOM events, whereas for WebGL we graphics\n * should provide custom eventing mechanism.\n *\n * @param node - to be monitored.\n * @param handlers - object with set of three callbacks:\n * onStart: function(),\n * onDrag: function(e, offset),\n * onStop: function()\n */\n bindDragNDrop : function (node, handlers) {\n internalHandlers[node.id] = handlers;\n if (!handlers) {\n delete internalHandlers[node.id];\n }\n }\n };\n}\n","module.exports = constant;\n\nvar merge = require('ngraph.merge');\nvar random = require('ngraph.random').random;\nvar Rect = require('../Utils/rect.js');\n\n/**\n * Does not really perform any layouting algorithm but is compliant\n * with renderer interface. Allowing clients to provide specific positioning\n * callback and get static layout of the graph\n *\n * @param {Viva.Graph.graph} graph to layout\n * @param {Object} userSettings\n */\nfunction constant(graph, userSettings) {\n userSettings = merge(userSettings, {\n maxX : 1024,\n maxY : 1024,\n seed : 'Deterministic randomness made me do this'\n });\n // This class simply follows API, it does not use some of the arguments:\n /*jshint unused: false */\n var rand = random(userSettings.seed),\n graphRect = new Rect(Number.MAX_VALUE, Number.MAX_VALUE, Number.MIN_VALUE, Number.MIN_VALUE),\n layoutLinks = {},\n\n placeNodeCallback = function (node) {\n return {\n x: rand.next(userSettings.maxX),\n y: rand.next(userSettings.maxY)\n };\n },\n\n updateGraphRect = function (position, graphRect) {\n if (position.x < graphRect.x1) { graphRect.x1 = position.x; }\n if (position.x > graphRect.x2) { graphRect.x2 = position.x; }\n if (position.y < graphRect.y1) { graphRect.y1 = position.y; }\n if (position.y > graphRect.y2) { graphRect.y2 = position.y; }\n },\n\n layoutNodes = typeof Object.create === 'function' ? Object.create(null) : {},\n\n ensureNodeInitialized = function (node) {\n layoutNodes[node.id] = placeNodeCallback(node);\n updateGraphRect(layoutNodes[node.id], graphRect);\n },\n\n updateNodePositions = function () {\n if (graph.getNodesCount() === 0) { return; }\n\n graphRect.x1 = Number.MAX_VALUE;\n graphRect.y1 = Number.MAX_VALUE;\n graphRect.x2 = Number.MIN_VALUE;\n graphRect.y2 = Number.MIN_VALUE;\n\n graph.forEachNode(ensureNodeInitialized);\n },\n\n ensureLinkInitialized = function (link) {\n layoutLinks[link.id] = link;\n },\n\n onGraphChanged = function(changes) {\n for (var i = 0; i < changes.length; ++i) {\n var change = changes[i];\n if (change.node) {\n if (change.changeType === 'add') {\n ensureNodeInitialized(change.node);\n } else {\n delete layoutNodes[change.node.id];\n }\n } if (change.link) {\n if (change.changeType === 'add') {\n ensureLinkInitialized(change.link);\n } else {\n delete layoutLinks[change.link.id];\n }\n }\n }\n };\n\n graph.forEachNode(ensureNodeInitialized);\n graph.forEachLink(ensureLinkInitialized);\n graph.on('changed', onGraphChanged);\n\n return {\n /**\n * Attempts to layout graph within given number of iterations.\n *\n * @param {integer} [iterationsCount] number of algorithm's iterations.\n * The constant layout ignores this parameter.\n */\n run : function (iterationsCount) {\n this.step();\n },\n\n /**\n * One step of layout algorithm.\n */\n step : function () {\n updateNodePositions();\n\n return true; // no need to continue.\n },\n\n /**\n * Returns rectangle structure {x1, y1, x2, y2}, which represents\n * current space occupied by graph.\n */\n getGraphRect : function () {\n return graphRect;\n },\n\n /**\n * Request to release all resources\n */\n dispose : function () {\n graph.off('change', onGraphChanged);\n },\n\n /*\n * Checks whether given node is pinned; all nodes in this layout are pinned.\n */\n isNodePinned: function (node) {\n return true;\n },\n\n /*\n * Requests layout algorithm to pin/unpin node to its current position\n * Pinned nodes should not be affected by layout algorithm and always\n * remain at their position\n */\n pinNode: function (node, isPinned) {\n // noop\n },\n\n /*\n * Gets position of a node by its id. If node was not seen by this\n * layout algorithm undefined value is returned;\n */\n getNodePosition: getNodePosition,\n\n /**\n * Returns {from, to} position of a link.\n */\n getLinkPosition: function (linkId) {\n var link = layoutLinks[linkId];\n return {\n from : getNodePosition(link.fromId),\n to : getNodePosition(link.toId)\n };\n },\n\n /**\n * Sets position of a node to a given coordinates\n */\n setNodePosition: function (nodeId, x, y) {\n var pos = layoutNodes[nodeId];\n if (pos) {\n pos.x = x;\n pos.y = y;\n }\n },\n\n // Layout specific methods:\n\n /**\n * Based on argument either update default node placement callback or\n * attempts to place given node using current placement callback.\n * Setting new node callback triggers position update for all nodes.\n *\n * @param {Object} newPlaceNodeCallbackOrNode - if it is a function then\n * default node placement callback is replaced with new one. Node placement\n * callback has a form of function (node) {}, and is expected to return an\n * object with x and y properties set to numbers.\n *\n * Otherwise if it's not a function the argument is treated as graph node\n * and current node placement callback will be used to place it.\n */\n placeNode : function (newPlaceNodeCallbackOrNode) {\n if (typeof newPlaceNodeCallbackOrNode === 'function') {\n placeNodeCallback = newPlaceNodeCallbackOrNode;\n updateNodePositions();\n return this;\n }\n\n // it is not a request to update placeNodeCallback, trying to place\n // a node using current callback:\n return placeNodeCallback(newPlaceNodeCallbackOrNode);\n }\n\n };\n\n function getNodePosition(nodeId) {\n return layoutNodes[nodeId];\n }\n}\n","/**\n * This module provides compatibility layer with 0.6.x library. It will be\n * removed in the next version\n */\n\nvar events = require('ngraph.events');\n\nmodule.exports = backwardCompatibleEvents;\n\nfunction backwardCompatibleEvents(g) {\n console.log(\"This method is deprecated. Please use Viva.events() instead\");\n\n if (!g) {\n return g;\n }\n\n var eventsDefined = (g.on !== undefined) ||\n (g.off !== undefined) ||\n (g.fire !== undefined);\n\n if (eventsDefined) {\n // events already defined, ignore\n return {\n extend: function() {\n return g;\n },\n on: g.on,\n stop: g.off\n };\n }\n\n return {\n extend: extend,\n on: g.on,\n stop: g.off\n };\n\n function extend() {\n var backwardCompatible = events(g);\n backwardCompatible.addEventListener = backwardCompatible.on;\n return backwardCompatible;\n }\n}\n","module.exports = browserInfo();\r\n\r\nfunction browserInfo() {\r\n if (typeof window === \"undefined\" || !window.hasOwnProperty(\"navigator\")) {\r\n return {\r\n browser : \"\",\r\n version : \"0\"\r\n };\r\n }\r\n\r\n var ua = window.navigator.userAgent.toLowerCase(),\r\n // Useragent RegExp\r\n rwebkit = /(webkit)[ \\/]([\\w.]+)/,\r\n ropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\r\n rmsie = /(msie) ([\\w.]+)/,\r\n rmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\r\n match = rwebkit.exec(ua) ||\r\n ropera.exec(ua) ||\r\n rmsie.exec(ua) ||\r\n (ua.indexOf(\"compatible\") < 0 && rmozilla.exec(ua)) ||\r\n [];\r\n\r\n return {\r\n browser: match[1] || \"\",\r\n version: match[2] || \"0\"\r\n };\r\n}\r\n","var nullEvents = require('./nullEvents.js');\n\nmodule.exports = createDocumentEvents();\n\nfunction createDocumentEvents() {\n if (typeof document === undefined) {\n return nullEvents;\n }\n\n return {\n on: on,\n off: off\n };\n}\n\nfunction on(eventName, handler) {\n document.addEventListener(eventName, handler);\n}\n\nfunction off(eventName, handler) {\n document.removeEventListener(eventName, handler);\n}\n","/**\n * Finds the absolute position of an element on a page\n */\nmodule.exports = findElementPosition;\n\nfunction findElementPosition(obj) {\n var curleft = 0,\n curtop = 0;\n if (obj.offsetParent) {\n do {\n curleft += obj.offsetLeft;\n curtop += obj.offsetTop;\n } while ((obj = obj.offsetParent) !== null);\n }\n\n return [curleft, curtop];\n}\n","module.exports = getDimension;\r\n\r\nfunction getDimension(container) {\r\n if (!container) {\r\n throw {\r\n message : 'Cannot get dimensions of undefined container'\r\n };\r\n }\r\n\r\n // TODO: Potential cross browser bug.\r\n var width = container.clientWidth;\r\n var height = container.clientHeight;\r\n\r\n return {\r\n left : 0,\r\n top : 0,\r\n width : width,\r\n height : height\r\n };\r\n}\r\n","var intersect = require('gintersect');\n\nmodule.exports = intersectRect;\n\nfunction intersectRect(left, top, right, bottom, x1, y1, x2, y2) {\n return intersect(left, top, left, bottom, x1, y1, x2, y2) ||\n intersect(left, bottom, right, bottom, x1, y1, x2, y2) ||\n intersect(right, bottom, right, top, x1, y1, x2, y2) ||\n intersect(right, top, left, top, x1, y1, x2, y2);\n}\n","module.exports = createNullEvents();\n\nfunction createNullEvents() {\n return {\n on: noop,\n off: noop,\n stop: noop\n };\n}\n\nfunction noop() { }\n","module.exports = Rect;\n\n/**\n * Very generic rectangle.\n */\nfunction Rect (x1, y1, x2, y2) {\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n}\n","/**\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = createTimer();\r\n\r\nfunction createTimer() {\r\n var lastTime = 0,\r\n vendors = ['ms', 'moz', 'webkit', 'o'],\r\n i,\r\n scope;\r\n\r\n if (typeof window !== 'undefined') {\r\n scope = window;\r\n } else if (typeof global !== 'undefined') {\r\n scope = global;\r\n } else {\r\n scope = {\r\n setTimeout: noop,\r\n clearTimeout: noop\r\n };\r\n }\r\n\r\n for (i = 0; i < vendors.length && !scope.requestAnimationFrame; ++i) {\r\n var vendorPrefix = vendors[i];\r\n scope.requestAnimationFrame = scope[vendorPrefix + 'RequestAnimationFrame'];\r\n scope.cancelAnimationFrame =\r\n scope[vendorPrefix + 'CancelAnimationFrame'] || scope[vendorPrefix + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!scope.requestAnimationFrame) {\r\n scope.requestAnimationFrame = rafPolyfill;\r\n }\r\n\r\n if (!scope.cancelAnimationFrame) {\r\n scope.cancelAnimationFrame = cancelRafPolyfill;\r\n }\r\n\r\n return timer;\r\n\r\n /**\r\n * Timer that fires callback with given interval (in ms) until\r\n * callback returns true;\r\n */\r\n function timer(callback) {\r\n var intervalId;\r\n startTimer(); // start it right away.\r\n\r\n return {\r\n /**\r\n * Stops execution of the callback\r\n */\r\n stop: stopTimer,\r\n\r\n restart: restart\r\n };\r\n\r\n function startTimer() {\r\n intervalId = scope.requestAnimationFrame(startTimer);\r\n if (!callback()) {\r\n stopTimer();\r\n }\r\n }\r\n\r\n function stopTimer() {\r\n scope.cancelAnimationFrame(intervalId);\r\n intervalId = 0;\r\n }\r\n\r\n function restart() {\r\n if (!intervalId) {\r\n startTimer();\r\n }\r\n }\r\n }\r\n\r\n function rafPolyfill(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = scope.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n }\r\n\r\n function cancelRafPolyfill(id) {\r\n scope.clearTimeout(id);\r\n }\r\n}\r\n\r\nfunction noop() {}\r\n","var nullEvents = require('./nullEvents.js');\n\nmodule.exports = createDocumentEvents();\n\nfunction createDocumentEvents() {\n if (typeof window === 'undefined') {\n return nullEvents;\n }\n\n return {\n on: on,\n off: off\n };\n}\n\nfunction on(eventName, handler) {\n window.addEventListener(eventName, handler);\n}\n\nfunction off(eventName, handler) {\n window.removeEventListener(eventName, handler);\n}\n\n","/**\r\n * @fileOverview Defines a graph renderer that uses CSS based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = renderer;\r\n\r\nvar eventify = require('ngraph.events');\r\nvar forceDirected = require('ngraph.forcelayout');\r\nvar svgGraphics = require('./svgGraphics.js');\r\nvar windowEvents = require('../Utils/windowEvents.js');\r\nvar domInputManager = require('../Input/domInputManager.js');\r\nvar timer = require('../Utils/timer.js');\r\nvar getDimension = require('../Utils/getDimensions.js');\r\nvar dragndrop = require('../Input/dragndrop.js');\r\n\r\n/**\r\n * This is heart of the rendering. Class accepts graph to be rendered and rendering settings.\r\n * It monitors graph changes and depicts them accordingly.\r\n *\r\n * @param graph - Viva.Graph.graph() object to be rendered.\r\n * @param settings - rendering settings, composed from the following parts (with their defaults shown):\r\n * settings = {\r\n * // Represents a module that is capable of displaying graph nodes and links.\r\n * // all graphics has to correspond to defined interface and can be later easily\r\n * // replaced for specific needs (e.g. adding WebGL should be piece of cake as long\r\n * // as WebGL has implemented required interface). See svgGraphics for example.\r\n * graphics : Viva.Graph.View.svgGraphics(),\r\n *\r\n * // Where the renderer should draw graph. Container size matters, because\r\n * // renderer will attempt center graph to that size. Also graphics modules\r\n * // might depend on it.\r\n * container : document.body,\r\n *\r\n * // Defines whether graph can respond to use input\r\n * interactive: true,\r\n *\r\n * // Layout algorithm to be used. The algorithm is expected to comply with defined\r\n * // interface and is expected to be iterative. Renderer will use it then to calculate\r\n * // graph's layout. For examples of the interface refer to Viva.Graph.Layout.forceDirected()\r\n * layout : Viva.Graph.Layout.forceDirected(),\r\n *\r\n * // Directs renderer to display links. Usually rendering links is the slowest part of this\r\n * // library. So if you don't need to display links, consider settings this property to false.\r\n * renderLinks : true,\r\n *\r\n * // Number of layout iterations to run before displaying the graph. The bigger you set this number\r\n * // the closer to ideal position graph will appear first time. But be careful: for large graphs\r\n * // it can freeze the browser.\r\n * prerender : 0\r\n * }\r\n */\r\nfunction renderer(graph, settings) {\r\n // TODO: This class is getting hard to understand. Consider refactoring.\r\n // TODO: I have a technical debt here: fix scaling/recentering! Currently it's a total mess.\r\n var FRAME_INTERVAL = 30;\r\n\r\n settings = settings || {};\r\n\r\n var layout = settings.layout,\r\n graphics = settings.graphics,\r\n container = settings.container,\r\n interactive = settings.interactive !== undefined ? settings.interactive : true,\r\n inputManager,\r\n animationTimer,\r\n rendererInitialized = false,\r\n updateCenterRequired = true,\r\n\r\n isStable = false,\r\n userInteraction = false,\r\n isPaused = false,\r\n\r\n transform = {\r\n offsetX: 0,\r\n offsetY: 0,\r\n scale: 1\r\n },\r\n\r\n publicEvents = eventify({}),\r\n containerDrag;\r\n\r\n return {\r\n /**\r\n * Performs rendering of the graph.\r\n *\r\n * @param iterationsCount if specified renderer will run only given number of iterations\r\n * and then stop. Otherwise graph rendering is performed indefinitely.\r\n *\r\n * Note: if rendering stopped by used started dragging nodes or new nodes were added to the\r\n * graph renderer will give run more iterations to reflect changes.\r\n */\r\n run: function(iterationsCount) {\r\n\r\n if (!rendererInitialized) {\r\n prepareSettings();\r\n prerender();\r\n\r\n initDom();\r\n updateCenter();\r\n listenToEvents();\r\n\r\n rendererInitialized = true;\r\n }\r\n\r\n renderIterations(iterationsCount);\r\n\r\n return this;\r\n },\r\n\r\n reset: function() {\r\n graphics.resetScale();\r\n updateCenter();\r\n transform.scale = 1;\r\n },\r\n\r\n pause: function() {\r\n isPaused = true;\r\n animationTimer.stop();\r\n },\r\n\r\n resume: function() {\r\n isPaused = false;\r\n animationTimer.restart();\r\n },\r\n\r\n rerender: function() {\r\n renderGraph();\r\n return this;\r\n },\r\n\r\n zoomOut: function() {\r\n return scale(true);\r\n },\r\n\r\n zoomIn: function() {\r\n return scale(false);\r\n },\r\n\r\n /**\r\n * Returns current transformation matrix.\r\n */\r\n getTransform: function() {\r\n return transform;\r\n },\r\n\r\n /**\r\n * Centers renderer at x,y graph's coordinates\r\n */\r\n moveTo: function(x, y) {\r\n graphics.graphCenterChanged(transform.offsetX - x * transform.scale, transform.offsetY - y * transform.scale);\r\n renderGraph();\r\n },\r\n\r\n /**\r\n * Gets current graphics object\r\n */\r\n getGraphics: function() {\r\n return graphics;\r\n },\r\n \r\n /**\r\n * Gets current layout.\r\n */\r\n getLayout: function() {\r\n return layout;\r\n },\r\n\r\n /**\r\n * Removes this renderer and deallocates all resources/timers\r\n */\r\n dispose: function() {\r\n stopListenToEvents(); // I quit!\r\n },\r\n\r\n on: function(eventName, callback) {\r\n publicEvents.on(eventName, callback);\r\n return this;\r\n },\r\n\r\n off: function(eventName, callback) {\r\n publicEvents.off(eventName, callback);\r\n return this;\r\n }\r\n };\r\n\r\n /**\r\n * Checks whether given interaction (node/scroll) is enabled\r\n */\r\n function isInteractive(interactionName) {\r\n if (typeof interactive === 'string') {\r\n return interactive.indexOf(interactionName) >= 0;\r\n } else if (typeof interactive === 'boolean') {\r\n return interactive;\r\n }\r\n return true; // default setting\r\n }\r\n\r\n function prepareSettings() {\r\n container = container || window.document.body;\r\n layout = layout || forceDirected(graph, {\r\n springLength: 80,\r\n springCoeff: 0.0002,\r\n });\r\n graphics = graphics || svgGraphics(graph, {\r\n container: container\r\n });\r\n\r\n if (!settings.hasOwnProperty('renderLinks')) {\r\n settings.renderLinks = true;\r\n }\r\n\r\n settings.prerender = settings.prerender || 0;\r\n inputManager = (graphics.inputManager || domInputManager)(graph, graphics);\r\n }\r\n\r\n function renderGraph() {\r\n graphics.beginRender();\r\n\r\n // todo: move this check graphics\r\n if (settings.renderLinks) {\r\n graphics.renderLinks();\r\n }\r\n graphics.renderNodes();\r\n graphics.endRender();\r\n }\r\n\r\n function onRenderFrame() {\r\n isStable = layout.step() && !userInteraction;\r\n renderGraph();\r\n\r\n return !isStable;\r\n }\r\n\r\n function renderIterations(iterationsCount) {\r\n if (animationTimer) {\r\n return;\r\n }\r\n\r\n if (iterationsCount !== undefined) {\r\n animationTimer = timer(function() {\r\n iterationsCount -= 1;\r\n if (iterationsCount < 0) {\r\n var needMoreFrames = false;\r\n return needMoreFrames;\r\n }\r\n\r\n return onRenderFrame();\r\n }, FRAME_INTERVAL);\r\n } else {\r\n animationTimer = timer(onRenderFrame, FRAME_INTERVAL);\r\n }\r\n }\r\n\r\n function resetStable() {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n isStable = false;\r\n animationTimer.restart();\r\n }\r\n\r\n function prerender() {\r\n // To get good initial positions for the graph\r\n // perform several prerender steps in background.\r\n if (typeof settings.prerender === 'number' && settings.prerender > 0) {\r\n for (var i = 0; i < settings.prerender; i += 1) {\r\n layout.step();\r\n }\r\n }\r\n }\r\n\r\n function updateCenter() {\r\n var graphRect = layout.getGraphRect(),\r\n containerSize = getDimension(container);\r\n\r\n var cx = (graphRect.x2 + graphRect.x1) / 2;\r\n var cy = (graphRect.y2 + graphRect.y1) / 2;\r\n transform.offsetX = containerSize.width / 2 - (cx * transform.scale - cx);\r\n transform.offsetY = containerSize.height / 2 - (cy * transform.scale - cy);\r\n graphics.graphCenterChanged(transform.offsetX, transform.offsetY);\r\n\r\n updateCenterRequired = false;\r\n }\r\n\r\n function createNodeUi(node) {\r\n var nodePosition = layout.getNodePosition(node.id);\r\n graphics.addNode(node, nodePosition);\r\n }\r\n\r\n function removeNodeUi(node) {\r\n graphics.releaseNode(node);\r\n }\r\n\r\n function createLinkUi(link) {\r\n var linkPosition = layout.getLinkPosition(link.id);\r\n graphics.addLink(link, linkPosition);\r\n }\r\n\r\n function removeLinkUi(link) {\r\n graphics.releaseLink(link);\r\n }\r\n\r\n function listenNodeEvents(node) {\r\n if (!isInteractive('node')) {\r\n return;\r\n }\r\n\r\n var wasPinned = false;\r\n\r\n // TODO: This may not be memory efficient. Consider reusing handlers object.\r\n inputManager.bindDragNDrop(node, {\r\n onStart: function() {\r\n wasPinned = layout.isNodePinned(node);\r\n layout.pinNode(node, true);\r\n userInteraction = true;\r\n resetStable();\r\n },\r\n onDrag: function(e, offset) {\r\n var oldPos = layout.getNodePosition(node.id);\r\n layout.setNodePosition(node.id,\r\n oldPos.x + offset.x / transform.scale,\r\n oldPos.y + offset.y / transform.scale);\r\n\r\n userInteraction = true;\r\n\r\n renderGraph();\r\n },\r\n onStop: function() {\r\n layout.pinNode(node, wasPinned);\r\n userInteraction = false;\r\n }\r\n });\r\n }\r\n\r\n function releaseNodeEvents(node) {\r\n inputManager.bindDragNDrop(node, null);\r\n }\r\n\r\n function initDom() {\r\n graphics.init(container);\r\n\r\n graph.forEachNode(createNodeUi);\r\n\r\n if (settings.renderLinks) {\r\n graph.forEachLink(createLinkUi);\r\n }\r\n }\r\n\r\n function releaseDom() {\r\n graphics.release(container);\r\n }\r\n\r\n function processNodeChange(change) {\r\n var node = change.node;\r\n\r\n if (change.changeType === 'add') {\r\n createNodeUi(node);\r\n listenNodeEvents(node);\r\n if (updateCenterRequired) {\r\n updateCenter();\r\n }\r\n } else if (change.changeType === 'remove') {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n if (graph.getNodesCount() === 0) {\r\n updateCenterRequired = true; // Next time when node is added - center the graph.\r\n }\r\n } else if (change.changeType === 'update') {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n\r\n createNodeUi(node);\r\n listenNodeEvents(node);\r\n }\r\n }\r\n\r\n function processLinkChange(change) {\r\n var link = change.link;\r\n if (change.changeType === 'add') {\r\n if (settings.renderLinks) {\r\n createLinkUi(link);\r\n }\r\n } else if (change.changeType === 'remove') {\r\n if (settings.renderLinks) {\r\n removeLinkUi(link);\r\n }\r\n } else if (change.changeType === 'update') {\r\n throw 'Update type is not implemented. TODO: Implement me!';\r\n }\r\n }\r\n\r\n function onGraphChanged(changes) {\r\n var i, change;\r\n for (i = 0; i < changes.length; i += 1) {\r\n change = changes[i];\r\n if (change.node) {\r\n processNodeChange(change);\r\n } else if (change.link) {\r\n processLinkChange(change);\r\n }\r\n }\r\n\r\n resetStable();\r\n }\r\n\r\n function onWindowResized() {\r\n updateCenter();\r\n onRenderFrame();\r\n }\r\n\r\n function releaseContainerDragManager() {\r\n if (containerDrag) {\r\n containerDrag.release();\r\n containerDrag = null;\r\n }\r\n }\r\n\r\n function releaseGraphEvents() {\r\n graph.off('changed', onGraphChanged);\r\n }\r\n\r\n function scale(out, scrollPoint) {\r\n if (!scrollPoint) {\r\n var containerSize = getDimension(container);\r\n scrollPoint = {\r\n x: containerSize.width / 2,\r\n y: containerSize.height / 2\r\n };\r\n }\r\n var scaleFactor = Math.pow(1 + 0.4, out ? -0.2 : 0.2);\r\n transform.scale = graphics.scale(scaleFactor, scrollPoint);\r\n\r\n renderGraph();\r\n publicEvents.fire('scale', transform.scale);\r\n\r\n return transform.scale;\r\n }\r\n\r\n function listenToEvents() {\r\n windowEvents.on('resize', onWindowResized);\r\n\r\n releaseContainerDragManager();\r\n if (isInteractive('drag')) {\r\n containerDrag = dragndrop(container);\r\n containerDrag.onDrag(function(e, offset) {\r\n graphics.translateRel(offset.x, offset.y);\r\n\r\n renderGraph();\r\n publicEvents.fire('drag', offset);\r\n });\r\n }\r\n\r\n if (isInteractive('scroll')) {\r\n if (!containerDrag) {\r\n containerDrag = dragndrop(container);\r\n }\r\n containerDrag.onScroll(function(e, scaleOffset, scrollPoint) {\r\n scale(scaleOffset < 0, scrollPoint);\r\n });\r\n }\r\n\r\n graph.forEachNode(listenNodeEvents);\r\n\r\n releaseGraphEvents();\r\n graph.on('changed', onGraphChanged);\r\n }\r\n\r\n function stopListenToEvents() {\r\n rendererInitialized = false;\r\n releaseGraphEvents();\r\n releaseContainerDragManager();\r\n windowEvents.off('resize', onWindowResized);\r\n publicEvents.off();\r\n animationTimer.stop();\r\n\r\n graph.forEachLink(function(link) {\r\n if (settings.renderLinks) {\r\n removeLinkUi(link);\r\n }\r\n });\r\n\r\n graph.forEachNode(function(node) {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n });\r\n\r\n layout.dispose();\r\n releaseDom();\r\n }\r\n}\r\n","/**\r\n * @fileOverview Defines a graph renderer that uses SVG based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = svgGraphics;\r\n\r\nvar svg = require('simplesvg');\r\nvar eventify = require('ngraph.events');\r\nvar domInputManager = require('../Input/domInputManager.js');\r\n\r\n/**\r\n * Performs svg-based graph rendering. This module does not perform\r\n * layout, but only visualizes nodes and edges of the graph.\r\n */\r\nfunction svgGraphics() {\r\n var svgContainer,\r\n svgRoot,\r\n offsetX = 0,\r\n offsetY = 0,\r\n initCallback,\r\n actualScale = 1,\r\n allNodes = {},\r\n allLinks = {},\r\n/*jshint unused: false */\r\n nodeBuilder = function (node) {\r\n return svg(\"rect\")\r\n .attr(\"width\", 10)\r\n .attr(\"height\", 10)\r\n .attr(\"fill\", \"#00a2e8\");\r\n },\r\n\r\n nodePositionCallback = function (nodeUI, pos) {\r\n // TODO: Remove magic 5. It should be half of the width or height of the node.\r\n nodeUI.attr(\"x\", pos.x - 5)\r\n .attr(\"y\", pos.y - 5);\r\n },\r\n\r\n linkBuilder = function (link) {\r\n return svg(\"line\").attr(\"stroke\", \"#999\");\r\n },\r\n\r\n linkPositionCallback = function (linkUI, fromPos, toPos) {\r\n linkUI.attr(\"x1\", fromPos.x)\r\n .attr(\"y1\", fromPos.y)\r\n .attr(\"x2\", toPos.x)\r\n .attr(\"y2\", toPos.y);\r\n },\r\n\r\n fireRescaled = function (graphics) {\r\n // TODO: maybe we shall copy changes?\r\n graphics.fire(\"rescaled\");\r\n },\r\n\r\n cachedPos = {x : 0, y: 0},\r\n cachedFromPos = {x : 0, y: 0},\r\n cachedToPos = {x : 0, y: 0},\r\n\r\n updateTransform = function () {\r\n if (svgContainer) {\r\n var transform = \"matrix(\" + actualScale + \", 0, 0,\" + actualScale + \",\" + offsetX + \",\" + offsetY + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n }\r\n };\r\n\r\n svgRoot = createSvgRoot();\r\n\r\n var graphics = {\r\n getNodeUI: function (nodeId) {\r\n return allNodes[nodeId];\r\n },\r\n\r\n getLinkUI: function (linkId) {\r\n return allLinks[linkId];\r\n },\r\n\r\n /**\r\n * Sets the callback that creates node representation.\r\n *\r\n * @param builderCallback a callback function that accepts graph node\r\n * as a parameter and must return an element representing this node.\r\n *\r\n * @returns If builderCallbackOrNode is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned\r\n */\r\n node : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n nodeBuilder = builderCallback;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Sets the callback that creates link representation\r\n *\r\n * @param builderCallback a callback function that accepts graph link\r\n * as a parameter and must return an element representing this link.\r\n *\r\n * @returns If builderCallback is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned.\r\n */\r\n link : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n linkBuilder = builderCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Allows to override default position setter for the node with a new\r\n * function. newPlaceCallback(nodeUI, position, node) is function which\r\n * is used by updateNodePosition().\r\n */\r\n placeNode : function (newPlaceCallback) {\r\n nodePositionCallback = newPlaceCallback;\r\n return this;\r\n },\r\n\r\n placeLink : function (newPlaceLinkCallback) {\r\n linkPositionCallback = newPlaceLinkCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Called every before renderer starts rendering.\r\n */\r\n beginRender : function () {},\r\n\r\n /**\r\n * Called every time when renderer finishes one step of rendering.\r\n */\r\n endRender : function () {},\r\n\r\n /**\r\n * Sets translate operation that should be applied to all nodes and links.\r\n */\r\n graphCenterChanged : function (x, y) {\r\n offsetX = x;\r\n offsetY = y;\r\n updateTransform();\r\n },\r\n\r\n /**\r\n * Default input manager listens to DOM events to process nodes drag-n-drop\r\n */\r\n inputManager : domInputManager,\r\n\r\n translateRel : function (dx, dy) {\r\n var p = svgRoot.createSVGPoint(),\r\n t = svgContainer.getCTM(),\r\n origin = svgRoot.createSVGPoint().matrixTransform(t.inverse());\r\n\r\n p.x = dx;\r\n p.y = dy;\r\n\r\n p = p.matrixTransform(t.inverse());\r\n p.x = (p.x - origin.x) * t.a;\r\n p.y = (p.y - origin.y) * t.d;\r\n\r\n t.e += p.x;\r\n t.f += p.y;\r\n\r\n var transform = \"matrix(\" + t.a + \", 0, 0,\" + t.d + \",\" + t.e + \",\" + t.f + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n },\r\n\r\n scale : function (scaleFactor, scrollPoint) {\r\n var p = svgRoot.createSVGPoint();\r\n p.x = scrollPoint.x;\r\n p.y = scrollPoint.y;\r\n\r\n p = p.matrixTransform(svgContainer.getCTM().inverse()); // translate to SVG coordinates\r\n\r\n // Compute new scale matrix in current mouse position\r\n var k = svgRoot.createSVGMatrix().translate(p.x, p.y).scale(scaleFactor).translate(-p.x, -p.y),\r\n t = svgContainer.getCTM().multiply(k);\r\n\r\n actualScale = t.a;\r\n offsetX = t.e;\r\n offsetY = t.f;\r\n var transform = \"matrix(\" + t.a + \", 0, 0,\" + t.d + \",\" + t.e + \",\" + t.f + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n\r\n fireRescaled(this);\r\n return actualScale;\r\n },\r\n\r\n resetScale : function () {\r\n actualScale = 1;\r\n var transform = \"matrix(1, 0, 0, 1, 0, 0)\";\r\n svgContainer.attr(\"transform\", transform);\r\n fireRescaled(this);\r\n return this;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render.\r\n */\r\n init : function (container) {\r\n container.appendChild(svgRoot);\r\n updateTransform();\r\n // Notify the world if someone waited for update. TODO: should send an event\r\n if (typeof initCallback === \"function\") {\r\n initCallback(svgRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider release occupied resources.\r\n */\r\n release : function (container) {\r\n if (svgRoot && container) {\r\n container.removeChild(svgRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given link of the graph\r\n *\r\n * @param link - model of a link\r\n */\r\n addLink: function (link, pos) {\r\n var linkUI = linkBuilder(link);\r\n if (!linkUI) { return; }\r\n linkUI.position = pos;\r\n linkUI.link = link;\r\n allLinks[link.id] = linkUI;\r\n if (svgContainer.childElementCount > 0) {\r\n svgContainer.insertBefore(linkUI, svgContainer.firstChild);\r\n } else {\r\n svgContainer.appendChild(linkUI);\r\n }\r\n return linkUI;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove link from rendering surface.\r\n *\r\n * @param linkUI visual representation of the link created by link() execution.\r\n **/\r\n releaseLink : function (link) {\r\n var linkUI = allLinks[link.id];\r\n if (linkUI) {\r\n svgContainer.removeChild(linkUI);\r\n delete allLinks[link.id];\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given node of the graph.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n addNode : function (node, pos) {\r\n var nodeUI = nodeBuilder(node);\r\n if (!nodeUI) {\r\n return;\r\n }\r\n nodeUI.position = pos;\r\n nodeUI.node = node;\r\n allNodes[node.id] = nodeUI;\r\n\r\n svgContainer.appendChild(nodeUI);\r\n\r\n return nodeUI;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove node from rendering surface.\r\n *\r\n * @param node graph's node\r\n **/\r\n releaseNode : function (node) {\r\n var nodeUI = allNodes[node.id];\r\n if (nodeUI) {\r\n svgContainer.removeChild(nodeUI);\r\n delete allNodes[node.id];\r\n }\r\n },\r\n\r\n renderNodes : function () {\r\n for (var key in allNodes) {\r\n if (allNodes.hasOwnProperty(key)) {\r\n var nodeUI = allNodes[key];\r\n cachedPos.x = nodeUI.position.x;\r\n cachedPos.y = nodeUI.position.y;\r\n nodePositionCallback(nodeUI, cachedPos, nodeUI.node);\r\n }\r\n }\r\n },\r\n\r\n renderLinks : function () {\r\n for (var key in allLinks) {\r\n if (allLinks.hasOwnProperty(key)) {\r\n var linkUI = allLinks[key];\r\n cachedFromPos.x = linkUI.position.from.x;\r\n cachedFromPos.y = linkUI.position.from.y;\r\n cachedToPos.x = linkUI.position.to.x;\r\n cachedToPos.y = linkUI.position.to.y;\r\n linkPositionCallback(linkUI, cachedFromPos, cachedToPos, linkUI.link);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Returns root element which hosts graphics.\r\n */\r\n getGraphicsRoot : function (callbackWhenReady) {\r\n // todo: should fire an event, instead of having this context.\r\n if (typeof callbackWhenReady === \"function\") {\r\n if (svgRoot) {\r\n callbackWhenReady(svgRoot);\r\n } else {\r\n initCallback = callbackWhenReady;\r\n }\r\n }\r\n return svgRoot;\r\n },\r\n /**\r\n * Returns root SVG element.\r\n *\r\n * Note: This is internal method specific to this renderer\r\n */\r\n getSvgRoot : function () {\r\n return svgRoot;\r\n }\r\n };\r\n\r\n\r\n // Let graphics fire events before we return it to the caller.\r\n eventify(graphics);\r\n\r\n return graphics;\r\n\r\n function createSvgRoot() {\r\n var svgRoot = svg(\"svg\");\r\n\r\n svgContainer = svg(\"g\")\r\n .attr(\"buffered-rendering\", \"dynamic\");\r\n\r\n svgRoot.appendChild(svgContainer);\r\n return svgRoot;\r\n }\r\n}\r\n","/**\r\n * @fileOverview Defines a graph renderer that uses WebGL based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = webglGraphics;\r\n\r\nvar webglInputManager = require('../Input/webglInputManager.js');\r\nvar webglLinkProgram = require('../WebGL/webglLinkProgram.js');\r\nvar webglNodeProgram = require('../WebGL/webglNodeProgram.js');\r\nvar webglSquare = require('../WebGL/webglSquare.js');\r\nvar webglLine = require('../WebGL/webglLine.js');\r\nvar eventify = require('ngraph.events');\r\nvar merge = require('ngraph.merge');\r\n\r\n/**\r\n * Performs webgl-based graph rendering. This module does not perform\r\n * layout, but only visualizes nodes and edges of the graph.\r\n *\r\n * @param options - to customize graphics behavior. Currently supported parameter\r\n * enableBlending - true by default, allows to use transparency in node/links colors.\r\n * preserveDrawingBuffer - false by default, tells webgl to preserve drawing buffer.\r\n * See https://www.khronos.org/registry/webgl/specs/1.0/#5.2\r\n */\r\n\r\nfunction webglGraphics(options) {\r\n options = merge(options, {\r\n enableBlending : true,\r\n preserveDrawingBuffer : false,\r\n clearColor: false,\r\n clearColorValue : {\r\n r : 1,\r\n g : 1,\r\n b : 1,\r\n a : 1\r\n }\r\n });\r\n\r\n var container,\r\n graphicsRoot,\r\n gl,\r\n width,\r\n height,\r\n nodesCount = 0,\r\n linksCount = 0,\r\n transform = [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ],\r\n userPlaceNodeCallback,\r\n userPlaceLinkCallback,\r\n nodes = [],\r\n links = [],\r\n initCallback,\r\n\r\n allNodes = {},\r\n allLinks = {},\r\n linkProgram = webglLinkProgram(),\r\n nodeProgram = webglNodeProgram(),\r\n/*jshint unused: false */\r\n nodeUIBuilder = function (node) {\r\n return webglSquare(); // Just make a square, using provided gl context (a nodeProgram);\r\n },\r\n\r\n linkUIBuilder = function (link) {\r\n return webglLine(0xb3b3b3ff);\r\n },\r\n/*jshint unused: true */\r\n updateTransformUniform = function () {\r\n linkProgram.updateTransform(transform);\r\n nodeProgram.updateTransform(transform);\r\n },\r\n\r\n resetScaleInternal = function () {\r\n transform = [1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1];\r\n },\r\n\r\n updateSize = function () {\r\n if (container && graphicsRoot) {\r\n width = graphicsRoot.width = Math.max(container.offsetWidth, 1);\r\n height = graphicsRoot.height = Math.max(container.offsetHeight, 1);\r\n if (gl) { gl.viewport(0, 0, width, height); }\r\n if (linkProgram) { linkProgram.updateSize(width / 2, height / 2); }\r\n if (nodeProgram) { nodeProgram.updateSize(width / 2, height / 2); }\r\n }\r\n },\r\n\r\n fireRescaled = function (graphics) {\r\n graphics.fire(\"rescaled\");\r\n };\r\n\r\n graphicsRoot = window.document.createElement(\"canvas\");\r\n\r\n var graphics = {\r\n getLinkUI: function (linkId) {\r\n return allLinks[linkId];\r\n },\r\n\r\n getNodeUI: function (nodeId) {\r\n return allNodes[nodeId];\r\n },\r\n\r\n /**\r\n * Sets the callback that creates node representation.\r\n *\r\n * @param builderCallback a callback function that accepts graph node\r\n * as a parameter and must return an element representing this node.\r\n *\r\n * @returns If builderCallbackOrNode is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned\r\n */\r\n node : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n nodeUIBuilder = builderCallback;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Sets the callback that creates link representation\r\n *\r\n * @param builderCallback a callback function that accepts graph link\r\n * as a parameter and must return an element representing this link.\r\n *\r\n * @returns If builderCallback is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned.\r\n */\r\n link : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n linkUIBuilder = builderCallback;\r\n return this;\r\n },\r\n\r\n\r\n /**\r\n * Allows to override default position setter for the node with a new\r\n * function. newPlaceCallback(nodeUI, position) is function which\r\n * is used by updateNodePosition().\r\n */\r\n placeNode : function (newPlaceCallback) {\r\n userPlaceNodeCallback = newPlaceCallback;\r\n return this;\r\n },\r\n\r\n placeLink : function (newPlaceLinkCallback) {\r\n userPlaceLinkCallback = newPlaceLinkCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Custom input manager listens to mouse events to process nodes drag-n-drop inside WebGL canvas\r\n */\r\n inputManager : webglInputManager,\r\n\r\n /**\r\n * Called every time before renderer starts rendering.\r\n */\r\n beginRender : function () {\r\n // this function could be replaced by this.init,\r\n // based on user options.\r\n },\r\n\r\n /**\r\n * Called every time when renderer finishes one step of rendering.\r\n */\r\n endRender : function () {\r\n if (linksCount > 0) {\r\n linkProgram.render();\r\n }\r\n if (nodesCount > 0) {\r\n nodeProgram.render();\r\n }\r\n },\r\n\r\n bringLinkToFront : function (linkUI) {\r\n var frontLinkId = linkProgram.getFrontLinkId(),\r\n srcLinkId,\r\n temp;\r\n\r\n linkProgram.bringToFront(linkUI);\r\n\r\n if (frontLinkId > linkUI.id) {\r\n srcLinkId = linkUI.id;\r\n\r\n temp = links[frontLinkId];\r\n links[frontLinkId] = links[srcLinkId];\r\n links[frontLinkId].id = frontLinkId;\r\n links[srcLinkId] = temp;\r\n links[srcLinkId].id = srcLinkId;\r\n }\r\n },\r\n\r\n /**\r\n * Sets translate operation that should be applied to all nodes and links.\r\n */\r\n graphCenterChanged : function (x, y) {\r\n transform[12] = (2 * x / width) - 1;\r\n transform[13] = 1 - (2 * y / height);\r\n updateTransformUniform();\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given link of the graph\r\n *\r\n * @param link - model of a link\r\n */\r\n addLink: function (link, boundPosition) {\r\n var uiid = linksCount++,\r\n ui = linkUIBuilder(link);\r\n ui.id = uiid;\r\n ui.pos = boundPosition;\r\n\r\n linkProgram.createLink(ui);\r\n\r\n links[uiid] = ui;\r\n allLinks[link.id] = ui;\r\n return ui;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given node of the graph.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n addNode : function (node, boundPosition) {\r\n var uiid = nodesCount++,\r\n ui = nodeUIBuilder(node);\r\n\r\n ui.id = uiid;\r\n ui.position = boundPosition;\r\n ui.node = node;\r\n\r\n nodeProgram.createNode(ui);\r\n\r\n nodes[uiid] = ui;\r\n allNodes[node.id] = ui;\r\n return ui;\r\n },\r\n\r\n translateRel : function (dx, dy) {\r\n transform[12] += (2 * transform[0] * dx / width) / transform[0];\r\n transform[13] -= (2 * transform[5] * dy / height) / transform[5];\r\n updateTransformUniform();\r\n },\r\n\r\n scale : function (scaleFactor, scrollPoint) {\r\n // Transform scroll point to clip-space coordinates:\r\n var cx = 2 * scrollPoint.x / width - 1,\r\n cy = 1 - (2 * scrollPoint.y) / height;\r\n\r\n cx -= transform[12];\r\n cy -= transform[13];\r\n\r\n transform[12] += cx * (1 - scaleFactor);\r\n transform[13] += cy * (1 - scaleFactor);\r\n\r\n transform[0] *= scaleFactor;\r\n transform[5] *= scaleFactor;\r\n\r\n updateTransformUniform();\r\n fireRescaled(this);\r\n\r\n return transform[0];\r\n },\r\n\r\n resetScale : function () {\r\n resetScaleInternal();\r\n\r\n if (gl) {\r\n updateSize();\r\n // TODO: what is this?\r\n // gl.useProgram(linksProgram);\r\n // gl.uniform2f(linksProgram.screenSize, width, height);\r\n updateTransformUniform();\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Resizes the graphic without resetting the scale. \r\n * Useful with viva graph in a dynamic container\r\n */\r\n updateSize: updateSize,\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render.\r\n */\r\n init : function (c) {\r\n var contextParameters = {};\r\n\r\n if (options.preserveDrawingBuffer) {\r\n contextParameters.preserveDrawingBuffer = true;\r\n }\r\n\r\n container = c;\r\n\r\n updateSize();\r\n resetScaleInternal();\r\n container.appendChild(graphicsRoot);\r\n\r\n\r\n gl = graphicsRoot.getContext(\"experimental-webgl\", contextParameters);\r\n if (!gl) {\r\n var msg = \"Could not initialize WebGL. Seems like the browser doesn't support it.\";\r\n window.alert(msg);\r\n throw msg;\r\n }\r\n if (options.enableBlending) {\r\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\r\n gl.enable(gl.BLEND);\r\n }\r\n if (options.clearColor) {\r\n var color = options.clearColorValue;\r\n gl.clearColor(color.r, color.g, color.b, color.a);\r\n // TODO: not the best way, really. Should come up with something better\r\n // what if we need more updates inside beginRender, like depth buffer?\r\n this.beginRender = function () {\r\n gl.clear(gl.COLOR_BUFFER_BIT);\r\n };\r\n }\r\n\r\n linkProgram.load(gl);\r\n linkProgram.updateSize(width / 2, height / 2);\r\n\r\n nodeProgram.load(gl);\r\n nodeProgram.updateSize(width / 2, height / 2);\r\n\r\n updateTransformUniform();\r\n\r\n // Notify the world if someone waited for update. TODO: should send an event\r\n if (typeof initCallback === \"function\") {\r\n initCallback(graphicsRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider release occupied resources.\r\n */\r\n release : function (container) {\r\n if (graphicsRoot && container) {\r\n container.removeChild(graphicsRoot);\r\n // TODO: anything else?\r\n }\r\n },\r\n\r\n /**\r\n * Checks whether webgl is supported by this browser.\r\n */\r\n isSupported : function () {\r\n var c = window.document.createElement(\"canvas\"),\r\n gl = c && c.getContext && c.getContext(\"experimental-webgl\");\r\n return gl;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove link from rendering surface.\r\n *\r\n * @param linkUI visual representation of the link created by link() execution.\r\n **/\r\n releaseLink : function (link) {\r\n if (linksCount > 0) { linksCount -= 1; }\r\n var linkUI = allLinks[link.id];\r\n delete allLinks[link.id];\r\n\r\n linkProgram.removeLink(linkUI);\r\n\r\n var linkIdToRemove = linkUI.id;\r\n if (linkIdToRemove < linksCount) {\r\n if (linksCount === 0 || linksCount === linkIdToRemove) {\r\n return; // no more links or removed link is the last one.\r\n }\r\n\r\n var lastLinkUI = links[linksCount];\r\n links[linkIdToRemove] = lastLinkUI;\r\n lastLinkUI.id = linkIdToRemove;\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove node from rendering surface.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n releaseNode : function (node) {\r\n if (nodesCount > 0) { nodesCount -= 1; }\r\n var nodeUI = allNodes[node.id];\r\n delete allNodes[node.id];\r\n\r\n nodeProgram.removeNode(nodeUI);\r\n\r\n var nodeIdToRemove = nodeUI.id;\r\n if (nodeIdToRemove < nodesCount) {\r\n if (nodesCount === 0 || nodesCount === nodeIdToRemove) {\r\n return; // no more nodes or removed node is the last in the list.\r\n }\r\n\r\n var lastNodeUI = nodes[nodesCount];\r\n\r\n nodes[nodeIdToRemove] = lastNodeUI;\r\n lastNodeUI.id = nodeIdToRemove;\r\n\r\n // Since concrete shaders may cache properties in the UI element\r\n // we are letting them to make this swap (e.g. image node shader\r\n // uses this approach to update node's offset in the atlas)\r\n nodeProgram.replaceProperties(nodeUI, lastNodeUI);\r\n }\r\n },\r\n\r\n renderNodes: function () {\r\n var pos = {x : 0, y : 0};\r\n // WebGL coordinate system is different. Would be better\r\n // to have this transform in the shader code, but it would\r\n // require every shader to be updated..\r\n for (var i = 0; i < nodesCount; ++i) {\r\n var ui = nodes[i];\r\n pos.x = ui.position.x;\r\n pos.y = ui.position.y;\r\n if (userPlaceNodeCallback) {\r\n userPlaceNodeCallback(ui, pos);\r\n }\r\n\r\n nodeProgram.position(ui, pos);\r\n }\r\n },\r\n\r\n renderLinks: function () {\r\n if (this.omitLinksRendering) { return; }\r\n\r\n var toPos = {x : 0, y : 0};\r\n var fromPos = {x : 0, y : 0};\r\n for (var i = 0; i < linksCount; ++i) {\r\n var ui = links[i];\r\n var pos = ui.pos.from;\r\n fromPos.x = pos.x;\r\n fromPos.y = -pos.y;\r\n pos = ui.pos.to;\r\n toPos.x = pos.x;\r\n toPos.y = -pos.y;\r\n if (userPlaceLinkCallback) {\r\n userPlaceLinkCallback(ui, fromPos, toPos);\r\n }\r\n\r\n linkProgram.position(ui, fromPos, toPos);\r\n }\r\n },\r\n\r\n /**\r\n * Returns root element which hosts graphics.\r\n */\r\n getGraphicsRoot : function (callbackWhenReady) {\r\n // todo: should fire an event, instead of having this context.\r\n if (typeof callbackWhenReady === \"function\") {\r\n if (graphicsRoot) {\r\n callbackWhenReady(graphicsRoot);\r\n } else {\r\n initCallback = callbackWhenReady;\r\n }\r\n }\r\n return graphicsRoot;\r\n },\r\n\r\n /**\r\n * Updates default shader which renders nodes\r\n *\r\n * @param newProgram to use for nodes.\r\n */\r\n setNodeProgram : function (newProgram) {\r\n if (!gl && newProgram) {\r\n // Nothing created yet. Just set shader to the new one\r\n // and let initialization logic take care about the rest.\r\n nodeProgram = newProgram;\r\n } else if (newProgram) {\r\n throw \"Not implemented. Cannot swap shader on the fly... Yet.\";\r\n // TODO: unload old shader and reinit.\r\n }\r\n },\r\n\r\n /**\r\n * Updates default shader which renders links\r\n *\r\n * @param newProgram to use for links.\r\n */\r\n setLinkProgram : function (newProgram) {\r\n if (!gl && newProgram) {\r\n // Nothing created yet. Just set shader to the new one\r\n // and let initialization logic take care about the rest.\r\n linkProgram = newProgram;\r\n } else if (newProgram) {\r\n throw \"Not implemented. Cannot swap shader on the fly... Yet.\";\r\n // TODO: unload old shader and reinit.\r\n }\r\n },\r\n\r\n /**\r\n * Transforms client coordinates into layout coordinates. Client coordinates\r\n * are DOM coordinates relative to the rendering container. Layout\r\n * coordinates are those assigned by by layout algorithm to each node.\r\n *\r\n * @param {Object} p - a point object with `x` and `y` attributes.\r\n * This method mutates p.\r\n */\r\n transformClientToGraphCoordinates: function (p) {\r\n // TODO: could be a problem when container has margins?\r\n // normalize\r\n p.x = ((2 * p.x) / width) - 1;\r\n p.y = 1 - ((2 * p.y) / height);\r\n\r\n // apply transform\r\n p.x = (p.x - transform[12]) / transform[0];\r\n p.y = (p.y - transform[13]) / transform[5];\r\n\r\n // transform to graph coordinates\r\n p.x = p.x * (width / 2);\r\n p.y = p.y * (-height / 2);\r\n\r\n return p;\r\n },\r\n\r\n /**\r\n * Transforms WebGL coordinates into client coordinates. Reverse of \r\n * `transformClientToGraphCoordinates()`\r\n *\r\n * @param {Object} p - a point object with `x` and `y` attributes, which\r\n * represents a layout coordinate. This method mutates p.\r\n */\r\n transformGraphToClientCoordinates: function (p) {\r\n // TODO: could be a problem when container has margins?\r\n // transform from graph coordinates\r\n p.x = p.x / (width / 2);\r\n p.y = p.y / (-height / 2);\r\n\r\n // apply transform\r\n p.x = (p.x * transform[0]) + transform[12];\r\n p.y = (p.y * transform[5]) + transform[13];\r\n\r\n // denormalize\r\n p.x = ((p.x + 1) * width) / 2;\r\n p.y = ((1 - p.y) * height) / 2;\r\n\r\n return p;\r\n },\r\n\r\n getNodeAtClientPos: function (clientPos, preciseCheck) {\r\n if (typeof preciseCheck !== \"function\") {\r\n // we don't know anything about your node structure here :(\r\n // potentially this could be delegated to node program, but for\r\n // right now, we are giving up if you don't pass boundary check\r\n // callback. It answers to a question is nodeUI covers (x, y)\r\n return null;\r\n }\r\n // first transform to graph coordinates:\r\n this.transformClientToGraphCoordinates(clientPos);\r\n // now using precise check iterate over each node and find one within box:\r\n // TODO: This is poor O(N) performance.\r\n for (var i = 0; i < nodesCount; ++i) {\r\n if (preciseCheck(nodes[i], clientPos.x, clientPos.y)) {\r\n return nodes[i].node;\r\n }\r\n }\r\n return null;\r\n }\r\n };\r\n\r\n // Let graphics fire events before we return it to the caller.\r\n eventify(graphics);\r\n\r\n return graphics;\r\n}\r\n","module.exports = parseColor;\n\nfunction parseColor(color) {\n var parsedColor = 0x009ee8ff;\n\n if (typeof color === 'string' && color) {\n if (color.length === 4) { // #rgb\n color = color.replace(/([^#])/g, '$1$1'); // duplicate each letter except first #.\n }\n if (color.length === 9) { // #rrggbbaa\n parsedColor = parseInt(color.substr(1), 16);\n } else if (color.length === 7) { // or #rrggbb.\n parsedColor = (parseInt(color.substr(1), 16) << 8) | 0xff;\n } else {\n throw 'Color expected in hex format with preceding \"#\". E.g. #00ff00. Got value: ' + color;\n }\n } else if (typeof color === 'number') {\n parsedColor = color;\n }\n\n return parsedColor;\n}\n","module.exports = Texture;\n\n/**\n * Single texture in the webglAtlas.\n */\nfunction Texture(size) {\n this.canvas = window.document.createElement(\"canvas\");\n this.ctx = this.canvas.getContext(\"2d\");\n this.isDirty = false;\n this.canvas.width = this.canvas.height = size;\n}\n","/**\n * @fileOverview Utility functions for webgl rendering.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = webgl;\n\nfunction webgl(gl) {\n\n return {\n createProgram: createProgram,\n extendArray: extendArray,\n copyArrayPart: copyArrayPart,\n swapArrayPart: swapArrayPart,\n getLocations: getLocations,\n context: gl\n };\n\n function createShader(shaderText, type) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, shaderText);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n var msg = gl.getShaderInfoLog(shader);\n window.alert(msg);\n throw msg;\n }\n\n return shader;\n }\n\n function createProgram(vertexShaderSrc, fragmentShaderSrc) {\n var program = gl.createProgram();\n var vs = createShader(vertexShaderSrc, gl.VERTEX_SHADER);\n var fs = createShader(fragmentShaderSrc, gl.FRAGMENT_SHADER);\n\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n gl.linkProgram(program);\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n var msg = gl.getShaderInfoLog(program);\n window.alert(msg);\n throw msg;\n }\n\n return program;\n }\n\n function extendArray(buffer, itemsInBuffer, elementsPerItem) {\n if ((itemsInBuffer + 1) * elementsPerItem > buffer.length) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedArray = new Float32Array(buffer.length * elementsPerItem * 2);\n extendedArray.set(buffer);\n\n return extendedArray;\n }\n\n return buffer;\n }\n\n function getLocations(program, uniformOrAttributeNames) {\n var foundLocations = {};\n for (var i = 0; i < uniformOrAttributeNames.length; ++i) {\n var name = uniformOrAttributeNames[i];\n var location = -1;\n if (name[0] === 'a' && name[1] === '_') {\n location = gl.getAttribLocation(program, name);\n if (location === -1) {\n throw new Error(\"Program doesn't have required attribute: \" + name);\n }\n\n foundLocations[name.slice(2)] = location;\n } else if (name[0] === 'u' && name[1] === '_') {\n location = gl.getUniformLocation(program, name);\n if (location === null) {\n throw new Error(\"Program doesn't have required uniform: \" + name);\n }\n\n foundLocations[name.slice(2)] = location;\n } else {\n throw new Error(\"Couldn't figure out your intent. All uniforms should start with 'u_' prefix, and attributes with 'a_'\");\n }\n }\n\n return foundLocations;\n }\n}\n\nfunction copyArrayPart(array, to, from, elementsCount) {\n for (var i = 0; i < elementsCount; ++i) {\n array[to + i] = array[from + i];\n }\n}\n\nfunction swapArrayPart(array, from, to, elementsCount) {\n for (var i = 0; i < elementsCount; ++i) {\n var tmp = array[from + i];\n array[from + i] = array[to + i];\n array[to + i] = tmp;\n }\n}\n","var Texture = require('./texture.js');\n\nmodule.exports = webglAtlas;\n\n/**\n * My naive implementation of textures atlas. It allows clients to load\n * multiple images into atlas and get canvas representing all of them.\n *\n * @param tilesPerTexture - indicates how many images can be loaded to one\n * texture of the atlas. If number of loaded images exceeds this\n * parameter a new canvas will be created.\n */\nfunction webglAtlas(tilesPerTexture) {\n var tilesPerRow = Math.sqrt(tilesPerTexture || 1024) << 0,\n tileSize = tilesPerRow,\n lastLoadedIdx = 1,\n loadedImages = {},\n dirtyTimeoutId,\n skipedDirty = 0,\n textures = [],\n trackedUrls = [];\n\n if (!isPowerOf2(tilesPerTexture)) {\n throw \"Tiles per texture should be power of two.\";\n }\n\n // this is the return object\n var api = {\n /**\n * indicates whether atlas has changed texture in it. If true then\n * some of the textures has isDirty flag set as well.\n */\n isDirty: false,\n\n /**\n * Clears any signs of atlas changes.\n */\n clearDirty: clearDirty,\n\n /**\n * Removes given url from collection of tiles in the atlas.\n */\n remove: remove,\n\n /**\n * Gets all textures in the atlas.\n */\n getTextures: getTextures,\n\n /**\n * Gets coordinates of the given image in the atlas. Coordinates is an object:\n * {offset : int } - where offset is an absolute position of the image in the\n * atlas.\n *\n * Absolute means it can be larger than tilesPerTexture parameter, and in that\n * case clients should get next texture in getTextures() collection.\n */\n getCoordinates: getCoordinates,\n\n /**\n * Asynchronously Loads the image to the atlas. Cross-domain security\n * limitation applies.\n */\n load: load\n };\n\n return api;\n\n function clearDirty() {\n var i;\n api.isDirty = false;\n for (i = 0; i < textures.length; ++i) {\n textures[i].isDirty = false;\n }\n }\n\n function remove(imgUrl) {\n var coordinates = loadedImages[imgUrl];\n if (!coordinates) {\n return false;\n }\n delete loadedImages[imgUrl];\n lastLoadedIdx -= 1;\n\n\n if (lastLoadedIdx === coordinates.offset) {\n return true; // Ignore if it's last image in the whole set.\n }\n\n var tileToRemove = getTileCoordinates(coordinates.offset),\n lastTileInSet = getTileCoordinates(lastLoadedIdx);\n\n copy(lastTileInSet, tileToRemove);\n\n var replacedOffset = loadedImages[trackedUrls[lastLoadedIdx]];\n replacedOffset.offset = coordinates.offset;\n trackedUrls[coordinates.offset] = trackedUrls[lastLoadedIdx];\n\n markDirty();\n return true;\n }\n\n function getTextures() {\n return textures; // I trust you...\n }\n\n function getCoordinates(imgUrl) {\n return loadedImages[imgUrl];\n }\n\n function load(imgUrl, callback) {\n if (loadedImages.hasOwnProperty(imgUrl)) {\n callback(loadedImages[imgUrl]);\n } else {\n var img = new window.Image(),\n imgId = lastLoadedIdx;\n\n lastLoadedIdx += 1;\n img.crossOrigin = \"anonymous\";\n img.onload = function() {\n markDirty();\n drawAt(imgId, img, callback);\n };\n\n img.src = imgUrl;\n }\n }\n\n function createTexture() {\n var texture = new Texture(tilesPerRow * tileSize);\n textures.push(texture);\n }\n\n function drawAt(tileNumber, img, callback) {\n var tilePosition = getTileCoordinates(tileNumber),\n coordinates = {\n offset: tileNumber\n };\n\n if (tilePosition.textureNumber >= textures.length) {\n createTexture();\n }\n var currentTexture = textures[tilePosition.textureNumber];\n\n currentTexture.ctx.drawImage(img, tilePosition.col * tileSize, tilePosition.row * tileSize, tileSize, tileSize);\n trackedUrls[tileNumber] = img.src;\n\n loadedImages[img.src] = coordinates;\n currentTexture.isDirty = true;\n\n callback(coordinates);\n }\n\n function getTileCoordinates(absolutePosition) {\n var textureNumber = (absolutePosition / tilesPerTexture) << 0,\n localTileNumber = (absolutePosition % tilesPerTexture),\n row = (localTileNumber / tilesPerRow) << 0,\n col = (localTileNumber % tilesPerRow);\n\n return {\n textureNumber: textureNumber,\n row: row,\n col: col\n };\n }\n\n function markDirtyNow() {\n api.isDirty = true;\n skipedDirty = 0;\n dirtyTimeoutId = null;\n }\n\n function markDirty() {\n // delay this call, since it results in texture reload\n if (dirtyTimeoutId) {\n window.clearTimeout(dirtyTimeoutId);\n skipedDirty += 1;\n dirtyTimeoutId = null;\n }\n\n if (skipedDirty > 10) {\n markDirtyNow();\n } else {\n dirtyTimeoutId = window.setTimeout(markDirtyNow, 400);\n }\n }\n\n function copy(from, to) {\n var fromCanvas = textures[from.textureNumber].canvas,\n toCtx = textures[to.textureNumber].ctx,\n x = to.col * tileSize,\n y = to.row * tileSize;\n\n toCtx.drawImage(fromCanvas, from.col * tileSize, from.row * tileSize, tileSize, tileSize, x, y, tileSize, tileSize);\n textures[from.textureNumber].isDirty = true;\n textures[to.textureNumber].isDirty = true;\n }\n}\n\nfunction isPowerOf2(n) {\n return (n & (n - 1)) === 0;\n}\n","module.exports = webglImage;\n\n/**\n * Represents a model for image.\n */\nfunction webglImage(size, src) {\n return {\n /**\n * Gets texture index where current image is placed.\n */\n _texture : 0,\n\n /**\n * Gets offset in the texture where current image is placed.\n */\n _offset : 0,\n\n /**\n * Gets size of the square with the image.\n */\n size : typeof size === 'number' ? size : 32,\n\n /**\n * Source of the image. If image is coming not from your domain\n * certain origin restrictions applies.\n * See http://www.khronos.org/registry/webgl/specs/latest/#4.2 for more details.\n */\n src : src\n };\n}\n","/**\n * @fileOverview Defines an image nodes for webglGraphics class.\n * Shape of nodes is square.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nvar WebglAtlas = require('./webglAtlas.js');\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglImageNodeProgram;\n\n/**\n * Defines simple UI for nodes in webgl renderer. Each node is rendered as an image.\n * \n * @param {number} tilesPerTexture\n * \n */\nfunction webglImageNodeProgram(tilesPerTexture) {\n // WebGL is gian state machine, we store some properties of the state here:\n var ATTRIBUTES_PER_PRIMITIVE = 18;\n var nodesFS = createNodeFragmentShader();\n var nodesVS = createNodeVertexShader();\n var tilesPerTexture = tilesPerTexture || 1024; // TODO: Get based on max texture size\n var atlas;\n var program;\n var gl;\n var buffer;\n var utils;\n var locations;\n var nodesCount = 0;\n var nodes = new Float32Array(64);\n var width;\n var height;\n var transform;\n var sizeDirty;\n\n\n return {\n load: load,\n\n /**\n * Updates position of current node in the buffer of nodes.\n *\n * @param idx - index of current node.\n * @param pos - new position of the node.\n */\n position: position,\n\n createNode: createNode,\n\n removeNode: removeNode,\n\n replaceProperties: replaceProperties,\n\n updateTransform: updateTransform,\n\n updateSize: updateSize,\n\n render: render\n };\n\n function refreshTexture(texture, idx) {\n if (texture.nativeObject) {\n gl.deleteTexture(texture.nativeObject);\n }\n\n var nativeObject = gl.createTexture();\n gl.activeTexture(gl[\"TEXTURE\" + idx]);\n gl.bindTexture(gl.TEXTURE_2D, nativeObject);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.canvas);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);\n\n gl.generateMipmap(gl.TEXTURE_2D);\n gl.uniform1i(locations[\"sampler\" + idx], idx);\n\n texture.nativeObject = nativeObject;\n }\n\n function ensureAtlasTextureUpdated() {\n if (atlas.isDirty) {\n var textures = atlas.getTextures(),\n i;\n for (i = 0; i < textures.length; ++i) {\n if (textures[i].isDirty || !textures[i].nativeObject) {\n refreshTexture(textures[i], i);\n }\n }\n\n atlas.clearDirty();\n }\n }\n\n function load(glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n atlas = new WebglAtlas(tilesPerTexture);\n\n program = utils.createProgram(nodesVS, nodesFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, [\"a_vertexPos\", \"a_customAttributes\", \"u_screenSize\", \"u_transform\", \"u_sampler0\", \"u_sampler1\", \"u_sampler2\", \"u_sampler3\", \"u_tilesPerTexture\"]);\n\n gl.uniform1f(locations.tilesPerTexture, tilesPerTexture);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.customAttributes);\n\n buffer = gl.createBuffer();\n }\n\n function position(nodeUI, pos) {\n var idx = nodeUI.id * ATTRIBUTES_PER_PRIMITIVE;\n nodes[idx] = pos.x - nodeUI.size;\n nodes[idx + 1] = -pos.y - nodeUI.size;\n nodes[idx + 2] = nodeUI._offset * 4;\n\n nodes[idx + 3] = pos.x + nodeUI.size;\n nodes[idx + 4] = -pos.y - nodeUI.size;\n nodes[idx + 5] = nodeUI._offset * 4 + 1;\n\n nodes[idx + 6] = pos.x - nodeUI.size;\n nodes[idx + 7] = -pos.y + nodeUI.size;\n nodes[idx + 8] = nodeUI._offset * 4 + 2;\n\n nodes[idx + 9] = pos.x - nodeUI.size;\n nodes[idx + 10] = -pos.y + nodeUI.size;\n nodes[idx + 11] = nodeUI._offset * 4 + 2;\n\n nodes[idx + 12] = pos.x + nodeUI.size;\n nodes[idx + 13] = -pos.y - nodeUI.size;\n nodes[idx + 14] = nodeUI._offset * 4 + 1;\n\n nodes[idx + 15] = pos.x + nodeUI.size;\n nodes[idx + 16] = -pos.y + nodeUI.size;\n nodes[idx + 17] = nodeUI._offset * 4 + 3;\n }\n\n function createNode(ui) {\n nodes = utils.extendArray(nodes, nodesCount, ATTRIBUTES_PER_PRIMITIVE);\n nodesCount += 1;\n\n var coordinates = atlas.getCoordinates(ui.src);\n if (coordinates) {\n ui._offset = coordinates.offset;\n } else {\n ui._offset = 0;\n // Image is not yet loaded into the atlas. Reload it:\n atlas.load(ui.src, function(coordinates) {\n ui._offset = coordinates.offset;\n });\n }\n }\n\n function removeNode(nodeUI) {\n if (nodesCount > 0) {\n nodesCount -= 1;\n }\n\n if (nodeUI.id < nodesCount && nodesCount > 0) {\n if (nodeUI.src) {\n atlas.remove(nodeUI.src);\n }\n\n utils.copyArrayPart(nodes, nodeUI.id * ATTRIBUTES_PER_PRIMITIVE, nodesCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n }\n\n function replaceProperties(replacedNode, newNode) {\n newNode._offset = replacedNode._offset;\n }\n\n function updateTransform(newTransform) {\n sizeDirty = true;\n transform = newTransform;\n }\n\n function updateSize(w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n }\n\n function render() {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, nodes, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 2, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.customAttributes, 1, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 2 * 4);\n\n ensureAtlasTextureUpdated();\n\n gl.drawArrays(gl.TRIANGLES, 0, nodesCount * 6);\n }\n}\n\n// TODO: Use glslify for shaders\nfunction createNodeFragmentShader() {\n return [\n \"precision mediump float;\",\n \"varying vec4 color;\",\n \"varying vec3 vTextureCoord;\",\n \"uniform sampler2D u_sampler0;\",\n \"uniform sampler2D u_sampler1;\",\n \"uniform sampler2D u_sampler2;\",\n \"uniform sampler2D u_sampler3;\",\n\n \"void main(void) {\",\n \" if (vTextureCoord.z == 0.) {\",\n \" gl_FragColor = texture2D(u_sampler0, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 1.) {\",\n \" gl_FragColor = texture2D(u_sampler1, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 2.) {\",\n \" gl_FragColor = texture2D(u_sampler2, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 3.) {\",\n \" gl_FragColor = texture2D(u_sampler3, vTextureCoord.xy);\",\n \" } else { gl_FragColor = vec4(0, 1, 0, 1); }\",\n \"}\"\n ].join(\"\\n\");\n}\n\nfunction createNodeVertexShader() {\n return [\n \"attribute vec2 a_vertexPos;\",\n\n \"attribute float a_customAttributes;\",\n \"uniform vec2 u_screenSize;\",\n \"uniform mat4 u_transform;\",\n \"uniform float u_tilesPerTexture;\",\n \"varying vec3 vTextureCoord;\",\n\n \"void main(void) {\",\n \" gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0, 1);\",\n \"float corner = mod(a_customAttributes, 4.);\",\n \"float tileIndex = mod(floor(a_customAttributes / 4.), u_tilesPerTexture);\",\n \"float tilesPerRow = sqrt(u_tilesPerTexture);\",\n \"float tileSize = 1./tilesPerRow;\",\n \"float tileColumn = mod(tileIndex, tilesPerRow);\",\n \"float tileRow = floor(tileIndex/tilesPerRow);\",\n\n \"if(corner == 0.0) {\",\n \" vTextureCoord.xy = vec2(0, 1);\",\n \"} else if(corner == 1.0) {\",\n \" vTextureCoord.xy = vec2(1, 1);\",\n \"} else if(corner == 2.0) {\",\n \" vTextureCoord.xy = vec2(0, 0);\",\n \"} else {\",\n \" vTextureCoord.xy = vec2(1, 0);\",\n \"}\",\n\n \"vTextureCoord *= tileSize;\",\n \"vTextureCoord.x += tileColumn * tileSize;\",\n \"vTextureCoord.y += tileRow * tileSize;\",\n \"vTextureCoord.z = floor(floor(a_customAttributes / 4.)/u_tilesPerTexture);\",\n \"}\"\n ].join(\"\\n\");\n}\n","var documentEvents = require('../Utils/documentEvents.js');\n\nmodule.exports = webglInputEvents;\n\n/**\n * Monitors graph-related mouse input in webgl graphics and notifies subscribers.\n *\n * @param {Viva.Graph.View.webglGraphics} webglGraphics\n */\nfunction webglInputEvents(webglGraphics) {\n if (webglGraphics.webglInputEvents) {\n // Don't listen twice, if we are already attached to this graphics:\n return webglGraphics.webglInputEvents;\n }\n\n var mouseCapturedNode = null,\n mouseEnterCallback = [],\n mouseLeaveCallback = [],\n mouseDownCallback = [],\n mouseUpCallback = [],\n mouseMoveCallback = [],\n clickCallback = [],\n dblClickCallback = [],\n prevSelectStart,\n boundRect;\n\n var root = webglGraphics.getGraphicsRoot();\n startListen(root);\n\n var api = {\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave,\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n mouseMove: mouseMove,\n click: click,\n dblClick: dblClick,\n mouseCapture: mouseCapture,\n releaseMouseCapture: releaseMouseCapture\n };\n\n // TODO I don't remember why this is needed:\n webglGraphics.webglInputEvents = api;\n\n return api;\n\n function releaseMouseCapture() {\n mouseCapturedNode = null;\n }\n\n function mouseCapture(node) {\n mouseCapturedNode = node;\n }\n\n function dblClick(callback) {\n if (typeof callback === 'function') {\n dblClickCallback.push(callback);\n }\n return api;\n }\n\n function click(callback) {\n if (typeof callback === 'function') {\n clickCallback.push(callback);\n }\n return api;\n }\n\n function mouseMove(callback) {\n if (typeof callback === 'function') {\n mouseMoveCallback.push(callback);\n }\n return api;\n }\n\n function mouseUp(callback) {\n if (typeof callback === 'function') {\n mouseUpCallback.push(callback);\n }\n return api;\n }\n\n function mouseDown(callback) {\n if (typeof callback === 'function') {\n mouseDownCallback.push(callback);\n }\n return api;\n }\n\n function mouseLeave(callback) {\n if (typeof callback === 'function') {\n mouseLeaveCallback.push(callback);\n }\n return api;\n }\n\n function mouseEnter(callback) {\n if (typeof callback === 'function') {\n mouseEnterCallback.push(callback);\n }\n return api;\n }\n\n function preciseCheck(nodeUI, x, y) {\n if (nodeUI && nodeUI.size) {\n var pos = nodeUI.position,\n half = nodeUI.size;\n\n return pos.x - half < x && x < pos.x + half &&\n pos.y - half < y && y < pos.y + half;\n }\n\n return true;\n }\n\n function getNodeAtClientPos(pos) {\n return webglGraphics.getNodeAtClientPos(pos, preciseCheck);\n }\n\n function stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function handleDisabledEvent(e) {\n stopPropagation(e);\n return false;\n }\n\n function invoke(callbacksChain, args) {\n var i, stopPropagation;\n for (i = 0; i < callbacksChain.length; i += 1) {\n stopPropagation = callbacksChain[i].apply(undefined, args);\n if (stopPropagation) {\n return true;\n }\n }\n }\n\n function startListen(root) {\n var pos = {\n x: 0,\n y: 0\n },\n lastFound = null,\n lastUpdate = 1,\n lastClickTime = +new Date(),\n\n handleMouseMove = function(e) {\n invoke(mouseMoveCallback, [lastFound, e]);\n pos.x = e.clientX;\n pos.y = e.clientY;\n },\n\n handleMouseUp = function() {\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n },\n\n updateBoundRect = function() {\n boundRect = root.getBoundingClientRect();\n };\n\n window.addEventListener('resize', updateBoundRect);\n updateBoundRect();\n\n // mouse move inside container serves only to track mouse enter/leave events.\n root.addEventListener('mousemove',\n function(e) {\n if (mouseCapturedNode) {\n return;\n }\n if (lastUpdate++ % 7 === 0) {\n // since there is no bullet proof method to detect resize\n // event, we preemptively update the bounding rectangle\n updateBoundRect();\n lastUpdate = 1;\n }\n var cancelBubble = false,\n node;\n\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n node = getNodeAtClientPos(pos);\n\n if (node && lastFound !== node) {\n if(lastFound){ \n invoke(mouseLeaveCallback, [lastFound]);\n }\n lastFound = node;\n cancelBubble = cancelBubble || invoke(mouseEnterCallback, [lastFound]);\n } else if (node === null && lastFound !== node) {\n cancelBubble = cancelBubble || invoke(mouseLeaveCallback, [lastFound]);\n lastFound = null;\n }\n\n if (cancelBubble) {\n stopPropagation(e);\n }\n });\n\n root.addEventListener('mousedown',\n function(e) {\n var cancelBubble = false,\n args;\n updateBoundRect();\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n args = [getNodeAtClientPos(pos), e];\n if (args[0]) {\n cancelBubble = invoke(mouseDownCallback, args);\n // we clicked on a node. Following drag should be handled on document events:\n documentEvents.on('mousemove', handleMouseMove);\n documentEvents.on('mouseup', handleMouseUp);\n\n prevSelectStart = window.document.onselectstart;\n\n window.document.onselectstart = handleDisabledEvent;\n\n lastFound = args[0];\n } else {\n lastFound = null;\n }\n if (cancelBubble) {\n stopPropagation(e);\n }\n });\n\n root.addEventListener('mouseup',\n function(e) {\n var clickTime = +new Date(),\n args;\n\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n var nodeAtClientPos = getNodeAtClientPos(pos);\n var sameNode = nodeAtClientPos === lastFound;\n args = [nodeAtClientPos || lastFound, e];\n if (args[0]) {\n window.document.onselectstart = prevSelectStart;\n\n if (clickTime - lastClickTime < 400 && sameNode) {\n invoke(dblClickCallback, args);\n } else {\n invoke(clickCallback, args);\n }\n lastClickTime = clickTime;\n\n if (invoke(mouseUpCallback, args)) {\n stopPropagation(e);\n }\n }\n });\n }\n}\n","var parseColor = require('./parseColor.js');\n\nmodule.exports = webglLine;\n\n/**\n * Defines a webgl line. This class has no rendering logic at all,\n * it's just passed to corresponding shader and the shader should\n * figure out how to render it.\n *\n */\nfunction webglLine(color) {\n return {\n /**\n * Gets or sets color of the line. If you set this property externally\n * make sure it always come as integer of 0xRRGGBBAA format\n */\n color: parseColor(color)\n };\n}\n","/**\n * @fileOverview Defines a naive form of links for webglGraphics class.\n * This form allows to change color of links.\n **/\n\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglLinkProgram;\n\n/**\n * Defines UI for links in webgl renderer.\n */\nfunction webglLinkProgram() {\n var ATTRIBUTES_PER_PRIMITIVE = 6, // primitive is Line with two points. Each has x,y and color = 3 * 2 attributes.\n BYTES_PER_LINK = 2 * (2 * Float32Array.BYTES_PER_ELEMENT + Uint32Array.BYTES_PER_ELEMENT), // two nodes * (x, y + color)\n linksFS = [\n 'precision mediump float;',\n 'varying vec4 color;',\n 'void main(void) {',\n ' gl_FragColor = color;',\n '}'\n ].join('\\n'),\n\n linksVS = [\n 'attribute vec2 a_vertexPos;',\n 'attribute vec4 a_color;',\n\n 'uniform vec2 u_screenSize;',\n 'uniform mat4 u_transform;',\n\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0.0, 1.0);',\n ' color = a_color.abgr;',\n '}'\n ].join('\\n'),\n\n program,\n gl,\n buffer,\n utils,\n locations,\n linksCount = 0,\n frontLinkId, // used to track z-index of links.\n storage = new ArrayBuffer(16 * BYTES_PER_LINK),\n positions = new Float32Array(storage),\n colors = new Uint32Array(storage),\n width,\n height,\n transform,\n sizeDirty,\n\n ensureEnoughStorage = function () {\n // TODO: this is a duplicate of webglNodeProgram code. Extract it to webgl.js\n if ((linksCount+1)*BYTES_PER_LINK > storage.byteLength) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedStorage = new ArrayBuffer(storage.byteLength * 2),\n extendedPositions = new Float32Array(extendedStorage),\n extendedColors = new Uint32Array(extendedStorage);\n\n extendedColors.set(colors); // should be enough to copy just one view.\n positions = extendedPositions;\n colors = extendedColors;\n storage = extendedStorage;\n }\n };\n\n return {\n load : function (glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n program = utils.createProgram(linksVS, linksFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, ['a_vertexPos', 'a_color', 'u_screenSize', 'u_transform']);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.color);\n\n buffer = gl.createBuffer();\n },\n\n position: function (linkUi, fromPos, toPos) {\n var linkIdx = linkUi.id,\n offset = linkIdx * ATTRIBUTES_PER_PRIMITIVE;\n positions[offset] = fromPos.x;\n positions[offset + 1] = fromPos.y;\n colors[offset + 2] = linkUi.color;\n\n positions[offset + 3] = toPos.x;\n positions[offset + 4] = toPos.y;\n colors[offset + 5] = linkUi.color;\n },\n\n createLink : function (ui) {\n ensureEnoughStorage();\n\n linksCount += 1;\n frontLinkId = ui.id;\n },\n\n removeLink : function (ui) {\n if (linksCount > 0) { linksCount -= 1; }\n // swap removed link with the last link. This will give us O(1) performance for links removal:\n if (ui.id < linksCount && linksCount > 0) {\n // using colors as a view to array buffer is okay here.\n utils.copyArrayPart(colors, ui.id * ATTRIBUTES_PER_PRIMITIVE, linksCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n },\n\n updateTransform : function (newTransform) {\n sizeDirty = true;\n transform = newTransform;\n },\n\n updateSize : function (w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n },\n\n render : function () {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, storage, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 2, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.color, 4, gl.UNSIGNED_BYTE, true, 3 * Float32Array.BYTES_PER_ELEMENT, 2 * 4);\n\n gl.drawArrays(gl.LINES, 0, linksCount * 2);\n\n frontLinkId = linksCount - 1;\n },\n\n bringToFront : function (link) {\n if (frontLinkId > link.id) {\n utils.swapArrayPart(positions, link.id * ATTRIBUTES_PER_PRIMITIVE, frontLinkId * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n if (frontLinkId > 0) {\n frontLinkId -= 1;\n }\n },\n\n getFrontLinkId : function () {\n return frontLinkId;\n }\n };\n}\n","/**\n * @fileOverview Defines a naive form of nodes for webglGraphics class.\n * This form allows to change color of node. Shape of nodes is rectangular.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglNodeProgram;\n\n/**\n * Defines simple UI for nodes in webgl renderer. Each node is rendered as square. Color and size can be changed.\n */\nfunction webglNodeProgram() {\n var ATTRIBUTES_PER_PRIMITIVE = 4; // Primitive is point, x, y, size, color\n // x, y, z - floats, color = uint.\n var BYTES_PER_NODE = 3 * Float32Array.BYTES_PER_ELEMENT + Uint32Array.BYTES_PER_ELEMENT;\n var nodesFS = [\n 'precision mediump float;',\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_FragColor = color;',\n '}'\n ].join('\\n');\n var nodesVS = [\n 'attribute vec3 a_vertexPos;',\n 'attribute vec4 a_color;',\n 'uniform vec2 u_screenSize;',\n 'uniform mat4 u_transform;',\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_Position = u_transform * vec4(a_vertexPos.xy/u_screenSize, 0, 1);',\n ' gl_PointSize = a_vertexPos.z * u_transform[0][0];',\n ' color = a_color.abgr;',\n '}'\n ].join('\\n');\n\n var program;\n var gl;\n var buffer;\n var locations;\n var utils;\n var storage = new ArrayBuffer(16 * BYTES_PER_NODE);\n var positions = new Float32Array(storage);\n var colors = new Uint32Array(storage);\n var nodesCount = 0;\n var width;\n var height;\n var transform;\n var sizeDirty;\n\n return {\n load: load,\n\n /**\n * Updates position of node in the buffer of nodes.\n *\n * @param idx - index of current node.\n * @param pos - new position of the node.\n */\n position: position,\n\n updateTransform: updateTransform,\n\n updateSize: updateSize,\n\n removeNode: removeNode,\n\n createNode: createNode,\n\n replaceProperties: replaceProperties,\n\n render: render\n };\n\n function ensureEnoughStorage() {\n if ((nodesCount + 1) * BYTES_PER_NODE >= storage.byteLength) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedStorage = new ArrayBuffer(storage.byteLength * 2),\n extendedPositions = new Float32Array(extendedStorage),\n extendedColors = new Uint32Array(extendedStorage);\n\n extendedColors.set(colors); // should be enough to copy just one view.\n positions = extendedPositions;\n colors = extendedColors;\n storage = extendedStorage;\n }\n }\n\n function load(glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n program = utils.createProgram(nodesVS, nodesFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, ['a_vertexPos', 'a_color', 'u_screenSize', 'u_transform']);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.color);\n\n buffer = gl.createBuffer();\n }\n\n function position(nodeUI, pos) {\n var idx = nodeUI.id;\n\n positions[idx * ATTRIBUTES_PER_PRIMITIVE] = pos.x;\n positions[idx * ATTRIBUTES_PER_PRIMITIVE + 1] = -pos.y;\n positions[idx * ATTRIBUTES_PER_PRIMITIVE + 2] = nodeUI.size;\n\n colors[idx * ATTRIBUTES_PER_PRIMITIVE + 3] = nodeUI.color;\n }\n\n function updateTransform(newTransform) {\n sizeDirty = true;\n transform = newTransform;\n }\n\n function updateSize(w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n }\n\n function removeNode(node) {\n if (nodesCount > 0) {\n nodesCount -= 1;\n }\n\n if (node.id < nodesCount && nodesCount > 0) {\n // we can use colors as a 'view' into array array buffer.\n utils.copyArrayPart(colors, node.id * ATTRIBUTES_PER_PRIMITIVE, nodesCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n }\n\n function createNode() {\n ensureEnoughStorage();\n nodesCount += 1;\n }\n\n function replaceProperties(/* replacedNode, newNode */) {}\n\n function render() {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, storage, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 3, gl.FLOAT, false, ATTRIBUTES_PER_PRIMITIVE * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.color, 4, gl.UNSIGNED_BYTE, true, ATTRIBUTES_PER_PRIMITIVE * Float32Array.BYTES_PER_ELEMENT, 3 * 4);\n\n gl.drawArrays(gl.POINTS, 0, nodesCount);\n }\n}\n","var parseColor = require('./parseColor.js');\n\nmodule.exports = webglSquare;\n\n/**\n * Can be used as a callback in the webglGraphics.node() function, to\n * create a custom looking node.\n *\n * @param size - size of the node in pixels.\n * @param color - color of the node in '#rrggbbaa' or '#rgb' format.\n */\nfunction webglSquare(size, color) {\n return {\n /**\n * Gets or sets size of the square side.\n */\n size: typeof size === 'number' ? size : 10,\n\n /**\n * Gets or sets color of the square.\n */\n color: parseColor(color)\n };\n}\n","// todo: this should be generated at build time.\nmodule.exports = '0.10.1';\n","/**\r\n * This is an entry point for global namespace. If you want to use separate\r\n * modules individually - you are more than welcome to do so.\r\n */\r\n\r\nvar random = require('ngraph.random');\r\n\r\nvar Viva = {\r\n lazyExtend: function() {\r\n return require('ngraph.merge').apply(this, arguments);\r\n },\r\n randomIterator: function() {\r\n return random.randomIterator.apply(random, arguments);\r\n },\r\n random: function() {\r\n return random.random.apply(random, arguments);\r\n },\r\n events: require('ngraph.events')\r\n};\r\n\r\nViva.Graph = {\r\n version: require('./version.js'),\r\n graph: require('ngraph.graph'),\r\n\r\n serializer: function() {\r\n return {\r\n loadFromJSON: require('ngraph.fromjson'),\r\n storeToJSON: require('ngraph.tojson')\r\n };\r\n },\r\n\r\n centrality: require('./Algorithms/centrality.js'),\r\n operations: require('./Algorithms/operations.js'),\r\n\r\n geom: function() {\r\n return {\r\n intersect: require('gintersect'),\r\n intersectRect: require('./Utils/intersectRect.js')\r\n };\r\n },\r\n\r\n webgl: require('./WebGL/webgl.js'),\r\n webglInputEvents: require('./WebGL/webglInputEvents.js'),\r\n\r\n generator: function() {\r\n return require('ngraph.generators');\r\n },\r\n\r\n Input: {\r\n domInputManager: require('./Input/domInputManager.js'),\r\n webglInputManager: require('./Input/webglInputManager.js')\r\n },\r\n\r\n Utils: {\r\n // TODO: move to Input\r\n dragndrop: require('./Input/dragndrop.js'),\r\n findElementPosition: require('./Utils/findElementPosition.js'),\r\n timer: require('./Utils/timer.js'),\r\n getDimension: require('./Utils/getDimensions.js'),\r\n events: require('./Utils/backwardCompatibleEvents.js')\r\n },\r\n\r\n Layout: {\r\n forceDirected: require('ngraph.forcelayout'),\r\n constant: require('./Layout/constant.js')\r\n },\r\n\r\n View: {\r\n // TODO: Move `webglXXX` out to webgl namespace\r\n Texture: require('./WebGL/texture.js'),\r\n // TODO: This should not be even exported\r\n webglAtlas: require('./WebGL/webglAtlas.js'),\r\n webglImageNodeProgram: require('./WebGL/webglImageNodeProgram.js'),\r\n webglLinkProgram: require('./WebGL/webglLinkProgram.js'),\r\n webglNodeProgram: require('./WebGL/webglNodeProgram.js'),\r\n webglLine: require('./WebGL/webglLine.js'),\r\n webglSquare: require('./WebGL/webglSquare.js'),\r\n webglImage: require('./WebGL/webglImage.js'),\r\n webglGraphics: require('./View/webglGraphics.js'),\r\n // TODO: Deprecate this:\r\n _webglUtil: {\r\n parseColor: require('./WebGL/parseColor.js')\r\n },\r\n\r\n // TODO: move to svg namespace\r\n svgGraphics: require('./View/svgGraphics.js'),\r\n\r\n renderer: require('./View/renderer.js'),\r\n\r\n // deprecated\r\n cssGraphics: function() {\r\n throw new Error('cssGraphics is deprecated. Please use older version of vivagraph (< 0.7) if you need it');\r\n },\r\n\r\n svgNodeFactory: function() {\r\n throw new Error('svgNodeFactory is deprecated. Please use older version of vivagraph (< 0.7) if you need it');\r\n },\r\n\r\n community: function() {\r\n throw new Error('community is deprecated. Please use vivagraph < 0.7 if you need it, or `https://github.com/anvaka/ngraph.slpa` module');\r\n }\r\n },\r\n\r\n Rect: require('./Utils/rect.js'),\r\n\r\n svg: require('simplesvg'),\r\n\r\n // TODO: should be camelCase\r\n BrowserInfo: require('./Utils/browserInfo.js')\r\n};\r\n\r\nmodule.exports = Viva;\r\n","var map = {\n\t\"./bee/themes/dark/banner.svg\": [\n\t\t9389,\n\t\t389\n\t],\n\t\"./bee/themes/light/banner.svg\": [\n\t\t9971,\n\t\t971\n\t],\n\t\"./hornet/themes/dark/banner.svg\": [\n\t\t6740,\n\t\t740\n\t],\n\t\"./hornet/themes/light/banner.svg\": [\n\t\t8963,\n\t\t963\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 1 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 4469;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./bee/themes/dark/logo-navigation.svg\": [\n\t\t4118,\n\t\t118\n\t],\n\t\"./bee/themes/light/logo-navigation.svg\": [\n\t\t8054,\n\t\t54\n\t],\n\t\"./hornet/themes/dark/logo-navigation.svg\": [\n\t\t6330,\n\t\t330\n\t],\n\t\"./hornet/themes/light/logo-navigation.svg\": [\n\t\t583,\n\t\t583\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 1 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 1361;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./bee/brand.json\": 6256,\n\t\"./hornet/brand.json\": 5501\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 693;","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 _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\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;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"54\":\"49522abb\",\"118\":\"4021bd66\",\"330\":\"9a2ff1cd\",\"389\":\"3aa1d587\",\"583\":\"5ba7f11c\",\"740\":\"f9f957e3\",\"963\":\"0e89dc22\",\"971\":\"3a528be9\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"node-dashboard:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/dashboard/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknode_dashboard\"] = self[\"webpackChunknode_dashboard\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import 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 _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\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 return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\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}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default 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}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\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}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgExplorer = function SvgExplorer(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.252 8C2.08416 8.6534 1.99949 9.32538 2 10C2 10.69 2.088 11.36 2.252 12H5.1C4.96518 10.6701 4.96518 9.32993 5.1 8H2.252ZM3.07 6H5.416C5.682 4.783 6.066 3.693 6.537 2.786C5.08518 3.48542 3.87722 4.60523 3.07 6ZM17.748 8H14.9C15.0348 9.32993 15.0348 10.6701 14.9 12H17.748C17.912 11.36 18 10.69 18 10C18 9.31 17.912 8.64 17.748 8ZM16.93 6C16.1228 4.60523 14.9148 3.48542 13.463 2.786C13.935 3.693 14.318 4.783 14.584 6H16.93ZM7.112 8C7.03708 8.66403 6.99968 9.33176 7 10C7 10.685 7.038 11.355 7.112 12H12.888C13.0386 10.6709 13.0386 9.32908 12.888 8H7.112ZM7.47 6H12.53C12.348 5.2483 12.0855 4.51841 11.747 3.823C11.119 2.568 10.447 2 10 2C9.552 2 8.881 2.568 8.253 3.823C7.938 4.455 7.673 5.19 7.47 6ZM3.07 14C3.87722 15.3948 5.08518 16.5146 6.537 17.214C6.065 16.307 5.682 15.217 5.416 14H3.07ZM16.93 14H14.584C14.318 15.217 13.934 16.307 13.463 17.214C14.9148 16.5146 16.1228 15.3948 16.93 14ZM7.47 14C7.673 14.81 7.938 15.545 8.253 16.177C8.881 17.432 9.553 18 10 18C10.448 18 11.119 17.432 11.747 16.177C12.062 15.545 12.327 14.81 12.53 14H7.47ZM10 20C4.477 20 0 15.523 0 10C0 4.477 4.477 0 10 0C15.523 0 20 4.477 20 10C20 15.523 15.523 20 10 20Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgExplorer);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/explorer.e52d7b00ad50fa4e3ca8175ee03b51e7.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHome = function SvgHome(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 18V6.80002L10 2.00002L2 6.80002V18H6V14.918C6 13.8572 6.42143 12.8397 7.17157 12.0896C7.92172 11.3394 8.93913 10.918 10 10.918C11.0609 10.918 12.0783 11.3394 12.8284 12.0896C13.5786 12.8397 14 13.8572 14 14.918V18H18ZM12 20V14.918C12 14.3876 11.7893 13.8789 11.4142 13.5038C11.0391 13.1287 10.5304 12.918 10 12.918C9.46957 12.918 8.96086 13.1287 8.58579 13.5038C8.21071 13.8789 8 14.3876 8 14.918V20H2C1.46957 20 0.960859 19.7893 0.585786 19.4142C0.210714 19.0391 0 18.5304 0 18L0 6.80002C-3.32274e-06 6.45465 0.0894306 6.11516 0.259593 5.81462C0.429755 5.51407 0.674847 5.26271 0.971 5.08502L8.971 0.285019C9.28183 0.0985175 9.63751 0 10 0C10.3625 0 10.7182 0.0985175 11.029 0.285019L19.029 5.08502C19.3252 5.26271 19.5702 5.51407 19.7404 5.81462C19.9106 6.11516 20 6.45465 20 6.80002V18C20 18.5304 19.7893 19.0391 19.4142 19.4142C19.0391 19.7893 18.5304 20 18 20H12Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHome);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/home.cddfeea549634083903fb255dae8714d.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMoon = function SvgMoon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.49261,11.36231c-0.20411,-0.05103 -0.40822,0 -0.58682,0.12757c-0.66336,0.56131 -1.42878,1.02056 -2.27074,1.32672c-0.79093,0.30617 -1.6584,0.45925 -2.5769,0.45925c-2.06662,0 -3.95465,-0.84196 -5.30689,-2.19419c-1.35224,-1.35224 -2.19419,-3.24026 -2.19419,-5.30689c0,-0.86747 0.15308,-1.70943 0.40822,-2.47485c0.28065,-0.81644 0.68887,-1.55635 1.22467,-2.19419c0.22962,-0.28065 0.1786,-0.68887 -0.10206,-0.9185c-0.1786,-0.12757 -0.38271,-0.1786 -0.58682,-0.12757c-2.16868,0.58682 -4.05671,1.88803 -5.40894,3.62297c-1.30121,1.70943 -2.09214,3.82708 -2.09214,6.14885c0,2.78101 1.12261,5.30689 2.95961,7.14389s4.36287,2.95961 7.14389,2.95961c2.34728,0 4.51596,-0.81644 6.2509,-2.16868c1.76046,-1.37775 3.03615,-3.34232 3.57194,-5.58754c0.12757,-0.38271 -0.07654,-0.7399 -0.43374,-0.81644zm-3.90362,5.3324c-1.47981,1.17364 -3.36783,1.88803 -5.43446,1.88803c-2.42382,0 -4.61801,-0.99504 -6.19987,-2.5769c-1.58186,-1.58186 -2.5769,-3.77605 -2.5769,-6.19987c0,-2.0156 0.66336,-3.8526 1.81149,-5.3324c0.79093,-1.02056 1.78597,-1.86251 2.9341,-2.44933c-0.12757,0.28065 -0.25514,0.56131 -0.35719,0.86747c-0.33168,0.9185 -0.48476,1.88803 -0.48476,2.90858c0,2.42382 0.99504,4.64353 2.5769,6.22539s3.80157,2.5769 6.22539,2.5769c1.07158,0 2.09214,-0.1786 3.03615,-0.53579c0.33168,-0.12757 0.66336,-0.25514 0.96953,-0.40822c-0.61233,1.17364 -1.45429,2.21971 -2.50036,3.03615z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMoon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/moon.02520db67ef1c88d6308394bfd328eec.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlockUnlocked = function SvgPadlockUnlocked(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.87281,24l-12.02632,0c-1.10464,0 -2.00439,-1.009 -2.00439,-2.25l0,-10.5c0,-1.241 0.89975,-2.25 2.00439,-2.25l12.02632,0c1.10464,0 2.00439,1.009 2.00439,2.25l0,10.5c0,1.241 -0.89975,2.25 -2.00439,2.25zm-12.02632,-13.5c-0.36792,0 -0.66813,0.336 -0.66813,0.75l0,10.5c0,0.414 0.30021,0.75 0.66813,0.75l12.02632,0c0.36792,0 0.66813,-0.336 0.66813,-0.75l0,-10.5c0,-0.414 -0.30021,-0.75 -0.66813,-0.75l-12.02632,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.35526,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlockUnlocked);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock-unlocked.75e5a880128abbe6315c53b5b3b68cdd.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlock = function SvgPadlock(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18.75,24l-13.5,0c-1.24,0 -2.25,-1.009 -2.25,-2.25l0,-10.5c0,-1.241 1.01,-2.25 2.25,-2.25l13.5,0c1.24,0 2.25,1.009 2.25,2.25l0,10.5c0,1.241 -1.01,2.25 -2.25,2.25zm-13.5,-13.5c-0.413,0 -0.75,0.336 -0.75,0.75l0,10.5c0,0.414 0.337,0.75 0.75,0.75l13.5,0c0.413,0 0.75,-0.336 0.75,-0.75l0,-10.5c0,-0.414 -0.337,-0.75 -0.75,-0.75l-13.5,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.25,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlock);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock.5326d93aa17bb9e1a9ecf7fa84281cce.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPeers = function SvgPeers(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329ZM6 4C6 5.10457 5.10457 6 4 6C2.89543 6 2 5.10457 2 4C2 2.89543 2.89543 2 4 2C5.10457 2 6 2.89543 6 4ZM16 8C17.1046 8 18 7.10457 18 6C18 4.89543 17.1046 4 16 4C14.8954 4 14 4.89543 14 6C14 7.10457 14.8954 8 16 8ZM6 14C6 15.1046 5.10457 16 4 16C2.89543 16 2 15.1046 2 14C2 12.8954 2.89543 12 4 12C5.10457 12 6 12.8954 6 14ZM16 18C17.1046 18 18 17.1046 18 16C18 14.8954 17.1046 14 16 14C14.8954 14 14 14.8954 14 16C14 17.1046 14.8954 18 16 18Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPeers);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/peers.a62e2ab119894525f731b60d32f84cf2.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPlugins = function SvgPlugins(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 20,\n viewBox: \"0 5 32 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 13V8C18 7.73478 18.1054 7.48043 18.2929 7.29289C18.4804 7.10536 18.7348 7 19 7C19.2652 7 19.5196 7.10536 19.7071 7.29289C19.8946 7.48043 20 7.73478 20 8V13C20.5304 13 21.0391 13.2107 21.4142 13.5858C21.7893 13.9609 22 14.4696 22 15V18.5C21.9999 19.7247 21.5911 20.9144 20.8385 21.8805C20.0859 22.8467 19.0324 23.5342 17.845 23.834C17.9584 24.0628 18.0114 24.3167 17.9992 24.5717C17.987 24.8267 17.9099 25.0744 17.7753 25.2913C17.6406 25.5082 17.4528 25.6871 17.2296 25.8111C17.0064 25.9352 16.7553 26.0002 16.5 26H15.5C15.2447 26.0002 14.9936 25.9352 14.7704 25.8111C14.5472 25.6871 14.3594 25.5082 14.2247 25.2913C14.0901 25.0744 14.013 24.8267 14.0008 24.5717C13.9886 24.3167 14.0416 24.0628 14.155 23.834C12.9676 23.5342 11.9141 22.8467 11.1615 21.8805C10.4089 20.9144 10.0001 19.7247 10 18.5V15C10 14.4696 10.2107 13.9609 10.5858 13.5858C10.9609 13.2107 11.4696 13 12 13V8C12 7.73478 12.1054 7.48043 12.2929 7.29289C12.4804 7.10536 12.7348 7 13 7C13.2652 7 13.5196 7.10536 13.7071 7.29289C13.8946 7.48043 14 7.73478 14 8V13H18Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPlugins);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/plugins.3fb2b1e8594a778024916d98f9cdfd8f.svg\";","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgSun = function SvgSun(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m13.48664,6.42723c-0.8956,-0.8956 -2.15997,-1.4751 -3.52971,-1.4751s-2.63411,0.55316 -3.52971,1.4751c-0.8956,0.8956 -1.4751,2.15997 -1.4751,3.52971s0.5795,2.63411 1.4751,3.52971c0.8956,0.8956 2.15997,1.4751 3.52971,1.4751s2.63411,-0.55316 3.52971,-1.4751c0.8956,-0.8956 1.4751,-2.15997 1.4751,-3.52971s-0.55316,-2.63411 -1.4751,-3.52971zm-0.94828,6.11114c-0.65853,0.65853 -1.58047,1.05364 -2.58143,1.05364s-1.9229,-0.39512 -2.58143,-1.05364s-1.05364,-1.58047 -1.05364,-2.58143s0.39512,-1.9229 1.05364,-2.58143s1.58047,-1.05364 2.58143,-1.05364s1.9229,0.39512 2.58143,1.05364s1.05364,1.58047 1.05364,2.58143s-0.39512,1.9229 -1.05364,2.58143z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.229,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487c0,0.36878 0.31609,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,16.51587c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m16.99001,16.04173l-1.44876,-1.44876c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.01635,2.92386c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828c0.23707,0.26341 0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m2.71313,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487s0.28975,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,14.59297c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828s0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,4.37262l-1.44876,-1.44876c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgSun);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/sun.b34d19d4622b283d411a5a36eeb87adb.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgVisualizer = function SvgVisualizer(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.694333 17.3063C-1.21567 15.3943 0.952333 10.1263 5.53933 5.53935C10.1263 0.952348 15.3943 -1.21665 17.3063 0.694348C19.2163 2.60635 17.0483 7.87435 12.4613 12.4613C7.87433 17.0483 2.60633 19.2173 0.694333 17.3063ZM2.08033 15.9203C2.89533 16.7363 7.18233 14.9703 11.0773 11.0753C14.9723 7.18035 16.7373 2.89335 15.9223 2.07835C15.1073 1.26235 10.8203 3.02835 6.92533 6.92335C3.03033 10.8183 1.26533 15.1053 2.08033 15.9203ZM5.54033 12.4603C0.952333 7.87435 -1.21667 2.60635 0.694333 0.694348C2.60633 -1.21565 7.87433 0.952348 12.4613 5.53935C17.0483 10.1263 19.2173 15.3943 17.3063 17.3063C15.3943 19.2163 10.1263 17.0483 5.53933 12.4613L5.54033 12.4603ZM6.92533 11.0753C10.8203 14.9703 15.1073 16.7353 15.9223 15.9203C16.7383 15.1053 14.9723 10.8183 11.0773 6.92335C7.18233 3.02835 2.89533 1.26335 2.08033 2.07835C1.26433 2.89335 3.03033 7.18035 6.92533 11.0753ZM9.00033 11.0003C8.4699 11.0003 7.96119 10.7896 7.58612 10.4146C7.21105 10.0395 7.00033 9.53078 7.00033 9.00035C7.00033 8.46992 7.21105 7.96121 7.58612 7.58613C7.96119 7.21106 8.4699 7.00035 9.00033 7.00035C9.53077 7.00035 10.0395 7.21106 10.4145 7.58613C10.7896 7.96121 11.0003 8.46992 11.0003 9.00035C11.0003 9.53078 10.7896 10.0395 10.4145 10.4146C10.0395 10.7896 9.53077 11.0003 9.00033 11.0003Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgVisualizer);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/visualizer.66663d336132c1451c6c07149f519427.svg\";","export enum WebSocketTopic {\n SyncStatus = 0,\n PublicNodeStatus = 1,\n NodeStatus = 2,\n BPSMetrics = 3,\n Milestone = 4,\n PeerMetric = 5,\n ConfirmedMsMetrics = 6,\n Vertex = 7,\n SolidInfo = 8,\n ConfirmedInfo = 9,\n MilestoneInfo = 10,\n TipInfo = 11,\n DBSizeMetric = 12,\n}\n","/**\n * Factory for creating services.\n */\nexport class ServiceFactory {\n /**\n * Store the service callbacks.\n */\n private static readonly _services: { [name: string]: (serviceName: string) => unknown } = {};\n\n /**\n * Store the created instances.\n */\n private static readonly _instances: { [name: string]: unknown } = {};\n\n /**\n * Register a new service.\n * @param name The name of the service.\n * @param instanceCallback The callback to create an instance.\n */\n public static register(name: string, instanceCallback: (serviceName: string) => unknown): void {\n this._services[name] = instanceCallback;\n }\n\n /**\n * Unregister a service.\n * @param name The name of the service to unregister.\n */\n public static unregister(name: string): void {\n delete this._services[name];\n }\n\n /**\n * Get a service instance.\n * @param name The name of the service to get.\n * @returns An instance of the service.\n */\n public static get(name: string): T {\n if (!this._instances[name] && this._services[name]) {\n this._instances[name] = this._services[name](name);\n }\n return this._instances[name] as T;\n }\n}\n","/**\n * Class to manage event aggregation.\n */\nexport class EventAggregator {\n /**\n * The stored subscriptions.\n */\n private static readonly _subscriptions: {\n [eventName: string]: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [subscriberId: string]: (data: any) => void;\n };\n } = {};\n\n /**\n * Subscribe to an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n * @param handler The handle to call on a publish.\n */\n public static subscribe(\n eventName: string,\n subscriberId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (data: any) => void | Promise): void {\n EventAggregator._subscriptions[eventName] ||= {};\n EventAggregator._subscriptions[eventName][subscriberId] = handler;\n }\n\n /**\n * Unsubscribe from an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n */\n public static unsubscribe(eventName: string, subscriberId: string): void {\n if (EventAggregator._subscriptions[eventName]) {\n delete EventAggregator._subscriptions[eventName][subscriberId];\n }\n }\n\n /**\n * Publish the event.\n * @param eventName The name of the event to publish.\n * @param data The data to publish with the event.\n */\n public static publish(eventName: string, data?: unknown): void {\n setTimeout(\n () => {\n if (EventAggregator._subscriptions[eventName]) {\n for (const subscriberId in EventAggregator._subscriptions[eventName]) {\n EventAggregator._subscriptions[eventName][subscriberId](data);\n }\n }\n },\n 0);\n }\n}\n","/* eslint-disable @typescript-eslint/no-require-imports */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { IBrandConfiguration } from \"../models/IBrandConfiguration\";\n\nexport class BrandHelper {\n /**\n * The brand id from the environment.\n */\n private static readonly _brandId?: string = process.env.REACT_APP_BRAND_ID;\n\n /**\n * The brand configuration.\n */\n private static _brandConfiguration: IBrandConfiguration;\n\n /**\n * Initialize the branding.\n * @returns The brand configuration.\n */\n public static initialize(): IBrandConfiguration | undefined {\n if (BrandHelper._brandId) {\n BrandHelper._brandConfiguration = require(`../assets/${BrandHelper._brandId}/brand.json`);\n document.title = `${BrandHelper._brandConfiguration.name} Dashboard`;\n\n return BrandHelper._brandConfiguration;\n }\n }\n\n /**\n * Get the configuration.\n * @returns The configuration.\n */\n public static getConfiguration(): IBrandConfiguration {\n return BrandHelper._brandConfiguration;\n }\n\n /**\n * Get the logo for the navigation panel.\n * @param theme The current theme.\n * @returns The navigation panel logo.\n */\n public static async getLogoNavigation(theme: string): Promise {\n const logo = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/logo-navigation.svg`);\n return logo.default;\n }\n\n /**\n * Get the logo for the home page banner.\n * @param theme The current theme.\n * @returns The banner panel logo.\n */\n public static async getBanner(theme: string): Promise {\n const banner = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/banner.svg`);\n return banner.default;\n }\n}\n","import { Component } from \"react\";\n\n/**\n * Base component for component with async requests.\n */\nclass AsyncComponent extends Component {\n /**\n * Is the component mounted.\n */\n protected _isMounted?: boolean;\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._isMounted = true;\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n this._isMounted = false;\n }\n\n /**\n * Set the state if the component is still mounted.\n * @param state The state to set.\n * @param callback The callback for the setState.\n */\n public setState(\n state: ((prevState: Readonly, props: Readonly

) => (Pick | S | null)) | (Pick | S | null),\n callback?: () => void\n ): void {\n if (this._isMounted) {\n super.setState(state, callback);\n }\n }\n}\n\nexport default AsyncComponent;\n","import { Component, ReactNode } from \"react\";\nimport { BreakpointProps } from \"./BreakpointProps\";\nimport { BreakpointState } from \"./BreakpointState\";\n\n/**\n * Component to show/hide children based on media size breakpoints.\n */\nclass Breakpoint extends Component {\n /**\n * The size for the breakpoints.\n */\n private static readonly SIZE_BREAKPOINTS = {\n \"phone\": 480,\n \"tablet\": 768,\n \"desktop\": 1024\n };\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Breakpoint.\n * @param props The props.\n */\n constructor(props: BreakpointProps) {\n super(props);\n\n this._resize = () => this.resize();\n\n this.state = {\n isVisible: this.calculateVisible()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return this.state.isVisible\n ? this.props.children\n : null;\n }\n\n /**\n * Handle the window resize.\n */\n private resize(): void {\n const isVisible = this.calculateVisible();\n\n this.setState({\n isVisible\n });\n }\n\n /**\n * Calculate if the child components should be visible.\n * @returns True if the children should be visible.\n */\n private calculateVisible(): boolean {\n const windowSize = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n return this.props.aboveBelow === \"above\"\n ? windowSize >= Breakpoint.SIZE_BREAKPOINTS[this.props.size]\n : windowSize < Breakpoint.SIZE_BREAKPOINTS[this.props.size];\n }\n}\n\nexport default Breakpoint;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/* eslint-disable array-bracket-newline */\n/**\n * Class to help with Bech32 encoding/decoding.\n * Based on reference implementation https://github.com/sipa/bech32/blob/master/ref/javascript/bech32.js.\n */\nexport class Bech32 {\n /**\n * Encode the buffer.\n * @param humanReadablePart The header.\n * @param data The data to encode.\n * @returns The encoded data.\n */\n static encode(humanReadablePart, data) {\n return Bech32.encode5BitArray(humanReadablePart, Bech32.to5Bit(data));\n }\n /**\n * Encode the 5 bit data buffer.\n * @param humanReadablePart The header.\n * @param data5Bit The data to encode.\n * @returns The encoded data.\n */\n static encode5BitArray(humanReadablePart, data5Bit) {\n const checksum = Bech32.createChecksum(humanReadablePart, data5Bit);\n let ret = `${humanReadablePart}${Bech32.SEPARATOR}`;\n for (let i = 0; i < data5Bit.length; i++) {\n ret += Bech32.CHARSET.charAt(data5Bit[i]);\n }\n for (let i = 0; i < checksum.length; i++) {\n ret += Bech32.CHARSET.charAt(checksum[i]);\n }\n return ret;\n }\n /**\n * Decode a bech32 string.\n * @param bech The text to decode.\n * @returns The decoded data or undefined if it could not be decoded.\n */\n static decode(bech) {\n const result = Bech32.decodeTo5BitArray(bech);\n return result\n ? {\n humanReadablePart: result.humanReadablePart,\n data: Bech32.from5Bit(result.data)\n }\n : undefined;\n }\n /**\n * Decode a bech32 string to 5 bit array.\n * @param bech The text to decode.\n * @returns The decoded data or undefined if it could not be decoded.\n */\n static decodeTo5BitArray(bech) {\n bech = bech.toLowerCase();\n const separatorPos = bech.lastIndexOf(Bech32.SEPARATOR);\n if (separatorPos === -1) {\n throw new Error(`There is no separator character ${Bech32.SEPARATOR} in the data`);\n }\n if (separatorPos < 1) {\n throw new Error(`The separator position is ${separatorPos}, which is too early in the string`);\n }\n if (separatorPos + 7 > bech.length) {\n throw new Error(`The separator position is ${separatorPos}, which doesn't leave enough space for data`);\n }\n const data = new Uint8Array(bech.length - separatorPos - 1);\n let idx = 0;\n for (let i = separatorPos + 1; i < bech.length; i++) {\n const d = Bech32.CHARSET.indexOf(bech.charAt(i));\n if (d === -1) {\n throw new Error(`Data contains characters not in the charset ${bech.charAt(i)}`);\n }\n data[idx++] = Bech32.CHARSET.indexOf(bech.charAt(i));\n }\n const humanReadablePart = bech.slice(0, separatorPos);\n if (!Bech32.verifyChecksum(humanReadablePart, data)) {\n return;\n }\n return { humanReadablePart, data: data.slice(0, -6) };\n }\n /**\n * Convert the input bytes into 5 bit data.\n * @param bytes The bytes to convert.\n * @returns The data in 5 bit form.\n */\n static to5Bit(bytes) {\n return Bech32.convertBits(bytes, 8, 5, true);\n }\n /**\n * Convert the 5 bit data to 8 bit.\n * @param fiveBit The 5 bit data to convert.\n * @returns The 5 bit data converted to 8 bit.\n */\n static from5Bit(fiveBit) {\n return Bech32.convertBits(fiveBit, 5, 8, false);\n }\n /**\n * Does the given string match the bech32 pattern.\n * @param humanReadablePart The human readable part.\n * @param bech32Text The text to test.\n * @returns True if this is potentially a match.\n */\n static matches(humanReadablePart, bech32Text) {\n if (!bech32Text) {\n return false;\n }\n const regEx = new RegExp(`^${humanReadablePart}1[${Bech32.CHARSET}]{6,}$`);\n return regEx.test(bech32Text);\n }\n /**\n * Create the checksum from the human redable part and the data.\n * @param humanReadablePart The human readable part.\n * @param data The data.\n * @returns The checksum.\n * @internal\n */\n static createChecksum(humanReadablePart, data) {\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\n const values = new Uint8Array(expanded.length + data.length + 6);\n values.set(expanded, 0);\n values.set(data, expanded.length);\n values.set([0, 0, 0, 0, 0, 0], expanded.length + data.length);\n const mod = Bech32.polymod(values) ^ 1;\n const ret = new Uint8Array(6);\n for (let i = 0; i < 6; i++) {\n ret[i] = (mod >> (5 * (5 - i))) & 31;\n }\n return ret;\n }\n /**\n * Verify the checksum given the humarn readable part and data.\n * @param humanReadablePart The human redable part to validate the checksum.\n * @param data The data to validate the checksum.\n * @returns True if the checksum was verified.\n * @internal\n */\n static verifyChecksum(humanReadablePart, data) {\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\n const values = new Uint8Array(expanded.length + data.length);\n values.set(expanded, 0);\n values.set(data, expanded.length);\n return Bech32.polymod(values) === 1;\n }\n /**\n * Calculate the polymod of the values.\n * @param values The values to calculate the polymod for.\n * @returns The polymod of the values.\n * @internal\n */\n static polymod(values) {\n let chk = 1;\n for (let p = 0; p < values.length; p++) {\n const top = chk >> 25;\n chk = ((chk & 0x1ffffff) << 5) ^ values[p];\n for (let i = 0; i < 5; ++i) {\n if ((top >> i) & 1) {\n chk ^= Bech32.GENERATOR[i];\n }\n }\n }\n return chk;\n }\n /**\n * Expand the human readable part.\n * @param humanReadablePart The human readable part to expand.\n * @returns The expanded human readable part.\n * @internal\n */\n static humanReadablePartExpand(humanReadablePart) {\n const ret = new Uint8Array(humanReadablePart.length * 2 + 1);\n let idx = 0;\n for (let i = 0; i < humanReadablePart.length; i++) {\n ret[idx++] = humanReadablePart.charCodeAt(i) >> 5;\n }\n ret[idx++] = 0;\n for (let i = 0; i < humanReadablePart.length; i++) {\n ret[idx++] = humanReadablePart.charCodeAt(i) & 31;\n }\n return ret;\n }\n /**\n * Convert input data from one bit resolution to another.\n * @param data The data to convert.\n * @param fromBits The resolution of the input data.\n * @param toBits The required resolution of the output data.\n * @param padding Include padding in the output.\n * @returns The converted data,\n * @internal\n */\n static convertBits(data, fromBits, toBits, padding) {\n let value = 0;\n let bits = 0;\n const maxV = (1 << toBits) - 1;\n const res = [];\n for (let i = 0; i < data.length; i++) {\n value = (value << fromBits) | data[i];\n bits += fromBits;\n while (bits >= toBits) {\n bits -= toBits;\n res.push((value >> bits) & maxV);\n }\n }\n if (padding) {\n if (bits > 0) {\n res.push((value << (toBits - bits)) & maxV);\n }\n }\n else {\n if (bits >= fromBits) {\n throw new Error(\"Excess padding\");\n }\n if ((value << (toBits - bits)) & maxV) {\n throw new Error(\"Non-zero padding\");\n }\n }\n return new Uint8Array(res);\n }\n}\n/**\n * The alphabet to use.\n * @internal\n */\nBech32.CHARSET = \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\";\n/**\n * The separator between human readable part and data.\n * @internal\n */\nBech32.SEPARATOR = \"1\";\n/**\n * The generator constants;\n * @internal\n */\nBech32.GENERATOR = Uint32Array.from([\n 0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3\n]);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * Class implements the b1t6 encoding encoding which uses a group of 6 trits to encode each byte.\n */\nexport class B1T6 {\n /**\n * The encoded length of the data.\n * @param data The data.\n * @returns The encoded length.\n */\n static encodedLen(data) {\n return data.length * B1T6.TRITS_PER_TRYTE;\n }\n /**\n * Encode a byte array into trits.\n * @param dst The destination array.\n * @param startIndex The start index to write in the array.\n * @param src The source data.\n * @returns The length of the encode.\n */\n static encode(dst, startIndex, src) {\n let j = 0;\n for (let i = 0; i < src.length; i++) {\n // Convert to signed 8 bit value\n const v = ((src[i] << 24) >> 24) + 364;\n const rem = Math.trunc(v % 27);\n const quo = Math.trunc(v / 27);\n dst[startIndex + j] = B1T6.TRYTE_VALUE_TO_TRITS[rem][0];\n dst[startIndex + j + 1] = B1T6.TRYTE_VALUE_TO_TRITS[rem][1];\n dst[startIndex + j + 2] = B1T6.TRYTE_VALUE_TO_TRITS[rem][2];\n dst[startIndex + j + 3] = B1T6.TRYTE_VALUE_TO_TRITS[quo][0];\n dst[startIndex + j + 4] = B1T6.TRYTE_VALUE_TO_TRITS[quo][1];\n dst[startIndex + j + 5] = B1T6.TRYTE_VALUE_TO_TRITS[quo][2];\n j += 6;\n }\n return j;\n }\n}\n/**\n * Trytes to trits lookup table.\n * @internal\n */\nB1T6.TRYTE_VALUE_TO_TRITS = [\n [-1, -1, -1],\n [0, -1, -1],\n [1, -1, -1],\n [-1, 0, -1],\n [0, 0, -1],\n [1, 0, -1],\n [-1, 1, -1],\n [0, 1, -1],\n [1, 1, -1],\n [-1, -1, 0],\n [0, -1, 0],\n [1, -1, 0],\n [-1, 0, 0],\n [0, 0, 0],\n [1, 0, 0],\n [-1, 1, 0],\n [0, 1, 0],\n [1, 1, 0],\n [-1, -1, 1],\n [0, -1, 1],\n [1, -1, 1],\n [-1, 0, 1],\n [0, 0, 1],\n [1, 0, 1],\n [-1, 1, 1],\n [0, 1, 1],\n [1, 1, 1]\n];\n/**\n * Trites per tryte.\n * @internal\n */\nB1T6.TRITS_PER_TRYTE = 3;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/**\n * Class to help with Blake2B Signature scheme.\n * TypeScript conversion from https://github.com/dcposch/blakejs.\n */\nexport class Blake2b {\n /**\n * Create a new instance of Blake2b.\n * @param outlen Output length between 1 and 64 bytes.\n * @param key Optional key.\n */\n constructor(outlen, key) {\n this._v = new Uint32Array(32);\n this._m = new Uint32Array(32);\n this._context = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0,\n c: 0,\n outlen // output length in bytes\n };\n this.init(outlen, key);\n }\n /**\n * Perform Sum 160 on the data.\n * @param data The data to operate on.\n * @param key Optional key for the hash.\n * @returns The sum 160 of the data.\n */\n static sum160(data, key) {\n const b2b = new Blake2b(Blake2b.SIZE_160, key);\n b2b.update(data);\n return b2b.final();\n }\n /**\n * Perform Sum 256 on the data.\n * @param data The data to operate on.\n * @param key Optional key for the hash.\n * @returns The sum 256 of the data.\n */\n static sum256(data, key) {\n const b2b = new Blake2b(Blake2b.SIZE_256, key);\n b2b.update(data);\n return b2b.final();\n }\n /**\n * Perform Sum 512 on the data.\n * @param data The data to operate on.\n * @param key Optional key for the hash.\n * @returns The sum 512 of the data.\n */\n static sum512(data, key) {\n const b2b = new Blake2b(Blake2b.SIZE_512, key);\n b2b.update(data);\n return b2b.final();\n }\n /**\n * Updates a BLAKE2b streaming hash.\n * @param input The data to hash.\n */\n update(input) {\n for (let i = 0; i < input.length; i++) {\n if (this._context.c === 128) {\n // buffer full ?\n this._context.t += this._context.c; // add counters\n this.compress(false); // compress (not last)\n this._context.c = 0; // counter to zero\n }\n this._context.b[this._context.c++] = input[i];\n }\n }\n /**\n * Completes a BLAKE2b streaming hash.\n * @returns The final data.\n */\n final() {\n this._context.t += this._context.c; // mark last block offset\n while (this._context.c < 128) {\n // fill up with zeros\n this._context.b[this._context.c++] = 0;\n }\n this.compress(true); // final block flag = 1\n // little endian convert and store\n const out = new Uint8Array(this._context.outlen);\n for (let i = 0; i < this._context.outlen; i++) {\n out[i] = this._context.h[i >> 2] >> (8 * (i & 3));\n }\n return out;\n }\n /**\n * Creates a BLAKE2b hashing context.\n * @param outlen Output length between 1 and 64 bytes.\n * @param key Optional key.\n */\n init(outlen, key) {\n if (outlen <= 0 || outlen > 64) {\n throw new Error(\"Illegal output length, expected 0 < length <= 64\");\n }\n if (key && key.length > 64) {\n throw new Error(\"Illegal key, expected Uint8Array with 0 < length <= 64\");\n }\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n this._context.h[i] = Blake2b.BLAKE2B_IV32[i];\n }\n const keylen = key ? key.length : 0;\n this._context.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen;\n // key the hash, if applicable\n if (key) {\n this.update(key);\n // at the end\n this._context.c = 128;\n }\n }\n /**\n * Compression.\n * Note we're representing 16 uint64s as 32 uint32s\n * @param last Is this the last block.\n * @internal\n */\n compress(last) {\n let i = 0;\n // init work variables\n for (i = 0; i < 16; i++) {\n this._v[i] = this._context.h[i];\n this._v[i + 16] = Blake2b.BLAKE2B_IV32[i];\n }\n // low 64 bits of offset\n this._v[24] ^= this._context.t;\n this._v[25] ^= this._context.t / 0x100000000;\n // high 64 bits not supported, offset may not be higher than 2**53-1\n // last block flag set ?\n if (last) {\n this._v[28] = ~this._v[28];\n this._v[29] = ~this._v[29];\n }\n // get little-endian words\n for (i = 0; i < 32; i++) {\n this._m[i] = this.b2bGet32(this._context.b, 4 * i);\n }\n // twelve rounds of mixing\n for (i = 0; i < 12; i++) {\n this.b2bG(0, 8, 16, 24, Blake2b.SIGMA82[i * 16 + 0], Blake2b.SIGMA82[i * 16 + 1]);\n this.b2bG(2, 10, 18, 26, Blake2b.SIGMA82[i * 16 + 2], Blake2b.SIGMA82[i * 16 + 3]);\n this.b2bG(4, 12, 20, 28, Blake2b.SIGMA82[i * 16 + 4], Blake2b.SIGMA82[i * 16 + 5]);\n this.b2bG(6, 14, 22, 30, Blake2b.SIGMA82[i * 16 + 6], Blake2b.SIGMA82[i * 16 + 7]);\n this.b2bG(0, 10, 20, 30, Blake2b.SIGMA82[i * 16 + 8], Blake2b.SIGMA82[i * 16 + 9]);\n this.b2bG(2, 12, 22, 24, Blake2b.SIGMA82[i * 16 + 10], Blake2b.SIGMA82[i * 16 + 11]);\n this.b2bG(4, 14, 16, 26, Blake2b.SIGMA82[i * 16 + 12], Blake2b.SIGMA82[i * 16 + 13]);\n this.b2bG(6, 8, 18, 28, Blake2b.SIGMA82[i * 16 + 14], Blake2b.SIGMA82[i * 16 + 15]);\n }\n for (i = 0; i < 16; i++) {\n this._context.h[i] = this._context.h[i] ^ this._v[i] ^ this._v[i + 16];\n }\n }\n /**\n * 64-bit unsigned addition\n * Sets v[a,a+1] += v[b,b+1]\n * @param v The array.\n * @param a The a index.\n * @param b The b index.\n * @internal\n */\n add64AA(v, a, b) {\n const o0 = v[a] + v[b];\n let o1 = v[a + 1] + v[b + 1];\n if (o0 >= 0x100000000) {\n o1++;\n }\n v[a] = o0;\n v[a + 1] = o1;\n }\n /**\n * 64-bit unsigned addition.\n * Sets v[a,a+1] += b.\n * @param v The array of data to work on.\n * @param a The index to use.\n * @param b0 Is the low 32 bits.\n * @param b1 Represents the high 32 bits.\n * @internal\n */\n add64AC(v, a, b0, b1) {\n let o0 = v[a] + b0;\n if (b0 < 0) {\n o0 += 0x100000000;\n }\n let o1 = v[a + 1] + b1;\n if (o0 >= 0x100000000) {\n o1++;\n }\n v[a] = o0;\n v[a + 1] = o1;\n }\n /**\n * Little endian read byte 32;\n * @param arr The array to read from .\n * @param i The index to start reading from.\n * @returns The value.\n * @internal\n */\n b2bGet32(arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24);\n }\n /**\n * G Mixing function.\n * The ROTRs are inlined for speed.\n * @param a The a value.\n * @param b The b value.\n * @param c The c value.\n * @param d The d value.\n * @param ix The ix value.\n * @param iy The iy value.\n * @internal\n */\n b2bG(a, b, c, d, ix, iy) {\n const x0 = this._m[ix];\n const x1 = this._m[ix + 1];\n const y0 = this._m[iy];\n const y1 = this._m[iy + 1];\n this.add64AA(this._v, a, b); // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n this.add64AC(this._v, a, x0, x1); // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = this._v[d] ^ this._v[a];\n let xor1 = this._v[d + 1] ^ this._v[a + 1];\n this._v[d] = xor1;\n this._v[d + 1] = xor0;\n this.add64AA(this._v, c, d);\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = this._v[b] ^ this._v[c];\n xor1 = this._v[b + 1] ^ this._v[c + 1];\n this._v[b] = (xor0 >>> 24) ^ (xor1 << 8);\n this._v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8);\n this.add64AA(this._v, a, b);\n this.add64AC(this._v, a, y0, y1);\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = this._v[d] ^ this._v[a];\n xor1 = this._v[d + 1] ^ this._v[a + 1];\n this._v[d] = (xor0 >>> 16) ^ (xor1 << 16);\n this._v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16);\n this.add64AA(this._v, c, d);\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = this._v[b] ^ this._v[c];\n xor1 = this._v[b + 1] ^ this._v[c + 1];\n this._v[b] = (xor1 >>> 31) ^ (xor0 << 1);\n this._v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1);\n }\n}\n/**\n * Blake2b 160.\n */\nBlake2b.SIZE_160 = 20;\n/**\n * Blake2b 256.\n */\nBlake2b.SIZE_256 = 32;\n/**\n * Blake2b 512.\n */\nBlake2b.SIZE_512 = 64;\n/**\n * Initialization Vector.\n * @internal\n */\nBlake2b.BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a, 0xade682d1,\n 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\n]);\n/**\n * Initialization Vector.\n * @internal\n */\nBlake2b.SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, 11,\n 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5,\n 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, 12, 5, 1, 15,\n 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11,\n 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0, 1, 2, 3, 4, 5, 6,\n 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n];\n/**\n * These are offsets into a uint64 buffer.\n * Multiply them all by 2 to make them offsets into a uint32 buffer,\n * because this is Javascript and we don't have uint64s\n * @internal\n */\nBlake2b.SIGMA82 = new Uint8Array(Blake2b.SIGMA8.map(x => x * 2));\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * Class to implement Curl sponge.\n */\nexport class Curl {\n /**\n * Create a new instance of Curl.\n * @param rounds The number of rounds to perform.\n */\n constructor(rounds = Curl.NUMBER_OF_ROUNDS) {\n if (rounds !== 27 && rounds !== 81) {\n throw new Error(\"Illegal number of rounds. Only `27` and `81` rounds are supported.\");\n }\n this._state = new Int8Array(Curl.STATE_LENGTH);\n this._rounds = rounds;\n }\n /**\n * Sponge transform function.\n * @param curlState The curl state to transform.\n * @param rounds The number of rounds to use.\n */\n static transform(curlState, rounds) {\n let stateCopy;\n let index = 0;\n for (let round = 0; round < rounds; round++) {\n stateCopy = curlState.slice();\n for (let i = 0; i < Curl.STATE_LENGTH; i++) {\n const lastVal = stateCopy[index];\n if (index < 365) {\n index += 364;\n }\n else {\n index -= 365;\n }\n const nextVal = stateCopy[index] << 2;\n curlState[i] = Curl.TRUTH_TABLE[lastVal + nextVal + 5];\n }\n }\n }\n /**\n * Resets the state.\n */\n reset() {\n this._state = new Int8Array(Curl.STATE_LENGTH);\n }\n /**\n * Get the state of the sponge.\n * @param len The length of the state to get.\n * @returns The state.\n */\n rate(len = Curl.HASH_LENGTH) {\n return this._state.slice(0, len);\n }\n /**\n * Absorbs trits given an offset and length.\n * @param trits The trits to absorb.\n * @param offset The offset to start abororbing from the array.\n * @param length The length of trits to absorb.\n */\n absorb(trits, offset, length) {\n do {\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\n this._state.set(trits.subarray(offset, offset + limit));\n Curl.transform(this._state, this._rounds);\n length -= Curl.HASH_LENGTH;\n offset += limit;\n } while (length > 0);\n }\n /**\n * Squeezes trits given an offset and length.\n * @param trits The trits to squeeze.\n * @param offset The offset to start squeezing from the array.\n * @param length The length of trits to squeeze.\n */\n squeeze(trits, offset, length) {\n do {\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\n trits.set(this._state.subarray(0, limit), offset);\n Curl.transform(this._state, this._rounds);\n length -= Curl.HASH_LENGTH;\n offset += limit;\n } while (length > 0);\n }\n}\n/**\n * The Hash Length.\n */\nCurl.HASH_LENGTH = 243;\n/**\n * The State Length.\n */\nCurl.STATE_LENGTH = 3 * Curl.HASH_LENGTH;\n/**\n * The default number of rounds.\n * @internal\n */\nCurl.NUMBER_OF_ROUNDS = 81;\n/**\n * Truth Table.\n * @internal\n */\nCurl.TRUTH_TABLE = [1, 0, -1, 2, 1, -1, 0, 2, -1, 1, 0];\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * Class to help with Sha1 scheme.\n * TypeScript conversion from https://github.com/emn178/js-sha1.\n * Although this algorithm should not be use in most cases, it is the\n * default and most widely support for generating TOTP/HOTP codes.\n */\nexport class Sha1 {\n /**\n * Create a new instance of Sha1.\n */\n constructor() {\n /**\n * Blocks.\n * @internal\n */\n this.blocks = [];\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this.h0 = 0x67452301;\n this.h1 = 0xefcdab89;\n this.h2 = 0x98badcfe;\n this.h3 = 0x10325476;\n this.h4 = 0xc3d2e1f0;\n this.block = 0;\n this.start = 0;\n this.bytes = 0;\n this.hBytes = 0;\n this.lastByteIndex = 0;\n this.finalized = false;\n this.hashed = false;\n this.first = true;\n }\n /**\n * Perform Sum on the data.\n * @param data The data to operate on.\n * @returns The sum of the data.\n */\n static sum(data) {\n const b2b = new Sha1();\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Update the hash with the data.\n * @param message The data to update the hash with.\n * @returns The instance for chaining.\n * @throws Error if the hash has already been finalized.\n */\n update(message) {\n if (this.finalized) {\n throw new Error(\"The hash has already been finalized.\");\n }\n let index = 0;\n let i;\n const length = message.length;\n const blocks = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n }\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << Sha1._SHIFT[i++ & 3];\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n }\n else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += Math.trunc(this.bytes / 4294967296);\n this.bytes %= 4294967296;\n }\n return this;\n }\n /**\n * Get the digest.\n * @returns The digest.\n */\n digest() {\n this.finalize();\n const h0 = this.h0;\n const h1 = this.h1;\n const h2 = this.h2;\n const h3 = this.h3;\n const h4 = this.h4;\n return Uint8Array.from([\n (h0 >> 24) & 0xff,\n (h0 >> 16) & 0xff,\n (h0 >> 8) & 0xff,\n h0 & 0xff,\n (h1 >> 24) & 0xff,\n (h1 >> 16) & 0xff,\n (h1 >> 8) & 0xff,\n h1 & 0xff,\n (h2 >> 24) & 0xff,\n (h2 >> 16) & 0xff,\n (h2 >> 8) & 0xff,\n h2 & 0xff,\n (h3 >> 24) & 0xff,\n (h3 >> 16) & 0xff,\n (h3 >> 8) & 0xff,\n h3 & 0xff,\n (h4 >> 24) & 0xff,\n (h4 >> 16) & 0xff,\n (h4 >> 8) & 0xff,\n h4 & 0xff\n ]);\n }\n /**\n * Finalize the hash.\n * @internal\n */\n finalize() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n const blocks = this.blocks;\n const i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= Sha1._EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n }\n blocks[14] = (this.hBytes << 3) | (this.bytes >>> 29);\n blocks[15] = this.bytes << 3;\n this.hash();\n }\n /**\n * Perform the hash.\n * @internal\n */\n hash() {\n let a = this.h0;\n let b = this.h1;\n let c = this.h2;\n let d = this.h3;\n let e = this.h4;\n let f;\n let j;\n let t;\n const blocks = this.blocks;\n for (j = 16; j < 80; ++j) {\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\n blocks[j] = (t << 1) | (t >>> 31);\n }\n for (j = 0; j < 20; j += 5) {\n f = (b & c) | (~b & d);\n t = (a << 5) | (a >>> 27);\n e = Math.trunc(t + f + e + 1518500249 + blocks[j]);\n b = (b << 30) | (b >>> 2);\n f = (a & b) | (~a & c);\n t = (e << 5) | (e >>> 27);\n d = Math.trunc(t + f + d + 1518500249 + blocks[j + 1]);\n a = (a << 30) | (a >>> 2);\n f = (e & a) | (~e & b);\n t = (d << 5) | (d >>> 27);\n c = Math.trunc(t + f + c + 1518500249 + blocks[j + 2]);\n e = (e << 30) | (e >>> 2);\n f = (d & e) | (~d & a);\n t = (c << 5) | (c >>> 27);\n b = Math.trunc(t + f + b + 1518500249 + blocks[j + 3]);\n d = (d << 30) | (d >>> 2);\n f = (c & d) | (~c & e);\n t = (b << 5) | (b >>> 27);\n a = Math.trunc(t + f + a + 1518500249 + blocks[j + 4]);\n c = (c << 30) | (c >>> 2);\n }\n for (; j < 40; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = Math.trunc(t + f + e + 1859775393 + blocks[j]);\n b = (b << 30) | (b >>> 2);\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = Math.trunc(t + f + d + 1859775393 + blocks[j + 1]);\n a = (a << 30) | (a >>> 2);\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = Math.trunc(t + f + c + 1859775393 + blocks[j + 2]);\n e = (e << 30) | (e >>> 2);\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = Math.trunc(t + f + b + 1859775393 + blocks[j + 3]);\n d = (d << 30) | (d >>> 2);\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = Math.trunc(t + f + a + 1859775393 + blocks[j + 4]);\n c = (c << 30) | (c >>> 2);\n }\n for (; j < 60; j += 5) {\n f = (b & c) | (b & d) | (c & d);\n t = (a << 5) | (a >>> 27);\n e = Math.trunc(t + f + e - 1894007588 + blocks[j]);\n b = (b << 30) | (b >>> 2);\n f = (a & b) | (a & c) | (b & c);\n t = (e << 5) | (e >>> 27);\n d = Math.trunc(t + f + d - 1894007588 + blocks[j + 1]);\n a = (a << 30) | (a >>> 2);\n f = (e & a) | (e & b) | (a & b);\n t = (d << 5) | (d >>> 27);\n c = Math.trunc(t + f + c - 1894007588 + blocks[j + 2]);\n e = (e << 30) | (e >>> 2);\n f = (d & e) | (d & a) | (e & a);\n t = (c << 5) | (c >>> 27);\n b = Math.trunc(t + f + b - 1894007588 + blocks[j + 3]);\n d = (d << 30) | (d >>> 2);\n f = (c & d) | (c & e) | (d & e);\n t = (b << 5) | (b >>> 27);\n a = Math.trunc(t + f + a - 1894007588 + blocks[j + 4]);\n c = (c << 30) | (c >>> 2);\n }\n for (; j < 80; j += 5) {\n f = b ^ c ^ d;\n t = (a << 5) | (a >>> 27);\n e = Math.trunc(t + f + e - 899497514 + blocks[j]);\n b = (b << 30) | (b >>> 2);\n f = a ^ b ^ c;\n t = (e << 5) | (e >>> 27);\n d = Math.trunc(t + f + d - 899497514 + blocks[j + 1]);\n a = (a << 30) | (a >>> 2);\n f = e ^ a ^ b;\n t = (d << 5) | (d >>> 27);\n c = Math.trunc(t + f + c - 899497514 + blocks[j + 2]);\n e = (e << 30) | (e >>> 2);\n f = d ^ e ^ a;\n t = (c << 5) | (c >>> 27);\n b = Math.trunc(t + f + b - 899497514 + blocks[j + 3]);\n d = (d << 30) | (d >>> 2);\n f = c ^ d ^ e;\n t = (b << 5) | (b >>> 27);\n a = Math.trunc(t + f + a - 899497514 + blocks[j + 4]);\n c = (c << 30) | (c >>> 2);\n }\n this.h0 = Math.trunc(this.h0 + a);\n this.h1 = Math.trunc(this.h1 + b);\n this.h2 = Math.trunc(this.h2 + c);\n this.h3 = Math.trunc(this.h3 + d);\n this.h4 = Math.trunc(this.h4 + e);\n }\n}\n/**\n * Extra constants.\n * @internal\n */\nSha1._EXTRA = [-2147483648, 8388608, 32768, 128];\n/**\n * Shift constants.\n * @internal\n */\nSha1._SHIFT = [24, 16, 8, 0];\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable unicorn/prefer-math-trunc */\n/**\n * Class to help with Sha256 scheme.\n * TypeScript conversion from https://github.com/emn178/js-sha256.\n */\nexport class Sha256 {\n /**\n * Create a new instance of Sha256.\n * @param bits The number of bits.\n */\n constructor(bits = Sha256.SIZE_256) {\n /**\n * Blocks.\n * @internal\n */\n this._blocks = [];\n if (bits !== Sha256.SIZE_224 && bits !== Sha256.SIZE_256) {\n throw new Error(\"Only 224 or 256 bits are supported\");\n }\n this._blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n if (bits === Sha256.SIZE_224) {\n this._h0 = 0xc1059ed8;\n this._h1 = 0x367cd507;\n this._h2 = 0x3070dd17;\n this._h3 = 0xf70e5939;\n this._h4 = 0xffc00b31;\n this._h5 = 0x68581511;\n this._h6 = 0x64f98fa7;\n this._h7 = 0xbefa4fa4;\n }\n else {\n this._h0 = 0x6a09e667;\n this._h1 = 0xbb67ae85;\n this._h2 = 0x3c6ef372;\n this._h3 = 0xa54ff53a;\n this._h4 = 0x510e527f;\n this._h5 = 0x9b05688c;\n this._h6 = 0x1f83d9ab;\n this._h7 = 0x5be0cd19;\n }\n this._bits = bits;\n this._block = 0;\n this._start = 0;\n this._bytes = 0;\n this._hBytes = 0;\n this._lastByteIndex = 0;\n this._finalized = false;\n this._hashed = false;\n this._first = true;\n }\n /**\n * Perform Sum 256 on the data.\n * @param data The data to operate on.\n * @returns The sum 256 of the data.\n */\n static sum256(data) {\n const b2b = new Sha256(Sha256.SIZE_256);\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Perform Sum 224 on the data.\n * @param data The data to operate on.\n * @returns The sum 224 of the data.\n */\n static sum224(data) {\n const b2b = new Sha256(Sha256.SIZE_224);\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Update the hash with the data.\n * @param message The data to update the hash with.\n * @returns The instance for chaining.\n */\n update(message) {\n if (this._finalized) {\n throw new Error(\"The hash has already been finalized.\");\n }\n let index = 0;\n let i;\n const length = message.length;\n const blocks = this._blocks;\n while (index < length) {\n if (this._hashed) {\n this._hashed = false;\n blocks[0] = this._block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n }\n for (i = this._start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << Sha256.SHIFT[i++ & 3];\n }\n this._lastByteIndex = i;\n this._bytes += i - this._start;\n if (i >= 64) {\n this._block = blocks[16];\n this._start = i - 64;\n this.hash();\n this._hashed = true;\n }\n else {\n this._start = i;\n }\n }\n if (this._bytes > 4294967295) {\n this._hBytes += Math.trunc(this._bytes / 4294967296);\n this._bytes %= 4294967296;\n }\n return this;\n }\n /**\n * Get the digest.\n * @returns The digest.\n */\n digest() {\n this.finalize();\n const h0 = this._h0;\n const h1 = this._h1;\n const h2 = this._h2;\n const h3 = this._h3;\n const h4 = this._h4;\n const h5 = this._h5;\n const h6 = this._h6;\n const h7 = this._h7;\n const arr = [\n (h0 >> 24) & 0xff,\n (h0 >> 16) & 0xff,\n (h0 >> 8) & 0xff,\n h0 & 0xff,\n (h1 >> 24) & 0xff,\n (h1 >> 16) & 0xff,\n (h1 >> 8) & 0xff,\n h1 & 0xff,\n (h2 >> 24) & 0xff,\n (h2 >> 16) & 0xff,\n (h2 >> 8) & 0xff,\n h2 & 0xff,\n (h3 >> 24) & 0xff,\n (h3 >> 16) & 0xff,\n (h3 >> 8) & 0xff,\n h3 & 0xff,\n (h4 >> 24) & 0xff,\n (h4 >> 16) & 0xff,\n (h4 >> 8) & 0xff,\n h4 & 0xff,\n (h5 >> 24) & 0xff,\n (h5 >> 16) & 0xff,\n (h5 >> 8) & 0xff,\n h5 & 0xff,\n (h6 >> 24) & 0xff,\n (h6 >> 16) & 0xff,\n (h6 >> 8) & 0xff,\n h6 & 0xff\n ];\n if (this._bits === Sha256.SIZE_256) {\n arr.push((h7 >> 24) & 0xff, (h7 >> 16) & 0xff, (h7 >> 8) & 0xff, h7 & 0xff);\n }\n return Uint8Array.from(arr);\n }\n /**\n * Finalize the hash.\n * @internal\n */\n finalize() {\n if (this._finalized) {\n return;\n }\n this._finalized = true;\n const blocks = this._blocks;\n const i = this._lastByteIndex;\n blocks[16] = this._block;\n blocks[i >> 2] |= Sha256.EXTRA[i & 3];\n this._block = blocks[16];\n if (i >= 56) {\n if (!this._hashed) {\n this.hash();\n }\n blocks[0] = this._block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n }\n blocks[14] = (this._hBytes << 3) | (this._bytes >>> 29);\n blocks[15] = this._bytes << 3;\n this.hash();\n }\n /**\n * Perform the hash.\n * @internal\n */\n hash() {\n let a = this._h0;\n let b = this._h1;\n let c = this._h2;\n let d = this._h3;\n let e = this._h4;\n let f = this._h5;\n let g = this._h6;\n let h = this._h7;\n const blocks = this._blocks;\n let j;\n let s0;\n let s1;\n let maj;\n let t1;\n let t2;\n let ch;\n let ab;\n let da;\n let cd;\n let bc;\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0;\n }\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this._first) {\n if (this._bits === Sha256.SIZE_224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = (t1 - 150054599) << 0;\n d = (t1 + 24177077) << 0;\n }\n else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = (t1 - 1521486534) << 0;\n d = (t1 + 143694565) << 0;\n }\n this._first = false;\n }\n else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + Sha256.K[j] + blocks[j];\n t2 = s0 + maj;\n h = (d + t1) << 0;\n d = (t1 + t2) << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + Sha256.K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = (c + t1) << 0;\n c = (t1 + t2) << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + Sha256.K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = (b + t1) << 0;\n b = (t1 + t2) << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + Sha256.K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = (a + t1) << 0;\n a = (t1 + t2) << 0;\n }\n this._h0 += Math.trunc(a);\n this._h1 += Math.trunc(b);\n this._h2 += Math.trunc(c);\n this._h3 += Math.trunc(d);\n this._h4 += Math.trunc(e);\n this._h5 += Math.trunc(f);\n this._h6 += Math.trunc(g);\n this._h7 += Math.trunc(h);\n }\n}\n/**\n * Sha256 256.\n */\nSha256.SIZE_256 = 256;\n/**\n * Sha256 224.\n */\nSha256.SIZE_224 = 224;\n/**\n * Extra constants.\n * @internal\n */\nSha256.EXTRA = [-2147483648, 8388608, 32768, 128];\n/**\n * Shift constants.\n * @internal\n */\nSha256.SHIFT = [24, 16, 8, 0];\n/**\n * K.\n * @internal\n */\nSha256.K = Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,\n 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,\n 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,\n 0xc67178f2\n]);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable array-bracket-newline */\n/**\n * Class to help with Sha512 scheme\n * TypeScript conversion from https://github.com/emn178/js-sha512.\n */\nexport class Sha512 {\n /**\n * Create a new instance of Sha512.\n * @param bits The number of bits.\n */\n constructor(bits = Sha512.SIZE_512) {\n /**\n * Blocks.\n * @internal\n */\n this._blocks = [];\n if (bits !== Sha512.SIZE_224 &&\n bits !== Sha512.SIZE_256 &&\n bits !== Sha512.SIZE_384 &&\n bits !== Sha512.SIZE_512) {\n throw new Error(\"Only 224, 256, 384 or 512 bits are supported\");\n }\n this._blocks = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n if (bits === Sha512.SIZE_384) {\n this._h0h = 0xcbbb9d5d;\n this._h0l = 0xc1059ed8;\n this._h1h = 0x629a292a;\n this._h1l = 0x367cd507;\n this._h2h = 0x9159015a;\n this._h2l = 0x3070dd17;\n this._h3h = 0x152fecd8;\n this._h3l = 0xf70e5939;\n this._h4h = 0x67332667;\n this._h4l = 0xffc00b31;\n this._h5h = 0x8eb44a87;\n this._h5l = 0x68581511;\n this._h6h = 0xdb0c2e0d;\n this._h6l = 0x64f98fa7;\n this._h7h = 0x47b5481d;\n this._h7l = 0xbefa4fa4;\n }\n else if (bits === Sha512.SIZE_256) {\n this._h0h = 0x22312194;\n this._h0l = 0xfc2bf72c;\n this._h1h = 0x9f555fa3;\n this._h1l = 0xc84c64c2;\n this._h2h = 0x2393b86b;\n this._h2l = 0x6f53b151;\n this._h3h = 0x96387719;\n this._h3l = 0x5940eabd;\n this._h4h = 0x96283ee2;\n this._h4l = 0xa88effe3;\n this._h5h = 0xbe5e1e25;\n this._h5l = 0x53863992;\n this._h6h = 0x2b0199fc;\n this._h6l = 0x2c85b8aa;\n this._h7h = 0x0eb72ddc;\n this._h7l = 0x81c52ca2;\n }\n else if (bits === Sha512.SIZE_224) {\n this._h0h = 0x8c3d37c8;\n this._h0l = 0x19544da2;\n this._h1h = 0x73e19966;\n this._h1l = 0x89dcd4d6;\n this._h2h = 0x1dfab7ae;\n this._h2l = 0x32ff9c82;\n this._h3h = 0x679dd514;\n this._h3l = 0x582f9fcf;\n this._h4h = 0x0f6d2b69;\n this._h4l = 0x7bd44da8;\n this._h5h = 0x77e36f73;\n this._h5l = 0x04c48942;\n this._h6h = 0x3f9d85a8;\n this._h6l = 0x6a1d36c8;\n this._h7h = 0x1112e6ad;\n this._h7l = 0x91d692a1;\n }\n else {\n // 512\n this._h0h = 0x6a09e667;\n this._h0l = 0xf3bcc908;\n this._h1h = 0xbb67ae85;\n this._h1l = 0x84caa73b;\n this._h2h = 0x3c6ef372;\n this._h2l = 0xfe94f82b;\n this._h3h = 0xa54ff53a;\n this._h3l = 0x5f1d36f1;\n this._h4h = 0x510e527f;\n this._h4l = 0xade682d1;\n this._h5h = 0x9b05688c;\n this._h5l = 0x2b3e6c1f;\n this._h6h = 0x1f83d9ab;\n this._h6l = 0xfb41bd6b;\n this._h7h = 0x5be0cd19;\n this._h7l = 0x137e2179;\n }\n this._bits = bits;\n this._block = 0;\n this._start = 0;\n this._bytes = 0;\n this._hBytes = 0;\n this._lastByteIndex = 0;\n this._finalized = false;\n this._hashed = false;\n }\n /**\n * Perform Sum 512 on the data.\n * @param data The data to operate on.\n * @returns The sum 512 of the data.\n */\n static sum512(data) {\n const b2b = new Sha512(Sha512.SIZE_512);\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Update the hash with the data.\n * @param message The data to update the hash with.\n * @returns The instance for chaining.\n */\n update(message) {\n if (this._finalized) {\n throw new Error(\"The hash has already been finalized.\");\n }\n let index = 0;\n let i;\n const length = message.length;\n const blocks = this._blocks;\n while (index < length) {\n if (this._hashed) {\n this._hashed = false;\n blocks[0] = this._block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n blocks[17] = 0;\n blocks[18] = 0;\n blocks[19] = 0;\n blocks[20] = 0;\n blocks[21] = 0;\n blocks[22] = 0;\n blocks[23] = 0;\n blocks[24] = 0;\n blocks[25] = 0;\n blocks[26] = 0;\n blocks[27] = 0;\n blocks[28] = 0;\n blocks[29] = 0;\n blocks[30] = 0;\n blocks[31] = 0;\n blocks[32] = 0;\n }\n for (i = this._start; index < length && i < 128; ++index) {\n blocks[i >> 2] |= message[index] << Sha512.SHIFT[i++ & 3];\n }\n this._lastByteIndex = i;\n this._bytes += i - this._start;\n if (i >= 128) {\n this._block = blocks[32];\n this._start = i - 128;\n this.hash();\n this._hashed = true;\n }\n else {\n this._start = i;\n }\n }\n if (this._bytes > 4294967295) {\n this._hBytes += Math.trunc(this._bytes / 4294967296);\n this._bytes %= 4294967296;\n }\n return this;\n }\n /**\n * Get the digest.\n * @returns The digest.\n */\n digest() {\n this.finalize();\n const h0h = this._h0h;\n const h0l = this._h0l;\n const h1h = this._h1h;\n const h1l = this._h1l;\n const h2h = this._h2h;\n const h2l = this._h2l;\n const h3h = this._h3h;\n const h3l = this._h3l;\n const h4h = this._h4h;\n const h4l = this._h4l;\n const h5h = this._h5h;\n const h5l = this._h5l;\n const h6h = this._h6h;\n const h6l = this._h6l;\n const h7h = this._h7h;\n const h7l = this._h7l;\n const bits = this._bits;\n const arr = [\n (h0h >> 24) & 0xff,\n (h0h >> 16) & 0xff,\n (h0h >> 8) & 0xff,\n h0h & 0xff,\n (h0l >> 24) & 0xff,\n (h0l >> 16) & 0xff,\n (h0l >> 8) & 0xff,\n h0l & 0xff,\n (h1h >> 24) & 0xff,\n (h1h >> 16) & 0xff,\n (h1h >> 8) & 0xff,\n h1h & 0xff,\n (h1l >> 24) & 0xff,\n (h1l >> 16) & 0xff,\n (h1l >> 8) & 0xff,\n h1l & 0xff,\n (h2h >> 24) & 0xff,\n (h2h >> 16) & 0xff,\n (h2h >> 8) & 0xff,\n h2h & 0xff,\n (h2l >> 24) & 0xff,\n (h2l >> 16) & 0xff,\n (h2l >> 8) & 0xff,\n h2l & 0xff,\n (h3h >> 24) & 0xff,\n (h3h >> 16) & 0xff,\n (h3h >> 8) & 0xff,\n h3h & 0xff\n ];\n if (bits >= Sha512.SIZE_256) {\n arr.push((h3l >> 24) & 0xff, (h3l >> 16) & 0xff, (h3l >> 8) & 0xff, h3l & 0xff);\n }\n if (bits >= Sha512.SIZE_384) {\n arr.push((h4h >> 24) & 0xff, (h4h >> 16) & 0xff, (h4h >> 8) & 0xff, h4h & 0xff, (h4l >> 24) & 0xff, (h4l >> 16) & 0xff, (h4l >> 8) & 0xff, h4l & 0xff, (h5h >> 24) & 0xff, (h5h >> 16) & 0xff, (h5h >> 8) & 0xff, h5h & 0xff, (h5l >> 24) & 0xff, (h5l >> 16) & 0xff, (h5l >> 8) & 0xff, h5l & 0xff);\n }\n if (bits === Sha512.SIZE_512) {\n arr.push((h6h >> 24) & 0xff, (h6h >> 16) & 0xff, (h6h >> 8) & 0xff, h6h & 0xff, (h6l >> 24) & 0xff, (h6l >> 16) & 0xff, (h6l >> 8) & 0xff, h6l & 0xff, (h7h >> 24) & 0xff, (h7h >> 16) & 0xff, (h7h >> 8) & 0xff, h7h & 0xff, (h7l >> 24) & 0xff, (h7l >> 16) & 0xff, (h7l >> 8) & 0xff, h7l & 0xff);\n }\n return Uint8Array.from(arr);\n }\n /**\n * Finalize the hash.\n * @internal\n */\n finalize() {\n if (this._finalized) {\n return;\n }\n this._finalized = true;\n const blocks = this._blocks;\n const i = this._lastByteIndex;\n blocks[32] = this._block;\n blocks[i >> 2] |= Sha512.EXTRA[i & 3];\n this._block = blocks[32];\n if (i >= 112) {\n if (!this._hashed) {\n this.hash();\n }\n blocks[0] = this._block;\n blocks[1] = 0;\n blocks[2] = 0;\n blocks[3] = 0;\n blocks[4] = 0;\n blocks[5] = 0;\n blocks[6] = 0;\n blocks[7] = 0;\n blocks[8] = 0;\n blocks[9] = 0;\n blocks[10] = 0;\n blocks[11] = 0;\n blocks[12] = 0;\n blocks[13] = 0;\n blocks[14] = 0;\n blocks[15] = 0;\n blocks[16] = 0;\n blocks[17] = 0;\n blocks[18] = 0;\n blocks[19] = 0;\n blocks[20] = 0;\n blocks[21] = 0;\n blocks[22] = 0;\n blocks[23] = 0;\n blocks[24] = 0;\n blocks[25] = 0;\n blocks[26] = 0;\n blocks[27] = 0;\n blocks[28] = 0;\n blocks[29] = 0;\n blocks[30] = 0;\n blocks[31] = 0;\n blocks[32] = 0;\n }\n blocks[30] = (this._hBytes << 3) | (this._bytes >>> 29);\n blocks[31] = this._bytes << 3;\n this.hash();\n }\n /**\n * Perform the hash.\n * @internal\n */\n hash() {\n const h0h = this._h0h;\n const h0l = this._h0l;\n const h1h = this._h1h;\n const h1l = this._h1l;\n const h2h = this._h2h;\n const h2l = this._h2l;\n const h3h = this._h3h;\n const h3l = this._h3l;\n const h4h = this._h4h;\n const h4l = this._h4l;\n const h5h = this._h5h;\n const h5l = this._h5l;\n const h6h = this._h6h;\n const h6l = this._h6l;\n const h7h = this._h7h;\n const h7l = this._h7l;\n const blocks = this._blocks;\n let j;\n let s0h;\n let s0l;\n let s1h;\n let s1l;\n let c1;\n let c2;\n let c3;\n let c4;\n let abh;\n let abl;\n let dah;\n let dal;\n let cdh;\n let cdl;\n let bch;\n let bcl;\n let majh;\n let majl;\n let t1h;\n let t1l;\n let t2h;\n let t2l;\n let chh;\n let chl;\n for (j = 32; j < 160; j += 2) {\n t1h = blocks[j - 30];\n t1l = blocks[j - 29];\n s0h = ((t1h >>> 1) | (t1l << 31)) ^ ((t1h >>> 8) | (t1l << 24)) ^ (t1h >>> 7);\n s0l = ((t1l >>> 1) | (t1h << 31)) ^ ((t1l >>> 8) | (t1h << 24)) ^ ((t1l >>> 7) | (t1h << 25));\n t1h = blocks[j - 4];\n t1l = blocks[j - 3];\n s1h = ((t1h >>> 19) | (t1l << 13)) ^ ((t1l >>> 29) | (t1h << 3)) ^ (t1h >>> 6);\n s1l = ((t1l >>> 19) | (t1h << 13)) ^ ((t1h >>> 29) | (t1l << 3)) ^ ((t1l >>> 6) | (t1h << 26));\n t1h = blocks[j - 32];\n t1l = blocks[j - 31];\n t2h = blocks[j - 14];\n t2l = blocks[j - 13];\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (s0l & 0xffff) + (s1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (s0h & 0xffff) + (s1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16);\n blocks[j] = (c4 << 16) | (c3 & 0xffff);\n blocks[j + 1] = (c2 << 16) | (c1 & 0xffff);\n }\n let ah = h0h;\n let al = h0l;\n let bh = h1h;\n let bl = h1l;\n let ch = h2h;\n let cl = h2l;\n let dh = h3h;\n let dl = h3l;\n let eh = h4h;\n let el = h4l;\n let fh = h5h;\n let fl = h5l;\n let gh = h6h;\n let gl = h6l;\n let hh = h7h;\n let hl = h7l;\n bch = bh & ch;\n bcl = bl & cl;\n for (j = 0; j < 160; j += 8) {\n s0h = ((ah >>> 28) | (al << 4)) ^ ((al >>> 2) | (ah << 30)) ^ ((al >>> 7) | (ah << 25));\n s0l = ((al >>> 28) | (ah << 4)) ^ ((ah >>> 2) | (al << 30)) ^ ((ah >>> 7) | (al << 25));\n s1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((el >>> 9) | (eh << 23));\n s1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((eh >>> 9) | (el << 23));\n abh = ah & bh;\n abl = al & bl;\n majh = abh ^ (ah & ch) ^ bch;\n majl = abl ^ (al & cl) ^ bcl;\n chh = (eh & fh) ^ (~eh & gh);\n chl = (el & fl) ^ (~el & gl);\n t1h = blocks[j];\n t1l = blocks[j + 1];\n t2h = Sha512.K[j];\n t2l = Sha512.K[j + 1];\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (hl & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (hl >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (hh >>> 16) + (c3 >>> 16);\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n c1 = (dl & 0xffff) + (t1l & 0xffff);\n c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (dh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n hh = (c4 << 16) | (c3 & 0xffff);\n hl = (c2 << 16) | (c1 & 0xffff);\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n dh = (c4 << 16) | (c3 & 0xffff);\n dl = (c2 << 16) | (c1 & 0xffff);\n s0h = ((dh >>> 28) | (dl << 4)) ^ ((dl >>> 2) | (dh << 30)) ^ ((dl >>> 7) | (dh << 25));\n s0l = ((dl >>> 28) | (dh << 4)) ^ ((dh >>> 2) | (dl << 30)) ^ ((dh >>> 7) | (dl << 25));\n s1h = ((hh >>> 14) | (hl << 18)) ^ ((hh >>> 18) | (hl << 14)) ^ ((hl >>> 9) | (hh << 23));\n s1l = ((hl >>> 14) | (hh << 18)) ^ ((hl >>> 18) | (hh << 14)) ^ ((hh >>> 9) | (hl << 23));\n dah = dh & ah;\n dal = dl & al;\n majh = dah ^ (dh & bh) ^ abh;\n majl = dal ^ (dl & bl) ^ abl;\n chh = (hh & eh) ^ (~hh & fh);\n chl = (hl & el) ^ (~hl & fl);\n t1h = blocks[j + 2];\n t1l = blocks[j + 3];\n t2h = Sha512.K[j + 2];\n t2l = Sha512.K[j + 3];\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (gl & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16);\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n c1 = (cl & 0xffff) + (t1l & 0xffff);\n c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (ch & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n gh = (c4 << 16) | (c3 & 0xffff);\n gl = (c2 << 16) | (c1 & 0xffff);\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n ch = (c4 << 16) | (c3 & 0xffff);\n cl = (c2 << 16) | (c1 & 0xffff);\n s0h = ((ch >>> 28) | (cl << 4)) ^ ((cl >>> 2) | (ch << 30)) ^ ((cl >>> 7) | (ch << 25));\n s0l = ((cl >>> 28) | (ch << 4)) ^ ((ch >>> 2) | (cl << 30)) ^ ((ch >>> 7) | (cl << 25));\n s1h = ((gh >>> 14) | (gl << 18)) ^ ((gh >>> 18) | (gl << 14)) ^ ((gl >>> 9) | (gh << 23));\n s1l = ((gl >>> 14) | (gh << 18)) ^ ((gl >>> 18) | (gh << 14)) ^ ((gh >>> 9) | (gl << 23));\n cdh = ch & dh;\n cdl = cl & dl;\n majh = cdh ^ (ch & ah) ^ dah;\n majl = cdl ^ (cl & al) ^ dal;\n chh = (gh & hh) ^ (~gh & eh);\n chl = (gl & hl) ^ (~gl & el);\n t1h = blocks[j + 4];\n t1l = blocks[j + 5];\n t2h = Sha512.K[j + 4];\n t2l = Sha512.K[j + 5];\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (fl & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16);\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n c1 = (bl & 0xffff) + (t1l & 0xffff);\n c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (bh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n fh = (c4 << 16) | (c3 & 0xffff);\n fl = (c2 << 16) | (c1 & 0xffff);\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n bh = (c4 << 16) | (c3 & 0xffff);\n bl = (c2 << 16) | (c1 & 0xffff);\n s0h = ((bh >>> 28) | (bl << 4)) ^ ((bl >>> 2) | (bh << 30)) ^ ((bl >>> 7) | (bh << 25));\n s0l = ((bl >>> 28) | (bh << 4)) ^ ((bh >>> 2) | (bl << 30)) ^ ((bh >>> 7) | (bl << 25));\n s1h = ((fh >>> 14) | (fl << 18)) ^ ((fh >>> 18) | (fl << 14)) ^ ((fl >>> 9) | (fh << 23));\n s1l = ((fl >>> 14) | (fh << 18)) ^ ((fl >>> 18) | (fh << 14)) ^ ((fh >>> 9) | (fl << 23));\n bch = bh & ch;\n bcl = bl & cl;\n majh = bch ^ (bh & dh) ^ cdh;\n majl = bcl ^ (bl & dl) ^ cdl;\n chh = (fh & gh) ^ (~fh & hh);\n chl = (fl & gl) ^ (~fl & hl);\n t1h = blocks[j + 6];\n t1l = blocks[j + 7];\n t2h = Sha512.K[j + 6];\n t2l = Sha512.K[j + 7];\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (el & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16);\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n c1 = (al & 0xffff) + (t1l & 0xffff);\n c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (ah & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n eh = (c4 << 16) | (c3 & 0xffff);\n el = (c2 << 16) | (c1 & 0xffff);\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n ah = (c4 << 16) | (c3 & 0xffff);\n al = (c2 << 16) | (c1 & 0xffff);\n }\n c1 = (h0l & 0xffff) + (al & 0xffff);\n c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16);\n c3 = (h0h & 0xffff) + (ah & 0xffff) + (c2 >>> 16);\n c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16);\n this._h0h = (c4 << 16) | (c3 & 0xffff);\n this._h0l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h1l & 0xffff) + (bl & 0xffff);\n c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16);\n c3 = (h1h & 0xffff) + (bh & 0xffff) + (c2 >>> 16);\n c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16);\n this._h1h = (c4 << 16) | (c3 & 0xffff);\n this._h1l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h2l & 0xffff) + (cl & 0xffff);\n c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16);\n c3 = (h2h & 0xffff) + (ch & 0xffff) + (c2 >>> 16);\n c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16);\n this._h2h = (c4 << 16) | (c3 & 0xffff);\n this._h2l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h3l & 0xffff) + (dl & 0xffff);\n c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16);\n c3 = (h3h & 0xffff) + (dh & 0xffff) + (c2 >>> 16);\n c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16);\n this._h3h = (c4 << 16) | (c3 & 0xffff);\n this._h3l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h4l & 0xffff) + (el & 0xffff);\n c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16);\n c3 = (h4h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\n c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16);\n this._h4h = (c4 << 16) | (c3 & 0xffff);\n this._h4l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h5l & 0xffff) + (fl & 0xffff);\n c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16);\n c3 = (h5h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\n c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16);\n this._h5h = (c4 << 16) | (c3 & 0xffff);\n this._h5l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h6l & 0xffff) + (gl & 0xffff);\n c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16);\n c3 = (h6h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\n c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16);\n this._h6h = (c4 << 16) | (c3 & 0xffff);\n this._h6l = (c2 << 16) | (c1 & 0xffff);\n c1 = (h7l & 0xffff) + (hl & 0xffff);\n c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16);\n c3 = (h7h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\n c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16);\n this._h7h = (c4 << 16) | (c3 & 0xffff);\n this._h7l = (c2 << 16) | (c1 & 0xffff);\n }\n}\n/**\n * Sha512 224.\n */\nSha512.SIZE_224 = 224;\n/**\n * Sha512 256.\n */\nSha512.SIZE_256 = 256;\n/**\n * Sha512 384.\n */\nSha512.SIZE_384 = 384;\n/**\n * Sha512 512.\n */\nSha512.SIZE_512 = 512;\n/**\n * Extra constants.\n * @internal\n */\nSha512.EXTRA = [-2147483648, 8388608, 32768, 128];\n/**\n * Shift constants.\n * @internal\n */\nSha512.SHIFT = [24, 16, 8, 0];\n/**\n * K.\n * @internal\n */\nSha512.K = Uint32Array.from([\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b,\n 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242,\n 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe,\n 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc,\n 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f,\n 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967,\n 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1,\n 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218,\n 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08,\n 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814,\n 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915,\n 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f,\n 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be,\n 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Class to help with random generation.\n */\nexport class RandomHelper {\n /**\n * Generate a new random array.\n * @param length The length of buffer to create.\n * @returns The random array.\n */\n static generate(length) {\n return RandomHelper.randomPolyfill ? RandomHelper.randomPolyfill(length) : new Uint8Array(length);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { RandomHelper } from \"./utils/randomHelper.mjs\";\n// Random\nif (!RandomHelper.randomPolyfill) {\n RandomHelper.randomPolyfill = length => {\n const randomBytes = new Uint8Array(length);\n window.crypto.getRandomValues(randomBytes);\n return randomBytes;\n };\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * Class to help with base32 Encoding/Decoding using RFC4648.\n */\nexport class Base32 {\n /**\n * Convert the base 32 string to a byte array.\n * @param base32 The base32 string to convert.\n * @returns The byte array.\n * @throws If the input string contains a character not in the Base32 alphabet.\n */\n static decode(base32) {\n let bits = 0;\n let value = 0;\n // eslint-disable-next-line no-div-regex\n base32 = base32.replace(/=+$/, \"\");\n let index = 0;\n const output = new Uint8Array(Math.trunc((base32.length * 5) / 8));\n for (let i = 0; i < base32.length; i++) {\n const idx = Base32._ALPHABET.indexOf(base32[i]);\n if (idx === -1) {\n throw new Error(`\"Invalid character found '${base32[i]}'`);\n }\n value = (value << 5) | idx;\n bits += 5;\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255;\n bits -= 8;\n }\n }\n return output;\n }\n /**\n * Convert a byte array to base 32.\n * @param bytes The byte array to convert.\n * @returns The data as base32 string.\n */\n static encode(bytes) {\n let bits = 0;\n let value = 0;\n let output = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n value = (value << 8) | bytes[i];\n bits += 8;\n while (bits >= 5) {\n output += Base32._ALPHABET[(value >>> (bits - 5)) & 31];\n bits -= 5;\n }\n }\n if (bits > 0) {\n output += Base32._ALPHABET[(value << (5 - bits)) & 31];\n }\n while (output.length % 8 !== 0) {\n output += \"=\";\n }\n return output;\n }\n}\n/**\n * Alphabet table for encoding.\n * @internal\n */\nBase32._ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * Class to help with base58 Encoding/Decoding.\n */\nexport class Base58 {\n /**\n * Convert the base 58 string to a byte array.\n * @param base58 The base58 string to convert.\n * @returns The byte array.\n * @throws If the input string contains a character not in the Base58 alphabet.\n */\n static decode(base58) {\n let zeroes = 0;\n for (let i = 0; i < base58.length; i++) {\n if (base58[i] !== \"1\") {\n break;\n }\n zeroes += 1;\n }\n const size = Math.trunc((base58.length * 733) / 1000) + 1;\n const b256 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\n let length = 0;\n for (let i = zeroes; i < base58.length; i++) {\n const ch = base58.charCodeAt(i);\n if (ch & 0xff80) {\n throw new Error(`\"Invalid character found '${ch}'`);\n }\n const val = Base58._ALPHABET_REVERSE[ch];\n if (val === -1) {\n throw new Error(`\"Invalid character found '${ch}'`);\n }\n let carry = val;\n let j = 0;\n for (let k = size - 1; k >= 0; k--, j++) {\n if (carry === 0 && j >= length) {\n break;\n }\n carry += b256[k] * 58;\n b256[k] = carry;\n carry >>>= 8;\n }\n length = j;\n }\n const out = new Uint8Array(zeroes + length);\n let j;\n for (j = 0; j < zeroes; j++) {\n out[j] = 0;\n }\n let i = size - length;\n while (i < size) {\n out[j++] = b256[i++];\n }\n return out;\n }\n /**\n * Convert a byte array to base 58.\n * @param bytes The byte array to encode.\n * @returns The data as base58 string.\n */\n static encode(bytes) {\n let zeroes = 0;\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i] !== 0) {\n break;\n }\n zeroes += 1;\n }\n const size = Math.trunc(((bytes.length - zeroes) * 138) / 100) + 1;\n const b58 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\n let length = 0;\n for (let i = zeroes; i < bytes.length; i++) {\n let carry = bytes[i];\n let j = 0;\n for (let k = size - 1; k >= 0; k--, j++) {\n if (carry === 0 && j >= length) {\n break;\n }\n carry += b58[k] * 256;\n b58[k] = carry % 58;\n carry = Math.trunc(carry / 58);\n }\n length = j;\n }\n let i = size - length;\n while (i < size && b58[i] === 0) {\n i += 1;\n }\n let str = \"\";\n for (let j = 0; j < zeroes; j++) {\n str += \"1\";\n }\n while (i < size) {\n str += Base58._ALPHABET[b58[i++]];\n }\n return str;\n }\n}\n/**\n * Alphabet table for encoding.\n * @internal\n */\nBase58._ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n/**\n * Reverse map for decoding.\n * @internal\n */\nBase58._ALPHABET_REVERSE = [\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8,\n -1, -1, -1, -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, -1, 17, 18, 19, 20, 21, -1, 22, 23, 24, 25, 26, 27,\n 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, 44, 45, 46, 47, 48,\n 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, -1\n];\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/**\n * Class to help with base64 Encoding/Decoding.\n * Sourced from https://github.com/beatgammit/base64-js.\n */\nexport class Base64 {\n /**\n * Get the byte length of the data.\n * @param base64 The base64 string.\n * @returns The byte length of the data.\n */\n static byteLength(base64) {\n const lens = Base64.getLengths(base64);\n return Base64.calcByteLength(lens[0], lens[1]);\n }\n /**\n * Convert the base 64 string to a byte array.\n * @param base64 The base64 string to convert.\n * @returns The byte array.\n */\n static decode(base64) {\n let tmp;\n const lens = Base64.getLengths(base64);\n const validLen = lens[0];\n const placeHoldersLen = lens[1];\n const arr = new Uint8Array(Base64.calcByteLength(validLen, placeHoldersLen));\n let curByte = 0;\n // if there are placeholders, only get up to the last complete 4 chars\n const len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n let i;\n for (i = 0; i < len; i += 4) {\n tmp =\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 18) |\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 12) |\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] << 6) |\n Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 3)];\n arr[curByte++] = (tmp >> 16) & 0xff;\n arr[curByte++] = (tmp >> 8) & 0xff;\n arr[curByte++] = tmp & 0xff;\n }\n if (placeHoldersLen === 2) {\n tmp =\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 2) |\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] >> 4);\n arr[curByte++] = tmp & 0xff;\n }\n if (placeHoldersLen === 1) {\n tmp =\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 10) |\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 4) |\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] >> 2);\n arr[curByte++] = (tmp >> 8) & 0xff;\n arr[curByte++] = tmp & 0xff;\n }\n return arr;\n }\n /**\n * Convert a byte array to base 64.\n * @param bytes The byte array to convert.\n * @returns The data as bas64 string.\n */\n static encode(bytes) {\n let tmp;\n const len = bytes.length;\n const extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n const parts = [];\n const maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (let i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(Base64.encodeChunk(bytes, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n }\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = bytes[len - 1];\n parts.push(`${Base64._LOOKUP[tmp >> 2] + Base64._LOOKUP[(tmp << 4) & 0x3f]}==`);\n }\n else if (extraBytes === 2) {\n tmp = (bytes[len - 2] << 8) + bytes[len - 1];\n parts.push(`${Base64._LOOKUP[tmp >> 10] + Base64._LOOKUP[(tmp >> 4) & 0x3f] + Base64._LOOKUP[(tmp << 2) & 0x3f]}=`);\n }\n return parts.join(\"\");\n }\n /**\n * Calculate the byte length.\n * @param validLen The valid length.\n * @param placeHoldersLen The placeholder length.\n * @returns The length.\n * @internal\n */\n static calcByteLength(validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen;\n }\n /**\n * Get the valid and placeholder lengths from a bas64 string.\n * @param base64 The base64 string.\n * @returns The lengths.\n * @internal\n */\n static getLengths(base64) {\n const len = base64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n let validLen = base64.indexOf(\"=\");\n if (validLen === -1) {\n validLen = len;\n }\n const placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4);\n return [validLen, placeHoldersLen];\n }\n /**\n * Convert the triplet to base 64.\n * @param num The number to convert.\n * @returns The base64 erncoding.\n * @internal\n */\n static tripletToBase64(num) {\n return (Base64._LOOKUP[(num >> 18) & 0x3f] +\n Base64._LOOKUP[(num >> 12) & 0x3f] +\n Base64._LOOKUP[(num >> 6) & 0x3f] +\n Base64._LOOKUP[num & 0x3f]);\n }\n /**\n * Encode a chunk.\n * @param bytes The byte array.\n * @param start The start index in the buffer.\n * @param end The end index in the buffer.\n * @returns The encoded chunk.\n * @internal\n */\n static encodeChunk(bytes, start, end) {\n let tmp;\n const output = [];\n for (let i = start; i < end; i += 3) {\n tmp = ((bytes[i] << 16) & 0xff0000) + ((bytes[i + 1] << 8) & 0xff00) + (bytes[i + 2] & 0xff);\n output.push(Base64.tripletToBase64(tmp));\n }\n return output.join(\"\");\n }\n}\n/**\n * Alphabet table for encoding.\n * @internal\n */\nBase64._LOOKUP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n/**\n * Alphabet table for decoding.\n * @internal\n */\nBase64._REVERSE_LOOKUP = {\n \"43\": 62,\n \"45\": 62,\n \"47\": 63,\n \"48\": 52,\n \"49\": 53,\n \"50\": 54,\n \"51\": 55,\n \"52\": 56,\n \"53\": 57,\n \"54\": 58,\n \"55\": 59,\n \"56\": 60,\n \"57\": 61,\n \"65\": 0,\n \"66\": 1,\n \"67\": 2,\n \"68\": 3,\n \"69\": 4,\n \"70\": 5,\n \"71\": 6,\n \"72\": 7,\n \"73\": 8,\n \"74\": 9,\n \"75\": 10,\n \"76\": 11,\n \"77\": 12,\n \"78\": 13,\n \"79\": 14,\n \"80\": 15,\n \"81\": 16,\n \"82\": 17,\n \"83\": 18,\n \"84\": 19,\n \"85\": 20,\n \"86\": 21,\n \"87\": 22,\n \"88\": 23,\n \"89\": 24,\n \"90\": 25,\n \"95\": 63,\n \"97\": 26,\n \"98\": 27,\n \"99\": 28,\n \"100\": 29,\n \"101\": 30,\n \"102\": 31,\n \"103\": 32,\n \"104\": 33,\n \"105\": 34,\n \"106\": 35,\n \"107\": 36,\n \"108\": 37,\n \"109\": 38,\n \"110\": 39,\n \"111\": 40,\n \"112\": 41,\n \"113\": 42,\n \"114\": 43,\n \"115\": 44,\n \"116\": 45,\n \"117\": 46,\n \"118\": 47,\n \"119\": 48,\n \"120\": 49,\n \"121\": 50,\n \"122\": 51\n};\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport bigInt from \"big-integer\";\n/**\n * Helper methods for hex conversions.\n */\nexport class HexHelper {\n /**\n * Convert the big int 256 bit to hex string.\n * @param value The big int value to convert.\n * @returns The hex encoded big int.\n */\n static fromBigInt256(value) {\n if (value.gt(HexHelper.BIG_INT_MAX_256_BIT)) {\n return HexHelper.addPrefix(HexHelper.BIG_INT_MAX_256_BIT.toString(16));\n }\n return HexHelper.addPrefix(value.toString(16));\n }\n /**\n * Convert the hex string to a big int.\n * @param hex The hex value to convert.\n * @returns The big int.\n */\n static toBigInt256(hex) {\n const bi = bigInt(HexHelper.stripPrefix(hex), 16);\n if (bi.greater(HexHelper.BIG_INT_MAX_256_BIT)) {\n return HexHelper.BIG_INT_MAX_256_BIT;\n }\n return bi;\n }\n /**\n * Strip the 0x prefix if it exists.\n * @param hex The hex value to strip.\n * @returns The stripped hex without the prefix.\n */\n static stripPrefix(hex) {\n return hex.replace(/^0x/, \"\");\n }\n /**\n * Add the 0x prefix if it does not exist.\n * @param hex The hex value to add the prefix to.\n * @returns The hex with the prefix.\n */\n static addPrefix(hex) {\n return hex.startsWith(\"0x\") ? hex : `0x${hex}`;\n }\n /**\n * Does the hex string have the prefix.\n * @param hex The hex value to check for the prefix.\n * @returns True if the hex string has the prefix.\n */\n static hasPrefix(hex) {\n return hex.startsWith(\"0x\");\n }\n}\n/**\n * Const defining the maximum value for a 256 bit int.\n */\nHexHelper.BIG_INT_MAX_256_BIT = bigInt(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\", 16);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { Base64 } from \"../encoding/base64.mjs\";\nimport { HexHelper } from \"./hexHelper.mjs\";\n/**\n * Convert arrays to and from different formats.\n */\nexport class Converter {\n /**\n * Encode a raw array to UTF8 string.\n * @param array The bytes to encode.\n * @param startIndex The index to start in the bytes.\n * @param length The length of bytes to read.\n * @returns The array formated as UTF8.\n */\n static bytesToUtf8(array, startIndex, length) {\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\n const len = length !== null && length !== void 0 ? length : array.length;\n let str = \"\";\n for (let i = start; i < start + len; i++) {\n const value = array[i];\n if (value < 0x80) {\n str += String.fromCharCode(value);\n }\n else if (value > 0xbf && value < 0xe0) {\n str += String.fromCharCode(((value & 0x1f) << 6) | (array[i + 1] & 0x3f));\n i += 1;\n }\n else if (value > 0xdf && value < 0xf0) {\n str += String.fromCharCode(((value & 0x0f) << 12) | ((array[i + 1] & 0x3f) << 6) | (array[i + 2] & 0x3f));\n i += 2;\n }\n else {\n // surrogate pair\n const charCode = (((value & 0x07) << 18) |\n ((array[i + 1] & 0x3f) << 12) |\n ((array[i + 2] & 0x3f) << 6) |\n (array[i + 3] & 0x3f)) -\n 0x010000;\n str += String.fromCharCode((charCode >> 10) | 0xd800, (charCode & 0x03ff) | 0xdc00);\n i += 3;\n }\n }\n return str;\n }\n /**\n * Convert a UTF8 string to raw array.\n * @param utf8 The text to decode.\n * @returns The array.\n */\n static utf8ToBytes(utf8) {\n const bytes = [];\n for (let i = 0; i < utf8.length; i++) {\n let charcode = utf8.charCodeAt(i);\n if (charcode < 0x80) {\n bytes.push(charcode);\n }\n else if (charcode < 0x800) {\n bytes.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n bytes.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // surrogate pair\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (utf8.charCodeAt(i) & 0x3ff));\n bytes.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return Uint8Array.from(bytes);\n }\n /**\n * Encode a raw array to hex string.\n * @param array The bytes to encode.\n * @param includePrefix Include the 0x prefix on the returned hex.\n * @param startIndex The index to start in the bytes.\n * @param length The length of bytes to read.\n * @param reverse Reverse the combine direction.\n * @returns The array formated as hex.\n */\n static bytesToHex(array, includePrefix = false, startIndex, length, reverse) {\n let hex = \"\";\n this.buildHexLookups();\n if (Converter.ENCODE_LOOKUP) {\n const len = length !== null && length !== void 0 ? length : array.length;\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\n if (reverse) {\n for (let i = 0; i < len; i++) {\n hex = Converter.ENCODE_LOOKUP[array[start + i]] + hex;\n }\n }\n else {\n for (let i = 0; i < len; i++) {\n hex += Converter.ENCODE_LOOKUP[array[start + i]];\n }\n }\n }\n return includePrefix ? HexHelper.addPrefix(hex) : hex;\n }\n /**\n * Decode a hex string to raw array.\n * @param hex The hex to decode.\n * @param reverse Store the characters in reverse.\n * @returns The array.\n */\n static hexToBytes(hex, reverse) {\n const strippedHex = HexHelper.stripPrefix(hex);\n const sizeof = strippedHex.length >> 1;\n const length = sizeof << 1;\n const array = new Uint8Array(sizeof);\n this.buildHexLookups();\n if (Converter.DECODE_LOOKUP) {\n let i = 0;\n let n = 0;\n while (i < length) {\n array[n++] =\n (Converter.DECODE_LOOKUP[strippedHex.charCodeAt(i++)] << 4) |\n Converter.DECODE_LOOKUP[strippedHex.charCodeAt(i++)];\n }\n if (reverse) {\n array.reverse();\n }\n }\n return array;\n }\n /**\n * Convert the UTF8 to hex.\n * @param utf8 The text to convert.\n * @param includePrefix Include the 0x prefix on the returned hex.\n * @returns The hex version of the bytes.\n */\n static utf8ToHex(utf8, includePrefix = false) {\n const hex = Converter.bytesToHex(Converter.utf8ToBytes(utf8));\n return includePrefix ? HexHelper.addPrefix(hex) : hex;\n }\n /**\n * Convert the hex text to text.\n * @param hex The hex to convert.\n * @returns The UTF8 version of the bytes.\n */\n static hexToUtf8(hex) {\n return Converter.bytesToUtf8(Converter.hexToBytes(HexHelper.stripPrefix(hex)));\n }\n /**\n * Is the data hex format.\n * @param value The value to test.\n * @param allowPrefix Allow the hex to have the 0x prefix.\n * @returns True if the string is hex.\n */\n static isHex(value, allowPrefix = false) {\n const localHex = allowPrefix ? HexHelper.stripPrefix(value) : value;\n if (localHex.length % 2 === 1) {\n return false;\n }\n return /^[\\da-f]+$/g.test(localHex);\n }\n /**\n * Convert bytes to binary string.\n * @param bytes The bytes to convert.\n * @returns A binary string of the bytes.\n */\n static bytesToBinary(bytes) {\n const b = [];\n for (let i = 0; i < bytes.length; i++) {\n b.push(bytes[i].toString(2).padStart(8, \"0\"));\n }\n return b.join(\"\");\n }\n /**\n * Convert a binary string to bytes.\n * @param binary The binary string.\n * @returns The bytes.\n */\n static binaryToBytes(binary) {\n const bytes = new Uint8Array(Math.ceil(binary.length / 8));\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = Number.parseInt(binary.slice(i * 8, (i + 1) * 8), 2);\n }\n return bytes;\n }\n /**\n * Convert bytes to base64 string.\n * @param bytes The bytes to convert.\n * @returns A base64 string of the bytes.\n */\n static bytesToBase64(bytes) {\n return Base64.encode(bytes);\n }\n /**\n * Convert a base64 string to bytes.\n * @param base64 The base64 string.\n * @returns The bytes.\n */\n static base64ToBytes(base64) {\n return Base64.decode(base64);\n }\n /**\n * Build the static lookup tables.\n * @internal\n */\n static buildHexLookups() {\n if (!Converter.ENCODE_LOOKUP || !Converter.DECODE_LOOKUP) {\n const alphabet = \"0123456789abcdef\";\n Converter.ENCODE_LOOKUP = [];\n Converter.DECODE_LOOKUP = [];\n for (let i = 0; i < 256; i++) {\n Converter.ENCODE_LOOKUP[i] = alphabet[(i >> 4) & 0xf] + alphabet[i & 0xf];\n if (i < 16) {\n if (i < 10) {\n Converter.DECODE_LOOKUP[0x30 + i] = i;\n }\n else {\n Converter.DECODE_LOOKUP[0x61 - 10 + i] = i;\n }\n }\n }\n }\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable newline-per-chained-call */\n/* eslint-disable no-mixed-operators */\nimport bigInt from \"big-integer\";\nimport { Converter } from \"./converter.mjs\";\nimport { RandomHelper } from \"./randomHelper.mjs\";\n/**\n * Helper methods for bigints.\n */\nexport class BigIntHelper {\n /**\n * Load 3 bytes from array as bigint.\n * @param data The input array.\n * @param byteOffset The start index to read from.\n * @returns The bigint.\n */\n static read3(data, byteOffset) {\n const v0 = (data[byteOffset + 0] + (data[byteOffset + 1] << 8) + (data[byteOffset + 2] << 16)) >>> 0;\n return bigInt(v0);\n }\n /**\n * Load 4 bytes from array as bigint.\n * @param data The input array.\n * @param byteOffset The start index to read from.\n * @returns The bigint.\n */\n static read4(data, byteOffset) {\n const v0 = (data[byteOffset + 0] +\n (data[byteOffset + 1] << 8) +\n (data[byteOffset + 2] << 16) +\n (data[byteOffset + 3] << 24)) >>>\n 0;\n return bigInt(v0);\n }\n /**\n * Load 8 bytes from array as bigint.\n * @param data The data to read from.\n * @param byteOffset The start index to read from.\n * @returns The bigint.\n */\n static read8(data, byteOffset) {\n const bytes = data.slice(byteOffset, byteOffset + 8);\n // convert to little endian hex by reversing the bytes\n const hex = Converter.bytesToHex(bytes, false, undefined, undefined, true);\n return bigInt(hex, 16);\n }\n /**\n * Load 32 bytes (256 bits) from array as bigint.\n * @param data The data to read from.\n * @param byteOffset The start index to read from.\n * @returns The bigint.\n */\n static read32(data, byteOffset) {\n const bytes = data.slice(byteOffset, byteOffset + 32);\n // convert to little endian hex by reversing the bytes\n const hex = Converter.bytesToHex(bytes, false, undefined, undefined, true);\n return bigInt(hex, 16);\n }\n /**\n * Convert a big int to bytes.\n * @param value The bigint.\n * @param data The buffer to write into.\n * @param byteOffset The start index to write from.\n */\n static write8(value, data, byteOffset) {\n let hex = value.toString(16);\n // Hex is twice the length of the bytes for padding\n hex = hex.padStart(16, \"0\");\n // Reverse so little endian\n const littleEndian = Converter.hexToBytes(hex, true);\n data.set(littleEndian, byteOffset);\n }\n /**\n * Convert a big int 32 bytes (256 bits) to bytes.\n * @param value The bigint.\n * @param data The buffer to write into.\n * @param byteOffset The start index to write from.\n */\n static write32(value, data, byteOffset) {\n let hex = value.toString(16);\n // Hex is twice the length of the bytes for padding\n hex = hex.padStart(64, \"0\");\n // Reverse so little endian\n const littleEndian = Converter.hexToBytes(hex, true);\n data.set(littleEndian, byteOffset);\n }\n /**\n * Generate a random bigint.\n * @param length The length of the bigint to generate.\n * @returns The bigint.\n */\n static random(length = 8) {\n return bigInt(Converter.bytesToHex(RandomHelper.generate(length)), 16);\n }\n}\n","import { BigIntHelper } from \"./bigIntHelper.mjs\";\nimport { Converter } from \"./converter.mjs\";\nimport { HexHelper } from \"./hexHelper.mjs\";\n/**\n * Keep track of the read index within a stream.\n */\nexport class ReadStream {\n /**\n * Create a new instance of ReadStream.\n * @param storage The data to access.\n * @param readStartIndex The index to start the reading from.\n */\n constructor(storage, readStartIndex = 0) {\n this._storage = new Uint8Array(storage);\n this._readIndex = readStartIndex;\n }\n /**\n * Get the length of the storage.\n * @returns The storage length.\n */\n length() {\n return this._storage.byteLength;\n }\n /**\n * Does the storage have enough data remaining.\n * @param remaining The amount of space needed.\n * @returns True if it has enough data.\n */\n hasRemaining(remaining) {\n return this._readIndex + remaining <= this._storage.byteLength;\n }\n /**\n * How much unused data is there.\n * @returns The amount of unused data.\n */\n unused() {\n return this._storage.byteLength - this._readIndex;\n }\n /**\n * Get the current read index.\n * @returns The current read index.\n */\n getReadIndex() {\n return this._readIndex;\n }\n /**\n * Set the current read index.\n * @param readIndex The current read index.\n */\n setReadIndex(readIndex) {\n this._readIndex = readIndex;\n if (readIndex >= this._storage.length) {\n throw new Error(`You cannot set the readIndex to ${readIndex} as the stream is only ${this._storage.length} in length`);\n }\n }\n /**\n * Read fixed length as hex.\n * @param name The name of the data we are trying to read.\n * @param length The length of the data to read.\n * @param moveIndex Move the index pointer on.\n * @returns The hex formatted data.\n */\n readFixedHex(name, length, moveIndex = true) {\n if (!this.hasRemaining(length)) {\n throw new Error(`${name} length ${length} exceeds the remaining data ${this.unused()}`);\n }\n const hex = Converter.bytesToHex(this._storage, false, this._readIndex, length);\n if (moveIndex) {\n this._readIndex += length;\n }\n return HexHelper.addPrefix(hex);\n }\n /**\n * Read an array of byte from the stream.\n * @param name The name of the data we are trying to read.\n * @param length The length of the array to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readBytes(name, length, moveIndex = true) {\n if (!this.hasRemaining(length)) {\n throw new Error(`${name} length ${length} exceeds the remaining data ${this.unused()}`);\n }\n const val = this._storage.slice(this._readIndex, this._readIndex + length);\n if (moveIndex) {\n this._readIndex += length;\n }\n return val;\n }\n /**\n * Read a byte from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readUInt8(name, moveIndex = true) {\n if (!this.hasRemaining(1)) {\n throw new Error(`${name} length 1 exceeds the remaining data ${this.unused()}`);\n }\n const val = this._storage[this._readIndex];\n if (moveIndex) {\n this._readIndex += 1;\n }\n return val;\n }\n /**\n * Read a UInt16 from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readUInt16(name, moveIndex = true) {\n if (!this.hasRemaining(2)) {\n throw new Error(`${name} length 2 exceeds the remaining data ${this.unused()}`);\n }\n const val = this._storage[this._readIndex] | (this._storage[this._readIndex + 1] << 8);\n if (moveIndex) {\n this._readIndex += 2;\n }\n return val;\n }\n /**\n * Read a UInt32 from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readUInt32(name, moveIndex = true) {\n if (!this.hasRemaining(4)) {\n throw new Error(`${name} length 4 exceeds the remaining data ${this.unused()}`);\n }\n const val = this._storage[this._readIndex] |\n (this._storage[this._readIndex + 1] * 0x100) |\n (this._storage[this._readIndex + 2] * 0x10000 + this._storage[this._readIndex + 3] * 0x1000000);\n if (moveIndex) {\n this._readIndex += 4;\n }\n return val;\n }\n /**\n * Read a UInt64 from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readUInt64(name, moveIndex = true) {\n if (!this.hasRemaining(8)) {\n throw new Error(`${name} length 8 exceeds the remaining data ${this.unused()}`);\n }\n const val = BigIntHelper.read8(this._storage, this._readIndex);\n if (moveIndex) {\n this._readIndex += 8;\n }\n return val;\n }\n /**\n * Read a UInt256 from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readUInt256(name, moveIndex = true) {\n if (!this.hasRemaining(32)) {\n throw new Error(`${name} length 32 exceeds the remaining data ${this.unused()}`);\n }\n const val = BigIntHelper.read32(this._storage, this._readIndex);\n if (moveIndex) {\n this._readIndex += 32;\n }\n return val;\n }\n /**\n * Read a boolean from the stream.\n * @param name The name of the data we are trying to read.\n * @param moveIndex Move the index pointer on.\n * @returns The value.\n */\n readBoolean(name, moveIndex = true) {\n if (!this.hasRemaining(1)) {\n throw new Error(`${name} length 1 exceeds the remaining data ${this.unused()}`);\n }\n const val = this._storage[this._readIndex];\n if (moveIndex) {\n this._readIndex += 1;\n }\n return val !== 0;\n }\n}\n","import { BigIntHelper } from \"./bigIntHelper.mjs\";\nimport { Converter } from \"./converter.mjs\";\nimport { HexHelper } from \"./hexHelper.mjs\";\n/**\n * Keep track of the write index within a stream.\n */\nexport class WriteStream {\n /**\n * Create a new instance of ReadStream.\n */\n constructor() {\n this._storage = new Uint8Array(WriteStream.CHUNK_SIZE);\n this._writeIndex = 0;\n }\n /**\n * Get the length of the stream.\n * @returns The stream length.\n */\n length() {\n return this._storage.length;\n }\n /**\n * How much unused data is there.\n * @returns The amount of unused data.\n */\n unused() {\n return this._storage.length - this._writeIndex;\n }\n /**\n * Get the final stream as bytes.\n * @returns The final stream.\n */\n finalBytes() {\n return this._storage.subarray(0, this._writeIndex);\n }\n /**\n * Get the final stream as hex.\n * @returns The final stream as hex.\n */\n finalHex() {\n return Converter.bytesToHex(this._storage.subarray(0, this._writeIndex));\n }\n /**\n * Get the current write index.\n * @returns The current write index.\n */\n getWriteIndex() {\n return this._writeIndex;\n }\n /**\n * Set the current write index.\n * @param writeIndex The current write index.\n */\n setWriteIndex(writeIndex) {\n this._writeIndex = writeIndex;\n if (writeIndex >= this._storage.length) {\n throw new Error(`You cannot set the writeIndex to ${writeIndex} as the stream is only ${this._storage.length} in length`);\n }\n }\n /**\n * Write fixed length stream.\n * @param name The name of the data we are trying to write.\n * @param length The length of the data to write.\n * @param val The data to write.\n */\n writeFixedHex(name, length, val) {\n const strippedVal = HexHelper.stripPrefix(val);\n if (!Converter.isHex(strippedVal)) {\n throw new Error(`The ${name} should be in hex format`);\n }\n // Hex should be twice the length as each byte is 2 characters\n if (length * 2 !== strippedVal.length) {\n throw new Error(`${name} length ${strippedVal.length} does not match expected length ${length * 2}`);\n }\n this.expand(length);\n this._storage.set(Converter.hexToBytes(strippedVal), this._writeIndex);\n this._writeIndex += length;\n }\n /**\n * Write fixed length stream.\n * @param name The name of the data we are trying to write.\n * @param length The length of the data to write.\n * @param val The data to write.\n */\n writeBytes(name, length, val) {\n this.expand(length);\n this._storage.set(val, this._writeIndex);\n this._writeIndex += length;\n }\n /**\n * Write a byte to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeUInt8(name, val) {\n this.expand(1);\n this._storage[this._writeIndex++] = val & 0xff;\n }\n /**\n * Write a UInt16 to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeUInt16(name, val) {\n this.expand(2);\n this._storage[this._writeIndex++] = val & 0xff;\n this._storage[this._writeIndex++] = val >>> 8;\n }\n /**\n * Write a UInt32 to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeUInt32(name, val) {\n this.expand(4);\n this._storage[this._writeIndex++] = val & 0xff;\n this._storage[this._writeIndex++] = val >>> 8;\n this._storage[this._writeIndex++] = val >>> 16;\n this._storage[this._writeIndex++] = val >>> 24;\n }\n /**\n * Write a UInt64 to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeUInt64(name, val) {\n this.expand(8);\n BigIntHelper.write8(val, this._storage, this._writeIndex);\n this._writeIndex += 8;\n }\n /**\n * Write a UInt256 to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeUInt256(name, val) {\n this.expand(32);\n BigIntHelper.write32(val, this._storage, this._writeIndex);\n this._writeIndex += 32;\n }\n /**\n * Write a boolean to the stream.\n * @param name The name of the data we are trying to write.\n * @param val The data to write.\n */\n writeBoolean(name, val) {\n this.expand(1);\n this._storage[this._writeIndex++] = val ? 1 : 0;\n }\n /**\n * Expand the storage if there is not enough spave.\n * @param additional The amount of space needed.\n */\n expand(additional) {\n if (this._writeIndex + additional > this._storage.byteLength) {\n const newArr = new Uint8Array(this._storage.length + Math.ceil(additional / WriteStream.CHUNK_SIZE) * WriteStream.CHUNK_SIZE);\n newArr.set(this._storage, 0);\n this._storage = newArr;\n }\n }\n}\n/**\n * Chunk size to expand the storage.\n * @internal\n */\nWriteStream.CHUNK_SIZE = 4096;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { Sha256 } from \"../hashes/sha256.mjs\";\n/**\n * Class to help with HmacSha256 scheme.\n * TypeScript conversion from https://github.com/emn178/js-sha256.\n */\nexport class HmacSha256 {\n /**\n * Create a new instance of HmacSha256.\n * @param key The key for the hmac.\n * @param bits The number of bits.\n */\n constructor(key, bits = 256) {\n this._bits = bits;\n this._sha256 = new Sha256(bits);\n if (key.length > 64) {\n // eslint-disable-next-line newline-per-chained-call\n key = new Sha256(bits).update(key).digest();\n }\n this._oKeyPad = new Uint8Array(64);\n const iKeyPad = new Uint8Array(64);\n for (let i = 0; i < 64; ++i) {\n const b = key[i] || 0;\n this._oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n this._sha256.update(iKeyPad);\n }\n /**\n * Perform Sum 256 on the data.\n * @param key The key for the hmac.\n * @param data The data to operate on.\n * @returns The sum 256 of the data.\n */\n static sum256(key, data) {\n const b2b = new HmacSha256(key, 256);\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Update the hash with the data.\n * @param message The data to update the hash with.\n * @returns The instance for chaining.\n */\n update(message) {\n this._sha256.update(message);\n return this;\n }\n /**\n * Get the digest.\n * @returns The digest.\n */\n digest() {\n const innerHash = this._sha256.digest();\n const finalSha256 = new Sha256(this._bits);\n finalSha256.update(this._oKeyPad);\n finalSha256.update(innerHash);\n return finalSha256.digest();\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { Sha512 } from \"../hashes/sha512.mjs\";\n/**\n * Class to help with HmacSha512 scheme.\n * TypeScript conversion from https://github.com/emn178/js-sha512.\n */\nexport class HmacSha512 {\n /**\n * Create a new instance of HmacSha512.\n * @param key The key for the hmac.\n * @param bits The number of bits.\n */\n constructor(key, bits = 512) {\n this._bits = bits;\n this._sha512 = new Sha512(bits);\n if (key.length > 128) {\n // eslint-disable-next-line newline-per-chained-call\n key = new Sha512(bits).update(key).digest();\n }\n this._oKeyPad = new Uint8Array(128);\n const iKeyPad = new Uint8Array(128);\n for (let i = 0; i < 128; ++i) {\n const b = key[i] || 0;\n this._oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n this._sha512.update(iKeyPad);\n }\n /**\n * Perform Sum 512 on the data.\n * @param key The key for the hmac.\n * @param data The data to operate on.\n * @returns The sum 512 of the data.\n */\n static sum512(key, data) {\n const b2b = new HmacSha512(key, 512);\n b2b.update(data);\n return b2b.digest();\n }\n /**\n * Update the hash with the data.\n * @param message The data to update the hash with.\n * @returns The instance for chaining.\n */\n update(message) {\n this._sha512.update(message);\n return this;\n }\n /**\n * Get the digest.\n * @returns The digest.\n */\n digest() {\n const innerHash = this._sha512.digest();\n const finalSha512 = new Sha512(this._bits);\n finalSha512.update(this._oKeyPad);\n finalSha512.update(innerHash);\n return finalSha512.digest();\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable unicorn/prefer-math-trunc */\nimport { HmacSha256 } from \"../macs/hmacSha256.mjs\";\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\n/**\n * Implementation of the password based key derivation function 2.\n */\nexport class Pbkdf2 {\n /**\n * Derive a key from the parameters using Sha256.\n * @param password The password to derive the key from.\n * @param salt The salt for the derivation.\n * @param iterations Numer of iterations to perform.\n * @param keyLength The length of the key to derive.\n * @returns The derived key.\n */\n static sha256(password, salt, iterations, keyLength) {\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 32, (pass, block) => HmacSha256.sum256(pass, block));\n }\n /**\n * Derive a key from the parameters using Sha512.\n * @param password The password to derive the key from.\n * @param salt The salt for the derivation.\n * @param iterations Numer of iterations to perform.\n * @param keyLength The length of the key to derive.\n * @returns The derived key.\n */\n static sha512(password, salt, iterations, keyLength) {\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 64, (pass, block) => HmacSha512.sum512(pass, block));\n }\n /**\n * Derive a key from the parameters.\n * @param password The password to derive the key from.\n * @param salt The salt for the derivation.\n * @param iterations Numer of iterations to perform.\n * @param keyLength The length of the key to derive.\n * @param macLength The length of the mac key.\n * @param sumFunc The mac function.\n * @returns The derived key.\n * @internal\n */\n static deriveKey(password, salt, iterations, keyLength, macLength, sumFunc) {\n if (iterations < 1) {\n throw new Error(\"Iterations must be > 0\");\n }\n if (keyLength > (Math.pow(2, 32) - 1) * macLength) {\n throw new Error(\"Requested key length is too long\");\n }\n const DK = new Uint8Array(keyLength);\n let T = new Uint8Array(macLength);\n const block1 = new Uint8Array(salt.length + 4);\n const l = Math.ceil(keyLength / macLength);\n const r = (keyLength - (l - 1)) * macLength;\n block1.set(salt, 0);\n for (let i = 1; i <= l; i++) {\n block1[salt.length + 0] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = (i >> 0) & 0xff;\n let U = sumFunc(password, block1);\n T = U.slice(0, macLength);\n for (let j = 1; j < iterations; j++) {\n U = sumFunc(password, U);\n for (let k = 0; k < macLength; k++) {\n T[k] ^= U[k];\n }\n }\n const destPos = (i - 1) * macLength;\n const len = i === l ? r : macLength;\n for (let j = 0; j < len; j++) {\n DK[destPos + j] = T[j];\n }\n }\n return DK;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nexport const english = [\n \"abandon\",\n \"ability\",\n \"able\",\n \"about\",\n \"above\",\n \"absent\",\n \"absorb\",\n \"abstract\",\n \"absurd\",\n \"abuse\",\n \"access\",\n \"accident\",\n \"account\",\n \"accuse\",\n \"achieve\",\n \"acid\",\n \"acoustic\",\n \"acquire\",\n \"across\",\n \"act\",\n \"action\",\n \"actor\",\n \"actress\",\n \"actual\",\n \"adapt\",\n \"add\",\n \"addict\",\n \"address\",\n \"adjust\",\n \"admit\",\n \"adult\",\n \"advance\",\n \"advice\",\n \"aerobic\",\n \"affair\",\n \"afford\",\n \"afraid\",\n \"again\",\n \"age\",\n \"agent\",\n \"agree\",\n \"ahead\",\n \"aim\",\n \"air\",\n \"airport\",\n \"aisle\",\n \"alarm\",\n \"album\",\n \"alcohol\",\n \"alert\",\n \"alien\",\n \"all\",\n \"alley\",\n \"allow\",\n \"almost\",\n \"alone\",\n \"alpha\",\n \"already\",\n \"also\",\n \"alter\",\n \"always\",\n \"amateur\",\n \"amazing\",\n \"among\",\n \"amount\",\n \"amused\",\n \"analyst\",\n \"anchor\",\n \"ancient\",\n \"anger\",\n \"angle\",\n \"angry\",\n \"animal\",\n \"ankle\",\n \"announce\",\n \"annual\",\n \"another\",\n \"answer\",\n \"antenna\",\n \"antique\",\n \"anxiety\",\n \"any\",\n \"apart\",\n \"apology\",\n \"appear\",\n \"apple\",\n \"approve\",\n \"april\",\n \"arch\",\n \"arctic\",\n \"area\",\n \"arena\",\n \"argue\",\n \"arm\",\n \"armed\",\n \"armor\",\n \"army\",\n \"around\",\n \"arrange\",\n \"arrest\",\n \"arrive\",\n \"arrow\",\n \"art\",\n \"artefact\",\n \"artist\",\n \"artwork\",\n \"ask\",\n \"aspect\",\n \"assault\",\n \"asset\",\n \"assist\",\n \"assume\",\n \"asthma\",\n \"athlete\",\n \"atom\",\n \"attack\",\n \"attend\",\n \"attitude\",\n \"attract\",\n \"auction\",\n \"audit\",\n \"august\",\n \"aunt\",\n \"author\",\n \"auto\",\n \"autumn\",\n \"average\",\n \"avocado\",\n \"avoid\",\n \"awake\",\n \"aware\",\n \"away\",\n \"awesome\",\n \"awful\",\n \"awkward\",\n \"axis\",\n \"baby\",\n \"bachelor\",\n \"bacon\",\n \"badge\",\n \"bag\",\n \"balance\",\n \"balcony\",\n \"ball\",\n \"bamboo\",\n \"banana\",\n \"banner\",\n \"bar\",\n \"barely\",\n \"bargain\",\n \"barrel\",\n \"base\",\n \"basic\",\n \"basket\",\n \"battle\",\n \"beach\",\n \"bean\",\n \"beauty\",\n \"because\",\n \"become\",\n \"beef\",\n \"before\",\n \"begin\",\n \"behave\",\n \"behind\",\n \"believe\",\n \"below\",\n \"belt\",\n \"bench\",\n \"benefit\",\n \"best\",\n \"betray\",\n \"better\",\n \"between\",\n \"beyond\",\n \"bicycle\",\n \"bid\",\n \"bike\",\n \"bind\",\n \"biology\",\n \"bird\",\n \"birth\",\n \"bitter\",\n \"black\",\n \"blade\",\n \"blame\",\n \"blanket\",\n \"blast\",\n \"bleak\",\n \"bless\",\n \"blind\",\n \"blood\",\n \"blossom\",\n \"blouse\",\n \"blue\",\n \"blur\",\n \"blush\",\n \"board\",\n \"boat\",\n \"body\",\n \"boil\",\n \"bomb\",\n \"bone\",\n \"bonus\",\n \"book\",\n \"boost\",\n \"border\",\n \"boring\",\n \"borrow\",\n \"boss\",\n \"bottom\",\n \"bounce\",\n \"box\",\n \"boy\",\n \"bracket\",\n \"brain\",\n \"brand\",\n \"brass\",\n \"brave\",\n \"bread\",\n \"breeze\",\n \"brick\",\n \"bridge\",\n \"brief\",\n \"bright\",\n \"bring\",\n \"brisk\",\n \"broccoli\",\n \"broken\",\n \"bronze\",\n \"broom\",\n \"brother\",\n \"brown\",\n \"brush\",\n \"bubble\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"build\",\n \"bulb\",\n \"bulk\",\n \"bullet\",\n \"bundle\",\n \"bunker\",\n \"burden\",\n \"burger\",\n \"burst\",\n \"bus\",\n \"business\",\n \"busy\",\n \"butter\",\n \"buyer\",\n \"buzz\",\n \"cabbage\",\n \"cabin\",\n \"cable\",\n \"cactus\",\n \"cage\",\n \"cake\",\n \"call\",\n \"calm\",\n \"camera\",\n \"camp\",\n \"can\",\n \"canal\",\n \"cancel\",\n \"candy\",\n \"cannon\",\n \"canoe\",\n \"canvas\",\n \"canyon\",\n \"capable\",\n \"capital\",\n \"captain\",\n \"car\",\n \"carbon\",\n \"card\",\n \"cargo\",\n \"carpet\",\n \"carry\",\n \"cart\",\n \"case\",\n \"cash\",\n \"casino\",\n \"castle\",\n \"casual\",\n \"cat\",\n \"catalog\",\n \"catch\",\n \"category\",\n \"cattle\",\n \"caught\",\n \"cause\",\n \"caution\",\n \"cave\",\n \"ceiling\",\n \"celery\",\n \"cement\",\n \"census\",\n \"century\",\n \"cereal\",\n \"certain\",\n \"chair\",\n \"chalk\",\n \"champion\",\n \"change\",\n \"chaos\",\n \"chapter\",\n \"charge\",\n \"chase\",\n \"chat\",\n \"cheap\",\n \"check\",\n \"cheese\",\n \"chef\",\n \"cherry\",\n \"chest\",\n \"chicken\",\n \"chief\",\n \"child\",\n \"chimney\",\n \"choice\",\n \"choose\",\n \"chronic\",\n \"chuckle\",\n \"chunk\",\n \"churn\",\n \"cigar\",\n \"cinnamon\",\n \"circle\",\n \"citizen\",\n \"city\",\n \"civil\",\n \"claim\",\n \"clap\",\n \"clarify\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clerk\",\n \"clever\",\n \"click\",\n \"client\",\n \"cliff\",\n \"climb\",\n \"clinic\",\n \"clip\",\n \"clock\",\n \"clog\",\n \"close\",\n \"cloth\",\n \"cloud\",\n \"clown\",\n \"club\",\n \"clump\",\n \"cluster\",\n \"clutch\",\n \"coach\",\n \"coast\",\n \"coconut\",\n \"code\",\n \"coffee\",\n \"coil\",\n \"coin\",\n \"collect\",\n \"color\",\n \"column\",\n \"combine\",\n \"come\",\n \"comfort\",\n \"comic\",\n \"common\",\n \"company\",\n \"concert\",\n \"conduct\",\n \"confirm\",\n \"congress\",\n \"connect\",\n \"consider\",\n \"control\",\n \"convince\",\n \"cook\",\n \"cool\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"core\",\n \"corn\",\n \"correct\",\n \"cost\",\n \"cotton\",\n \"couch\",\n \"country\",\n \"couple\",\n \"course\",\n \"cousin\",\n \"cover\",\n \"coyote\",\n \"crack\",\n \"cradle\",\n \"craft\",\n \"cram\",\n \"crane\",\n \"crash\",\n \"crater\",\n \"crawl\",\n \"crazy\",\n \"cream\",\n \"credit\",\n \"creek\",\n \"crew\",\n \"cricket\",\n \"crime\",\n \"crisp\",\n \"critic\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crowd\",\n \"crucial\",\n \"cruel\",\n \"cruise\",\n \"crumble\",\n \"crunch\",\n \"crush\",\n \"cry\",\n \"crystal\",\n \"cube\",\n \"culture\",\n \"cup\",\n \"cupboard\",\n \"curious\",\n \"current\",\n \"curtain\",\n \"curve\",\n \"cushion\",\n \"custom\",\n \"cute\",\n \"cycle\",\n \"dad\",\n \"damage\",\n \"damp\",\n \"dance\",\n \"danger\",\n \"daring\",\n \"dash\",\n \"daughter\",\n \"dawn\",\n \"day\",\n \"deal\",\n \"debate\",\n \"debris\",\n \"decade\",\n \"december\",\n \"decide\",\n \"decline\",\n \"decorate\",\n \"decrease\",\n \"deer\",\n \"defense\",\n \"define\",\n \"defy\",\n \"degree\",\n \"delay\",\n \"deliver\",\n \"demand\",\n \"demise\",\n \"denial\",\n \"dentist\",\n \"deny\",\n \"depart\",\n \"depend\",\n \"deposit\",\n \"depth\",\n \"deputy\",\n \"derive\",\n \"describe\",\n \"desert\",\n \"design\",\n \"desk\",\n \"despair\",\n \"destroy\",\n \"detail\",\n \"detect\",\n \"develop\",\n \"device\",\n \"devote\",\n \"diagram\",\n \"dial\",\n \"diamond\",\n \"diary\",\n \"dice\",\n \"diesel\",\n \"diet\",\n \"differ\",\n \"digital\",\n \"dignity\",\n \"dilemma\",\n \"dinner\",\n \"dinosaur\",\n \"direct\",\n \"dirt\",\n \"disagree\",\n \"discover\",\n \"disease\",\n \"dish\",\n \"dismiss\",\n \"disorder\",\n \"display\",\n \"distance\",\n \"divert\",\n \"divide\",\n \"divorce\",\n \"dizzy\",\n \"doctor\",\n \"document\",\n \"dog\",\n \"doll\",\n \"dolphin\",\n \"domain\",\n \"donate\",\n \"donkey\",\n \"donor\",\n \"door\",\n \"dose\",\n \"double\",\n \"dove\",\n \"draft\",\n \"dragon\",\n \"drama\",\n \"drastic\",\n \"draw\",\n \"dream\",\n \"dress\",\n \"drift\",\n \"drill\",\n \"drink\",\n \"drip\",\n \"drive\",\n \"drop\",\n \"drum\",\n \"dry\",\n \"duck\",\n \"dumb\",\n \"dune\",\n \"during\",\n \"dust\",\n \"dutch\",\n \"duty\",\n \"dwarf\",\n \"dynamic\",\n \"eager\",\n \"eagle\",\n \"early\",\n \"earn\",\n \"earth\",\n \"easily\",\n \"east\",\n \"easy\",\n \"echo\",\n \"ecology\",\n \"economy\",\n \"edge\",\n \"edit\",\n \"educate\",\n \"effort\",\n \"egg\",\n \"eight\",\n \"either\",\n \"elbow\",\n \"elder\",\n \"electric\",\n \"elegant\",\n \"element\",\n \"elephant\",\n \"elevator\",\n \"elite\",\n \"else\",\n \"embark\",\n \"embody\",\n \"embrace\",\n \"emerge\",\n \"emotion\",\n \"employ\",\n \"empower\",\n \"empty\",\n \"enable\",\n \"enact\",\n \"end\",\n \"endless\",\n \"endorse\",\n \"enemy\",\n \"energy\",\n \"enforce\",\n \"engage\",\n \"engine\",\n \"enhance\",\n \"enjoy\",\n \"enlist\",\n \"enough\",\n \"enrich\",\n \"enroll\",\n \"ensure\",\n \"enter\",\n \"entire\",\n \"entry\",\n \"envelope\",\n \"episode\",\n \"equal\",\n \"equip\",\n \"era\",\n \"erase\",\n \"erode\",\n \"erosion\",\n \"error\",\n \"erupt\",\n \"escape\",\n \"essay\",\n \"essence\",\n \"estate\",\n \"eternal\",\n \"ethics\",\n \"evidence\",\n \"evil\",\n \"evoke\",\n \"evolve\",\n \"exact\",\n \"example\",\n \"excess\",\n \"exchange\",\n \"excite\",\n \"exclude\",\n \"excuse\",\n \"execute\",\n \"exercise\",\n \"exhaust\",\n \"exhibit\",\n \"exile\",\n \"exist\",\n \"exit\",\n \"exotic\",\n \"expand\",\n \"expect\",\n \"expire\",\n \"explain\",\n \"expose\",\n \"express\",\n \"extend\",\n \"extra\",\n \"eye\",\n \"eyebrow\",\n \"fabric\",\n \"face\",\n \"faculty\",\n \"fade\",\n \"faint\",\n \"faith\",\n \"fall\",\n \"false\",\n \"fame\",\n \"family\",\n \"famous\",\n \"fan\",\n \"fancy\",\n \"fantasy\",\n \"farm\",\n \"fashion\",\n \"fat\",\n \"fatal\",\n \"father\",\n \"fatigue\",\n \"fault\",\n \"favorite\",\n \"feature\",\n \"february\",\n \"federal\",\n \"fee\",\n \"feed\",\n \"feel\",\n \"female\",\n \"fence\",\n \"festival\",\n \"fetch\",\n \"fever\",\n \"few\",\n \"fiber\",\n \"fiction\",\n \"field\",\n \"figure\",\n \"file\",\n \"film\",\n \"filter\",\n \"final\",\n \"find\",\n \"fine\",\n \"finger\",\n \"finish\",\n \"fire\",\n \"firm\",\n \"first\",\n \"fiscal\",\n \"fish\",\n \"fit\",\n \"fitness\",\n \"fix\",\n \"flag\",\n \"flame\",\n \"flash\",\n \"flat\",\n \"flavor\",\n \"flee\",\n \"flight\",\n \"flip\",\n \"float\",\n \"flock\",\n \"floor\",\n \"flower\",\n \"fluid\",\n \"flush\",\n \"fly\",\n \"foam\",\n \"focus\",\n \"fog\",\n \"foil\",\n \"fold\",\n \"follow\",\n \"food\",\n \"foot\",\n \"force\",\n \"forest\",\n \"forget\",\n \"fork\",\n \"fortune\",\n \"forum\",\n \"forward\",\n \"fossil\",\n \"foster\",\n \"found\",\n \"fox\",\n \"fragile\",\n \"frame\",\n \"frequent\",\n \"fresh\",\n \"friend\",\n \"fringe\",\n \"frog\",\n \"front\",\n \"frost\",\n \"frown\",\n \"frozen\",\n \"fruit\",\n \"fuel\",\n \"fun\",\n \"funny\",\n \"furnace\",\n \"fury\",\n \"future\",\n \"gadget\",\n \"gain\",\n \"galaxy\",\n \"gallery\",\n \"game\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"garlic\",\n \"garment\",\n \"gas\",\n \"gasp\",\n \"gate\",\n \"gather\",\n \"gauge\",\n \"gaze\",\n \"general\",\n \"genius\",\n \"genre\",\n \"gentle\",\n \"genuine\",\n \"gesture\",\n \"ghost\",\n \"giant\",\n \"gift\",\n \"giggle\",\n \"ginger\",\n \"giraffe\",\n \"girl\",\n \"give\",\n \"glad\",\n \"glance\",\n \"glare\",\n \"glass\",\n \"glide\",\n \"glimpse\",\n \"globe\",\n \"gloom\",\n \"glory\",\n \"glove\",\n \"glow\",\n \"glue\",\n \"goat\",\n \"goddess\",\n \"gold\",\n \"good\",\n \"goose\",\n \"gorilla\",\n \"gospel\",\n \"gossip\",\n \"govern\",\n \"gown\",\n \"grab\",\n \"grace\",\n \"grain\",\n \"grant\",\n \"grape\",\n \"grass\",\n \"gravity\",\n \"great\",\n \"green\",\n \"grid\",\n \"grief\",\n \"grit\",\n \"grocery\",\n \"group\",\n \"grow\",\n \"grunt\",\n \"guard\",\n \"guess\",\n \"guide\",\n \"guilt\",\n \"guitar\",\n \"gun\",\n \"gym\",\n \"habit\",\n \"hair\",\n \"half\",\n \"hammer\",\n \"hamster\",\n \"hand\",\n \"happy\",\n \"harbor\",\n \"hard\",\n \"harsh\",\n \"harvest\",\n \"hat\",\n \"have\",\n \"hawk\",\n \"hazard\",\n \"head\",\n \"health\",\n \"heart\",\n \"heavy\",\n \"hedgehog\",\n \"height\",\n \"hello\",\n \"helmet\",\n \"help\",\n \"hen\",\n \"hero\",\n \"hidden\",\n \"high\",\n \"hill\",\n \"hint\",\n \"hip\",\n \"hire\",\n \"history\",\n \"hobby\",\n \"hockey\",\n \"hold\",\n \"hole\",\n \"holiday\",\n \"hollow\",\n \"home\",\n \"honey\",\n \"hood\",\n \"hope\",\n \"horn\",\n \"horror\",\n \"horse\",\n \"hospital\",\n \"host\",\n \"hotel\",\n \"hour\",\n \"hover\",\n \"hub\",\n \"huge\",\n \"human\",\n \"humble\",\n \"humor\",\n \"hundred\",\n \"hungry\",\n \"hunt\",\n \"hurdle\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hybrid\",\n \"ice\",\n \"icon\",\n \"idea\",\n \"identify\",\n \"idle\",\n \"ignore\",\n \"ill\",\n \"illegal\",\n \"illness\",\n \"image\",\n \"imitate\",\n \"immense\",\n \"immune\",\n \"impact\",\n \"impose\",\n \"improve\",\n \"impulse\",\n \"inch\",\n \"include\",\n \"income\",\n \"increase\",\n \"index\",\n \"indicate\",\n \"indoor\",\n \"industry\",\n \"infant\",\n \"inflict\",\n \"inform\",\n \"inhale\",\n \"inherit\",\n \"initial\",\n \"inject\",\n \"injury\",\n \"inmate\",\n \"inner\",\n \"innocent\",\n \"input\",\n \"inquiry\",\n \"insane\",\n \"insect\",\n \"inside\",\n \"inspire\",\n \"install\",\n \"intact\",\n \"interest\",\n \"into\",\n \"invest\",\n \"invite\",\n \"involve\",\n \"iron\",\n \"island\",\n \"isolate\",\n \"issue\",\n \"item\",\n \"ivory\",\n \"jacket\",\n \"jaguar\",\n \"jar\",\n \"jazz\",\n \"jealous\",\n \"jeans\",\n \"jelly\",\n \"jewel\",\n \"job\",\n \"join\",\n \"joke\",\n \"journey\",\n \"joy\",\n \"judge\",\n \"juice\",\n \"jump\",\n \"jungle\",\n \"junior\",\n \"junk\",\n \"just\",\n \"kangaroo\",\n \"keen\",\n \"keep\",\n \"ketchup\",\n \"key\",\n \"kick\",\n \"kid\",\n \"kidney\",\n \"kind\",\n \"kingdom\",\n \"kiss\",\n \"kit\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kiwi\",\n \"knee\",\n \"knife\",\n \"knock\",\n \"know\",\n \"lab\",\n \"label\",\n \"labor\",\n \"ladder\",\n \"lady\",\n \"lake\",\n \"lamp\",\n \"language\",\n \"laptop\",\n \"large\",\n \"later\",\n \"latin\",\n \"laugh\",\n \"laundry\",\n \"lava\",\n \"law\",\n \"lawn\",\n \"lawsuit\",\n \"layer\",\n \"lazy\",\n \"leader\",\n \"leaf\",\n \"learn\",\n \"leave\",\n \"lecture\",\n \"left\",\n \"leg\",\n \"legal\",\n \"legend\",\n \"leisure\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"leopard\",\n \"lesson\",\n \"letter\",\n \"level\",\n \"liar\",\n \"liberty\",\n \"library\",\n \"license\",\n \"life\",\n \"lift\",\n \"light\",\n \"like\",\n \"limb\",\n \"limit\",\n \"link\",\n \"lion\",\n \"liquid\",\n \"list\",\n \"little\",\n \"live\",\n \"lizard\",\n \"load\",\n \"loan\",\n \"lobster\",\n \"local\",\n \"lock\",\n \"logic\",\n \"lonely\",\n \"long\",\n \"loop\",\n \"lottery\",\n \"loud\",\n \"lounge\",\n \"love\",\n \"loyal\",\n \"lucky\",\n \"luggage\",\n \"lumber\",\n \"lunar\",\n \"lunch\",\n \"luxury\",\n \"lyrics\",\n \"machine\",\n \"mad\",\n \"magic\",\n \"magnet\",\n \"maid\",\n \"mail\",\n \"main\",\n \"major\",\n \"make\",\n \"mammal\",\n \"man\",\n \"manage\",\n \"mandate\",\n \"mango\",\n \"mansion\",\n \"manual\",\n \"maple\",\n \"marble\",\n \"march\",\n \"margin\",\n \"marine\",\n \"market\",\n \"marriage\",\n \"mask\",\n \"mass\",\n \"master\",\n \"match\",\n \"material\",\n \"math\",\n \"matrix\",\n \"matter\",\n \"maximum\",\n \"maze\",\n \"meadow\",\n \"mean\",\n \"measure\",\n \"meat\",\n \"mechanic\",\n \"medal\",\n \"media\",\n \"melody\",\n \"melt\",\n \"member\",\n \"memory\",\n \"mention\",\n \"menu\",\n \"mercy\",\n \"merge\",\n \"merit\",\n \"merry\",\n \"mesh\",\n \"message\",\n \"metal\",\n \"method\",\n \"middle\",\n \"midnight\",\n \"milk\",\n \"million\",\n \"mimic\",\n \"mind\",\n \"minimum\",\n \"minor\",\n \"minute\",\n \"miracle\",\n \"mirror\",\n \"misery\",\n \"miss\",\n \"mistake\",\n \"mix\",\n \"mixed\",\n \"mixture\",\n \"mobile\",\n \"model\",\n \"modify\",\n \"mom\",\n \"moment\",\n \"monitor\",\n \"monkey\",\n \"monster\",\n \"month\",\n \"moon\",\n \"moral\",\n \"more\",\n \"morning\",\n \"mosquito\",\n \"mother\",\n \"motion\",\n \"motor\",\n \"mountain\",\n \"mouse\",\n \"move\",\n \"movie\",\n \"much\",\n \"muffin\",\n \"mule\",\n \"multiply\",\n \"muscle\",\n \"museum\",\n \"mushroom\",\n \"music\",\n \"must\",\n \"mutual\",\n \"myself\",\n \"mystery\",\n \"myth\",\n \"naive\",\n \"name\",\n \"napkin\",\n \"narrow\",\n \"nasty\",\n \"nation\",\n \"nature\",\n \"near\",\n \"neck\",\n \"need\",\n \"negative\",\n \"neglect\",\n \"neither\",\n \"nephew\",\n \"nerve\",\n \"nest\",\n \"net\",\n \"network\",\n \"neutral\",\n \"never\",\n \"news\",\n \"next\",\n \"nice\",\n \"night\",\n \"noble\",\n \"noise\",\n \"nominee\",\n \"noodle\",\n \"normal\",\n \"north\",\n \"nose\",\n \"notable\",\n \"note\",\n \"nothing\",\n \"notice\",\n \"novel\",\n \"now\",\n \"nuclear\",\n \"number\",\n \"nurse\",\n \"nut\",\n \"oak\",\n \"obey\",\n \"object\",\n \"oblige\",\n \"obscure\",\n \"observe\",\n \"obtain\",\n \"obvious\",\n \"occur\",\n \"ocean\",\n \"october\",\n \"odor\",\n \"off\",\n \"offer\",\n \"office\",\n \"often\",\n \"oil\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympic\",\n \"omit\",\n \"once\",\n \"one\",\n \"onion\",\n \"online\",\n \"only\",\n \"open\",\n \"opera\",\n \"opinion\",\n \"oppose\",\n \"option\",\n \"orange\",\n \"orbit\",\n \"orchard\",\n \"order\",\n \"ordinary\",\n \"organ\",\n \"orient\",\n \"original\",\n \"orphan\",\n \"ostrich\",\n \"other\",\n \"outdoor\",\n \"outer\",\n \"output\",\n \"outside\",\n \"oval\",\n \"oven\",\n \"over\",\n \"own\",\n \"owner\",\n \"oxygen\",\n \"oyster\",\n \"ozone\",\n \"pact\",\n \"paddle\",\n \"page\",\n \"pair\",\n \"palace\",\n \"palm\",\n \"panda\",\n \"panel\",\n \"panic\",\n \"panther\",\n \"paper\",\n \"parade\",\n \"parent\",\n \"park\",\n \"parrot\",\n \"party\",\n \"pass\",\n \"patch\",\n \"path\",\n \"patient\",\n \"patrol\",\n \"pattern\",\n \"pause\",\n \"pave\",\n \"payment\",\n \"peace\",\n \"peanut\",\n \"pear\",\n \"peasant\",\n \"pelican\",\n \"pen\",\n \"penalty\",\n \"pencil\",\n \"people\",\n \"pepper\",\n \"perfect\",\n \"permit\",\n \"person\",\n \"pet\",\n \"phone\",\n \"photo\",\n \"phrase\",\n \"physical\",\n \"piano\",\n \"picnic\",\n \"picture\",\n \"piece\",\n \"pig\",\n \"pigeon\",\n \"pill\",\n \"pilot\",\n \"pink\",\n \"pioneer\",\n \"pipe\",\n \"pistol\",\n \"pitch\",\n \"pizza\",\n \"place\",\n \"planet\",\n \"plastic\",\n \"plate\",\n \"play\",\n \"please\",\n \"pledge\",\n \"pluck\",\n \"plug\",\n \"plunge\",\n \"poem\",\n \"poet\",\n \"point\",\n \"polar\",\n \"pole\",\n \"police\",\n \"pond\",\n \"pony\",\n \"pool\",\n \"popular\",\n \"portion\",\n \"position\",\n \"possible\",\n \"post\",\n \"potato\",\n \"pottery\",\n \"poverty\",\n \"powder\",\n \"power\",\n \"practice\",\n \"praise\",\n \"predict\",\n \"prefer\",\n \"prepare\",\n \"present\",\n \"pretty\",\n \"prevent\",\n \"price\",\n \"pride\",\n \"primary\",\n \"print\",\n \"priority\",\n \"prison\",\n \"private\",\n \"prize\",\n \"problem\",\n \"process\",\n \"produce\",\n \"profit\",\n \"program\",\n \"project\",\n \"promote\",\n \"proof\",\n \"property\",\n \"prosper\",\n \"protect\",\n \"proud\",\n \"provide\",\n \"public\",\n \"pudding\",\n \"pull\",\n \"pulp\",\n \"pulse\",\n \"pumpkin\",\n \"punch\",\n \"pupil\",\n \"puppy\",\n \"purchase\",\n \"purity\",\n \"purpose\",\n \"purse\",\n \"push\",\n \"put\",\n \"puzzle\",\n \"pyramid\",\n \"quality\",\n \"quantum\",\n \"quarter\",\n \"question\",\n \"quick\",\n \"quit\",\n \"quiz\",\n \"quote\",\n \"rabbit\",\n \"raccoon\",\n \"race\",\n \"rack\",\n \"radar\",\n \"radio\",\n \"rail\",\n \"rain\",\n \"raise\",\n \"rally\",\n \"ramp\",\n \"ranch\",\n \"random\",\n \"range\",\n \"rapid\",\n \"rare\",\n \"rate\",\n \"rather\",\n \"raven\",\n \"raw\",\n \"razor\",\n \"ready\",\n \"real\",\n \"reason\",\n \"rebel\",\n \"rebuild\",\n \"recall\",\n \"receive\",\n \"recipe\",\n \"record\",\n \"recycle\",\n \"reduce\",\n \"reflect\",\n \"reform\",\n \"refuse\",\n \"region\",\n \"regret\",\n \"regular\",\n \"reject\",\n \"relax\",\n \"release\",\n \"relief\",\n \"rely\",\n \"remain\",\n \"remember\",\n \"remind\",\n \"remove\",\n \"render\",\n \"renew\",\n \"rent\",\n \"reopen\",\n \"repair\",\n \"repeat\",\n \"replace\",\n \"report\",\n \"require\",\n \"rescue\",\n \"resemble\",\n \"resist\",\n \"resource\",\n \"response\",\n \"result\",\n \"retire\",\n \"retreat\",\n \"return\",\n \"reunion\",\n \"reveal\",\n \"review\",\n \"reward\",\n \"rhythm\",\n \"rib\",\n \"ribbon\",\n \"rice\",\n \"rich\",\n \"ride\",\n \"ridge\",\n \"rifle\",\n \"right\",\n \"rigid\",\n \"ring\",\n \"riot\",\n \"ripple\",\n \"risk\",\n \"ritual\",\n \"rival\",\n \"river\",\n \"road\",\n \"roast\",\n \"robot\",\n \"robust\",\n \"rocket\",\n \"romance\",\n \"roof\",\n \"rookie\",\n \"room\",\n \"rose\",\n \"rotate\",\n \"rough\",\n \"round\",\n \"route\",\n \"royal\",\n \"rubber\",\n \"rude\",\n \"rug\",\n \"rule\",\n \"run\",\n \"runway\",\n \"rural\",\n \"sad\",\n \"saddle\",\n \"sadness\",\n \"safe\",\n \"sail\",\n \"salad\",\n \"salmon\",\n \"salon\",\n \"salt\",\n \"salute\",\n \"same\",\n \"sample\",\n \"sand\",\n \"satisfy\",\n \"satoshi\",\n \"sauce\",\n \"sausage\",\n \"save\",\n \"say\",\n \"scale\",\n \"scan\",\n \"scare\",\n \"scatter\",\n \"scene\",\n \"scheme\",\n \"school\",\n \"science\",\n \"scissors\",\n \"scorpion\",\n \"scout\",\n \"scrap\",\n \"screen\",\n \"script\",\n \"scrub\",\n \"sea\",\n \"search\",\n \"season\",\n \"seat\",\n \"second\",\n \"secret\",\n \"section\",\n \"security\",\n \"seed\",\n \"seek\",\n \"segment\",\n \"select\",\n \"sell\",\n \"seminar\",\n \"senior\",\n \"sense\",\n \"sentence\",\n \"series\",\n \"service\",\n \"session\",\n \"settle\",\n \"setup\",\n \"seven\",\n \"shadow\",\n \"shaft\",\n \"shallow\",\n \"share\",\n \"shed\",\n \"shell\",\n \"sheriff\",\n \"shield\",\n \"shift\",\n \"shine\",\n \"ship\",\n \"shiver\",\n \"shock\",\n \"shoe\",\n \"shoot\",\n \"shop\",\n \"short\",\n \"shoulder\",\n \"shove\",\n \"shrimp\",\n \"shrug\",\n \"shuffle\",\n \"shy\",\n \"sibling\",\n \"sick\",\n \"side\",\n \"siege\",\n \"sight\",\n \"sign\",\n \"silent\",\n \"silk\",\n \"silly\",\n \"silver\",\n \"similar\",\n \"simple\",\n \"since\",\n \"sing\",\n \"siren\",\n \"sister\",\n \"situate\",\n \"six\",\n \"size\",\n \"skate\",\n \"sketch\",\n \"ski\",\n \"skill\",\n \"skin\",\n \"skirt\",\n \"skull\",\n \"slab\",\n \"slam\",\n \"sleep\",\n \"slender\",\n \"slice\",\n \"slide\",\n \"slight\",\n \"slim\",\n \"slogan\",\n \"slot\",\n \"slow\",\n \"slush\",\n \"small\",\n \"smart\",\n \"smile\",\n \"smoke\",\n \"smooth\",\n \"snack\",\n \"snake\",\n \"snap\",\n \"sniff\",\n \"snow\",\n \"soap\",\n \"soccer\",\n \"social\",\n \"sock\",\n \"soda\",\n \"soft\",\n \"solar\",\n \"soldier\",\n \"solid\",\n \"solution\",\n \"solve\",\n \"someone\",\n \"song\",\n \"soon\",\n \"sorry\",\n \"sort\",\n \"soul\",\n \"sound\",\n \"soup\",\n \"source\",\n \"south\",\n \"space\",\n \"spare\",\n \"spatial\",\n \"spawn\",\n \"speak\",\n \"special\",\n \"speed\",\n \"spell\",\n \"spend\",\n \"sphere\",\n \"spice\",\n \"spider\",\n \"spike\",\n \"spin\",\n \"spirit\",\n \"split\",\n \"spoil\",\n \"sponsor\",\n \"spoon\",\n \"sport\",\n \"spot\",\n \"spray\",\n \"spread\",\n \"spring\",\n \"spy\",\n \"square\",\n \"squeeze\",\n \"squirrel\",\n \"stable\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"stairs\",\n \"stamp\",\n \"stand\",\n \"start\",\n \"state\",\n \"stay\",\n \"steak\",\n \"steel\",\n \"stem\",\n \"step\",\n \"stereo\",\n \"stick\",\n \"still\",\n \"sting\",\n \"stock\",\n \"stomach\",\n \"stone\",\n \"stool\",\n \"story\",\n \"stove\",\n \"strategy\",\n \"street\",\n \"strike\",\n \"strong\",\n \"struggle\",\n \"student\",\n \"stuff\",\n \"stumble\",\n \"style\",\n \"subject\",\n \"submit\",\n \"subway\",\n \"success\",\n \"such\",\n \"sudden\",\n \"suffer\",\n \"sugar\",\n \"suggest\",\n \"suit\",\n \"summer\",\n \"sun\",\n \"sunny\",\n \"sunset\",\n \"super\",\n \"supply\",\n \"supreme\",\n \"sure\",\n \"surface\",\n \"surge\",\n \"surprise\",\n \"surround\",\n \"survey\",\n \"suspect\",\n \"sustain\",\n \"swallow\",\n \"swamp\",\n \"swap\",\n \"swarm\",\n \"swear\",\n \"sweet\",\n \"swift\",\n \"swim\",\n \"swing\",\n \"switch\",\n \"sword\",\n \"symbol\",\n \"symptom\",\n \"syrup\",\n \"system\",\n \"table\",\n \"tackle\",\n \"tag\",\n \"tail\",\n \"talent\",\n \"talk\",\n \"tank\",\n \"tape\",\n \"target\",\n \"task\",\n \"taste\",\n \"tattoo\",\n \"taxi\",\n \"teach\",\n \"team\",\n \"tell\",\n \"ten\",\n \"tenant\",\n \"tennis\",\n \"tent\",\n \"term\",\n \"test\",\n \"text\",\n \"thank\",\n \"that\",\n \"theme\",\n \"then\",\n \"theory\",\n \"there\",\n \"they\",\n \"thing\",\n \"this\",\n \"thought\",\n \"three\",\n \"thrive\",\n \"throw\",\n \"thumb\",\n \"thunder\",\n \"ticket\",\n \"tide\",\n \"tiger\",\n \"tilt\",\n \"timber\",\n \"time\",\n \"tiny\",\n \"tip\",\n \"tired\",\n \"tissue\",\n \"title\",\n \"toast\",\n \"tobacco\",\n \"today\",\n \"toddler\",\n \"toe\",\n \"together\",\n \"toilet\",\n \"token\",\n \"tomato\",\n \"tomorrow\",\n \"tone\",\n \"tongue\",\n \"tonight\",\n \"tool\",\n \"tooth\",\n \"top\",\n \"topic\",\n \"topple\",\n \"torch\",\n \"tornado\",\n \"tortoise\",\n \"toss\",\n \"total\",\n \"tourist\",\n \"toward\",\n \"tower\",\n \"town\",\n \"toy\",\n \"track\",\n \"trade\",\n \"traffic\",\n \"tragic\",\n \"train\",\n \"transfer\",\n \"trap\",\n \"trash\",\n \"travel\",\n \"tray\",\n \"treat\",\n \"tree\",\n \"trend\",\n \"trial\",\n \"tribe\",\n \"trick\",\n \"trigger\",\n \"trim\",\n \"trip\",\n \"trophy\",\n \"trouble\",\n \"truck\",\n \"true\",\n \"truly\",\n \"trumpet\",\n \"trust\",\n \"truth\",\n \"try\",\n \"tube\",\n \"tuition\",\n \"tumble\",\n \"tuna\",\n \"tunnel\",\n \"turkey\",\n \"turn\",\n \"turtle\",\n \"twelve\",\n \"twenty\",\n \"twice\",\n \"twin\",\n \"twist\",\n \"two\",\n \"type\",\n \"typical\",\n \"ugly\",\n \"umbrella\",\n \"unable\",\n \"unaware\",\n \"uncle\",\n \"uncover\",\n \"under\",\n \"undo\",\n \"unfair\",\n \"unfold\",\n \"unhappy\",\n \"uniform\",\n \"unique\",\n \"unit\",\n \"universe\",\n \"unknown\",\n \"unlock\",\n \"until\",\n \"unusual\",\n \"unveil\",\n \"update\",\n \"upgrade\",\n \"uphold\",\n \"upon\",\n \"upper\",\n \"upset\",\n \"urban\",\n \"urge\",\n \"usage\",\n \"use\",\n \"used\",\n \"useful\",\n \"useless\",\n \"usual\",\n \"utility\",\n \"vacant\",\n \"vacuum\",\n \"vague\",\n \"valid\",\n \"valley\",\n \"valve\",\n \"van\",\n \"vanish\",\n \"vapor\",\n \"various\",\n \"vast\",\n \"vault\",\n \"vehicle\",\n \"velvet\",\n \"vendor\",\n \"venture\",\n \"venue\",\n \"verb\",\n \"verify\",\n \"version\",\n \"very\",\n \"vessel\",\n \"veteran\",\n \"viable\",\n \"vibrant\",\n \"vicious\",\n \"victory\",\n \"video\",\n \"view\",\n \"village\",\n \"vintage\",\n \"violin\",\n \"virtual\",\n \"virus\",\n \"visa\",\n \"visit\",\n \"visual\",\n \"vital\",\n \"vivid\",\n \"vocal\",\n \"voice\",\n \"void\",\n \"volcano\",\n \"volume\",\n \"vote\",\n \"voyage\",\n \"wage\",\n \"wagon\",\n \"wait\",\n \"walk\",\n \"wall\",\n \"walnut\",\n \"want\",\n \"warfare\",\n \"warm\",\n \"warrior\",\n \"wash\",\n \"wasp\",\n \"waste\",\n \"water\",\n \"wave\",\n \"way\",\n \"wealth\",\n \"weapon\",\n \"wear\",\n \"weasel\",\n \"weather\",\n \"web\",\n \"wedding\",\n \"weekend\",\n \"weird\",\n \"welcome\",\n \"west\",\n \"wet\",\n \"whale\",\n \"what\",\n \"wheat\",\n \"wheel\",\n \"when\",\n \"where\",\n \"whip\",\n \"whisper\",\n \"wide\",\n \"width\",\n \"wife\",\n \"wild\",\n \"will\",\n \"win\",\n \"window\",\n \"wine\",\n \"wing\",\n \"wink\",\n \"winner\",\n \"winter\",\n \"wire\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"witness\",\n \"wolf\",\n \"woman\",\n \"wonder\",\n \"wood\",\n \"wool\",\n \"word\",\n \"work\",\n \"world\",\n \"worry\",\n \"worth\",\n \"wrap\",\n \"wreck\",\n \"wrestle\",\n \"wrist\",\n \"write\",\n \"wrong\",\n \"yard\",\n \"year\",\n \"yellow\",\n \"you\",\n \"young\",\n \"youth\",\n \"zebra\",\n \"zero\",\n \"zone\",\n \"zoo\"\n];\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Converter, RandomHelper } from \"@iota/util.js\";\nimport { Sha256 } from \"../hashes/sha256.mjs\";\nimport { Pbkdf2 } from \"./pbkdf2.mjs\";\nimport { english } from \"./wordlists/english.mjs\";\n/**\n * Implementation of Bip39 for mnemonic generation.\n */\nexport class Bip39 {\n /**\n * Set the wordlist and joining character.\n * @param wordlistData Array of words.\n * @param joiningChar The character to join the words with.\n */\n static setWordList(wordlistData, joiningChar = \" \") {\n Bip39._wordlist = wordlistData;\n Bip39._joiningChar = joiningChar;\n }\n /**\n * Generate a random mnemonic.\n * @param length The length of the mnemonic to generate, defaults to 256.\n * @returns The random mnemonic.\n */\n static randomMnemonic(length = 256) {\n if (length % 32 !== 0) {\n throw new Error(\"The length must be a multiple of 32\");\n }\n const randomBytes = RandomHelper.generate(length / 8);\n return Bip39.entropyToMnemonic(randomBytes);\n }\n /**\n * Generate a mnemonic from the entropy.\n * @param entropy The entropy to generate.\n * @returns The mnemonic.\n */\n static entropyToMnemonic(entropy) {\n if (!Bip39._wordlist) {\n Bip39.setWordList(english, \" \");\n }\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(`The length of the entropy is invalid, it should be a multiple of 4, >= 16 and <= 32, it is ${entropy.length}`);\n }\n const bin = `${Converter.bytesToBinary(entropy)}${Bip39.entropyChecksumBits(entropy)}`;\n const mnemonic = [];\n for (let i = 0; i < bin.length / 11; i++) {\n const wordIndexBits = bin.slice(i * 11, (i + 1) * 11);\n const wordIndex = Number.parseInt(wordIndexBits, 2);\n mnemonic.push(Bip39._wordlist[wordIndex]);\n }\n return mnemonic.join(Bip39._joiningChar);\n }\n /**\n * Convert a mnemonic to a seed.\n * @param mnemonic The mnemonic to convert.\n * @param password The password to apply to the seed generation.\n * @param iterations The number of iterations to perform on the password function, defaults to 2048.\n * @param keyLength The size of the key length to generate, defaults to 64.\n * @returns The seed.\n */\n static mnemonicToSeed(mnemonic, password, iterations = 2048, keyLength = 64) {\n const mnemonicBytes = Converter.utf8ToBytes(mnemonic.normalize(\"NFKD\"));\n const salt = Converter.utf8ToBytes(`mnemonic${(password !== null && password !== void 0 ? password : \"\").normalize(\"NFKD\")}`);\n return Pbkdf2.sha512(mnemonicBytes, salt, iterations, keyLength);\n }\n /**\n * Convert the mnemonic back to entropy.\n * @param mnemonic The mnemonic to convert.\n * @returns The entropy.\n */\n static mnemonicToEntropy(mnemonic) {\n if (!Bip39._wordlist) {\n Bip39.setWordList(english, \" \");\n }\n const words = mnemonic.normalize(\"NFKD\").split(Bip39._joiningChar);\n if (words.length % 3 !== 0) {\n throw new Error(`Invalid mnemonic the number of words should be a multiple of 3, it is ${words.length}`);\n }\n const bits = words\n .map(word => {\n const index = Bip39._wordlist.indexOf(word);\n if (index === -1) {\n throw new Error(`The mnemonic contains a word not in the wordlist ${word}`);\n }\n return index.toString(2).padStart(11, \"0\");\n })\n .join(\"\");\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n const entropy = Converter.binaryToBytes(entropyBits);\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"The length of the entropy is invalid\");\n }\n const newChecksum = Bip39.entropyChecksumBits(entropy);\n if (newChecksum !== checksumBits) {\n throw new Error(`The checksum does not match ${newChecksum} != ${checksumBits}.`);\n }\n return entropy;\n }\n /**\n * Calculate the entropy checksum.\n * @param entropy The entropy to calculate the checksum for.\n * @returns The checksum.\n */\n static entropyChecksumBits(entropy) {\n const hash = Sha256.sum256(entropy);\n const bits = entropy.length * 8;\n const hashbits = Converter.bytesToBinary(hash);\n return hashbits.slice(0, bits / 32);\n }\n}\n/**\n * The character to join the mnemonics with.\n * @internal\n */\nBip39._joiningChar = \" \"; // \\u3000 for japanese\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Array helper methods.\n */\nexport class ArrayHelper {\n /**\n * Are the two array equals.\n * @param array1 The first array.\n * @param array2 The second array.\n * @returns True if the arrays are equal.\n */\n static equal(array1, array2) {\n if (!array1 || !array2 || array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport bigInt from \"big-integer\";\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\n// @internal\nexport const BIG_1_SHIFTL_20 = bigInt(1).shiftLeft(20);\n// @internal\nexport const BIG_1_SHIFTL_24 = bigInt(1).shiftLeft(24);\n// @internal\nexport const BIG_1_SHIFTL_25 = bigInt(1).shiftLeft(25);\n// @internal\nexport const BIG_ARR = [\n bigInt(0),\n bigInt(1),\n bigInt(2),\n bigInt(3),\n bigInt(4),\n bigInt(5),\n bigInt(6),\n bigInt(7),\n bigInt(8),\n bigInt(9),\n bigInt(10),\n bigInt(11),\n bigInt(12),\n bigInt(13),\n bigInt(14),\n bigInt(15),\n bigInt(16),\n bigInt(17),\n bigInt(18),\n bigInt(19),\n bigInt(20),\n bigInt(21),\n bigInt(22),\n bigInt(23),\n bigInt(24),\n bigInt(25),\n bigInt(26)\n];\n// @internal\nexport const BIG_38 = bigInt(38);\n// @internal\nexport const BIG_666643 = bigInt(666643);\n// @internal\nexport const BIG_470296 = bigInt(470296);\n// @internal\nexport const BIG_654183 = bigInt(654183);\n// @internal\nexport const BIG_997805 = bigInt(997805);\n// @internal\nexport const BIG_136657 = bigInt(136657);\n// @internal\nexport const BIG_683901 = bigInt(683901);\n// @internal\nexport const BIG_2097151 = bigInt(2097151);\n// @internal\nexport const BIG_8388607 = bigInt(8388607);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/* eslint-disable newline-per-chained-call */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { BigIntHelper } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport { BIG_1_SHIFTL_24, BIG_1_SHIFTL_25, BIG_38, BIG_8388607, BIG_ARR } from \"./bigIntCommon.mjs\";\n/**\n * Class for field element operations.\n * FieldElement represents an element of the field GF(2^255 - 19). An element\n * t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77\n * t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on\n * context.\n */\nexport class FieldElement {\n /**\n * Create a new instance of FieldElement.\n * @param values A set of values to initialize the array.\n */\n constructor(values) {\n this.data = new Int32Array(FieldElement.FIELD_ELEMENT_SIZE);\n if (values) {\n this.data.set(values);\n }\n }\n /**\n * Calculates h = f * g\n * Can overlap h with f or g.\n *\n * Preconditions:\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n * |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n *\n * Postconditions:\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n *\n * Notes on implementation strategy:\n *\n * Using schoolbook multiplication.\n * Karatsuba would save a little in some cost models.\n *\n * Most multiplications by 2 and 19 are 32-bit precomputations;\n * cheaper than 64-bit postcomputations.\n *\n * There is one remaining multiplication by 19 in the carry chain;\n * one *19 precomputation can be merged into this,\n * but the resulting data flow is considerably less clean.\n *\n * There are 12 carries below.\n * 10 of them are 2-way parallelizable and vectorizable.\n * Can get away with 11 carries, but then data flow is much deeper.\n *\n * With tighter constraints on inputs, can squeeze carries into: number.\n * @param f The f element.\n * @param g The g element.\n */\n mul(f, g) {\n const f0 = bigInt(f.data[0]);\n const f1 = bigInt(f.data[1]);\n const f2 = bigInt(f.data[2]);\n const f3 = bigInt(f.data[3]);\n const f4 = bigInt(f.data[4]);\n const f5 = bigInt(f.data[5]);\n const f6 = bigInt(f.data[6]);\n const f7 = bigInt(f.data[7]);\n const f8 = bigInt(f.data[8]);\n const f9 = bigInt(f.data[9]);\n const f12 = bigInt(2 * f.data[1]);\n const f32 = bigInt(2 * f.data[3]);\n const f52 = bigInt(2 * f.data[5]);\n const f72 = bigInt(2 * f.data[7]);\n const f92 = bigInt(2 * f.data[9]);\n const g0 = bigInt(g.data[0]);\n const g1 = bigInt(g.data[1]);\n const g2 = bigInt(g.data[2]);\n const g3 = bigInt(g.data[3]);\n const g4 = bigInt(g.data[4]);\n const g5 = bigInt(g.data[5]);\n const g6 = bigInt(g.data[6]);\n const g7 = bigInt(g.data[7]);\n const g8 = bigInt(g.data[8]);\n const g9 = bigInt(g.data[9]);\n const g119 = bigInt(19 * g.data[1]); /* 1.4*2^29 */\n const g219 = bigInt(19 * g.data[2]); /* 1.4*2^30; still ok */\n const g319 = bigInt(19 * g.data[3]);\n const g419 = bigInt(19 * g.data[4]);\n const g519 = bigInt(19 * g.data[5]);\n const g619 = bigInt(19 * g.data[6]);\n const g719 = bigInt(19 * g.data[7]);\n const g819 = bigInt(19 * g.data[8]);\n const g919 = bigInt(19 * g.data[9]);\n const h0 = f0\n .times(g0)\n .plus(f12.times(g919))\n .plus(f2.times(g819))\n .plus(f32.times(g719))\n .plus(f4.times(g619))\n .plus(f52.times(g519))\n .plus(f6.times(g419))\n .plus(f72.times(g319))\n .plus(f8.times(g219))\n .plus(f92.times(g119));\n const h1 = f0\n .times(g1)\n .plus(f1.times(g0))\n .plus(f2.times(g919))\n .plus(f3.times(g819))\n .plus(f4.times(g719))\n .plus(f5.times(g619))\n .plus(f6.times(g519))\n .plus(f7.times(g419))\n .plus(f8.times(g319))\n .plus(f9.times(g219));\n const h2 = f0\n .times(g2)\n .plus(f12.times(g1))\n .plus(f2.times(g0))\n .plus(f32.times(g919))\n .plus(f4.times(g819))\n .plus(f52.times(g719))\n .plus(f6.times(g619))\n .plus(f72.times(g519))\n .plus(f8.times(g419))\n .plus(f92.times(g319));\n const h3 = f0\n .times(g3)\n .plus(f1.times(g2))\n .plus(f2.times(g1))\n .plus(f3.times(g0))\n .plus(f4.times(g919))\n .plus(f5.times(g819))\n .plus(f6.times(g719))\n .plus(f7.times(g619))\n .plus(f8.times(g519))\n .plus(f9.times(g419));\n const h4 = f0\n .times(g4)\n .plus(f12.times(g3))\n .plus(f2.times(g2))\n .plus(f32.times(g1))\n .plus(f4.times(g0))\n .plus(f52.times(g919))\n .plus(f6.times(g819))\n .plus(f72.times(g719))\n .plus(f8.times(g619))\n .plus(f92.times(g519));\n const h5 = f0\n .times(g5)\n .plus(f1.times(g4))\n .plus(f2.times(g3))\n .plus(f3.times(g2))\n .plus(f4.times(g1))\n .plus(f5.times(g0))\n .plus(f6.times(g919))\n .plus(f7.times(g819))\n .plus(f8.times(g719))\n .plus(f9.times(g619));\n const h6 = f0\n .times(g6)\n .plus(f12.times(g5))\n .plus(f2.times(g4))\n .plus(f32.times(g3))\n .plus(f4.times(g2))\n .plus(f52.times(g1))\n .plus(f6.times(g0))\n .plus(f72.times(g919))\n .plus(f8.times(g819))\n .plus(f92.times(g719));\n const h7 = f0\n .times(g7)\n .plus(f1.times(g6))\n .plus(f2.times(g5))\n .plus(f3.times(g4))\n .plus(f4.times(g3))\n .plus(f5.times(g2))\n .plus(f6.times(g1))\n .plus(f7.times(g0))\n .plus(f8.times(g919))\n .plus(f9.times(g819));\n const h8 = f0\n .times(g8)\n .plus(f12.times(g7))\n .plus(f2.times(g6))\n .plus(f32.times(g5))\n .plus(f4.times(g4))\n .plus(f52.times(g3))\n .plus(f6.times(g2))\n .plus(f72.times(g1))\n .plus(f8.times(g0))\n .plus(f92.times(g919));\n const h9 = f0\n .times(g9)\n .plus(f1.times(g8))\n .plus(f2.times(g7))\n .plus(f3.times(g6))\n .plus(f4.times(g5))\n .plus(f5.times(g4))\n .plus(f6.times(g3))\n .plus(f7.times(g2))\n .plus(f8.times(g1))\n .plus(f9.times(g0));\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\n }\n /**\n * Combine the element.\n * @param h0 The h0 component.\n * @param h1 The h1 component.\n * @param h2 The h2 component.\n * @param h3 The h3 component.\n * @param h4 The h4 component.\n * @param h5 The h5 component.\n * @param h6 The h6 component.\n * @param h7 The h7 component.\n * @param h8 The h8 component.\n * @param h9 The h9 component.\n */\n combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) {\n let c0;\n let c4;\n /*\n |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38))\n i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8\n |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19))\n i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9\n */\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h1 = h1.plus(c0);\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h5 = h5.plus(c4);\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\n /* |h0| <= 2^25 */\n /* |h4| <= 2^25 */\n /* |h1| <= 1.51*2^58 */\n /* |h5| <= 1.51*2^58 */\n const c1 = h1.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\n h2 = h2.plus(c1);\n h1 = h1.minus(c1.shiftLeft(BIG_ARR[25]));\n const c5 = h5.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\n h6 = h6.plus(c5);\n h5 = h5.minus(c5.shiftLeft(BIG_ARR[25]));\n /* |h1| <= 2^24; from now on fits into: number */\n /* |h5| <= 2^24; from now on fits into: number */\n /* |h2| <= 1.21*2^59 */\n /* |h6| <= 1.21*2^59 */\n const c2 = h2.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h3 = h3.plus(c2);\n h2 = h2.minus(c2.shiftLeft(BIG_ARR[26]));\n const c6 = h6.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h7 = h7.plus(c6);\n h6 = h6.minus(c6.shiftLeft(BIG_ARR[26]));\n /* |h2| <= 2^25; from now on fits into: number unchanged */\n /* |h6| <= 2^25; from now on fits into: number unchanged */\n /* |h3| <= 1.51*2^58 */\n /* |h7| <= 1.51*2^58 */\n const c3 = h3.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\n h4 = h4.plus(c3);\n h3 = h3.minus(c3.shiftLeft(BIG_ARR[25]));\n const c7 = h7.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\n h8 = h8.plus(c7);\n h7 = h7.minus(c7.shiftLeft(BIG_ARR[25]));\n /* |h3| <= 2^24; from now on fits into: number unchanged */\n /* |h7| <= 2^24; from now on fits into: number unchanged */\n /* |h4| <= 1.52*2^33 */\n /* |h8| <= 1.52*2^33 */\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h5 = h5.plus(c4);\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\n const c8 = h8.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h9 = h9.plus(c8);\n h8 = h8.minus(c8.shiftLeft(BIG_ARR[26]));\n /* |h4| <= 2^25; from now on fits into: number unchanged */\n /* |h8| <= 2^25; from now on fits into: number unchanged */\n /* |h5| <= 1.01*2^24 */\n /* |h9| <= 1.51*2^58 */\n const c9 = h9.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\n h0 = h0.plus(c9.times(BIG_ARR[19]));\n h9 = h9.minus(c9.shiftLeft(BIG_ARR[25]));\n /* |h9| <= 2^24; from now on fits into: number unchanged */\n /* |h0| <= 1.8*2^37 */\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\n h1 = h1.plus(c0);\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\n /* |h0| <= 2^25; from now on fits into: number unchanged */\n /* |h1| <= 1.01*2^24 */\n this.data[0] = Number(h0);\n this.data[1] = Number(h1);\n this.data[2] = Number(h2);\n this.data[3] = Number(h3);\n this.data[4] = Number(h4);\n this.data[5] = Number(h5);\n this.data[6] = Number(h6);\n this.data[7] = Number(h7);\n this.data[8] = Number(h8);\n this.data[9] = Number(h9);\n }\n /**\n * FieldElement.square calculates h = f*f. Can overlap h with f.\n *\n * Preconditions:\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n *\n * Postconditions:\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n * @param f The f element.\n */\n square(f) {\n const { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\n }\n /**\n * FieldElement.square calculates h = f*f. Can overlap h with f.\n *\n * Preconditions:\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n *\n * Postconditions:\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n * @param f The f element.\n * @returns The components.\n */\n internalSquare(f) {\n const f0 = bigInt(f.data[0]);\n const f1 = bigInt(f.data[1]);\n const f2 = bigInt(f.data[2]);\n const f3 = bigInt(f.data[3]);\n const f4 = bigInt(f.data[4]);\n const f5 = bigInt(f.data[5]);\n const f6 = bigInt(f.data[6]);\n const f7 = bigInt(f.data[7]);\n const f8 = bigInt(f.data[8]);\n const f9 = bigInt(f.data[9]);\n const f02 = bigInt(2 * f.data[0]);\n const f12 = bigInt(2 * f.data[1]);\n const f22 = bigInt(2 * f.data[2]);\n const f32 = bigInt(2 * f.data[3]);\n const f42 = bigInt(2 * f.data[4]);\n const f52 = bigInt(2 * f.data[5]);\n const f62 = bigInt(2 * f.data[6]);\n const f72 = bigInt(2 * f.data[7]);\n const f538 = BIG_38.times(f5); // 1.31*2^30\n const f619 = BIG_ARR[19].times(f6); // 1.31*2^30\n const f738 = BIG_38.times(f7); // 1.31*2^30\n const f819 = BIG_ARR[19].times(f8); // 1.31*2^30\n const f938 = BIG_38.times(f9); // 1.31*2^30\n return {\n h0: f0\n .times(f0)\n .plus(f12.times(f938))\n .plus(f22.times(f819))\n .plus(f32.times(f738))\n .plus(f42.times(f619))\n .plus(f5.times(f538)),\n h1: f02.times(f1).plus(f2.times(f938)).plus(f32.times(f819)).plus(f4.times(f738)).plus(f52.times(f619)),\n h2: f02\n .times(f2)\n .plus(f12.times(f1))\n .plus(f32.times(f938))\n .plus(f42.times(f819))\n .plus(f52.times(f738))\n .plus(f6.times(f619)),\n h3: f02.times(f3).plus(f12.times(f2)).plus(f4.times(f938)).plus(f52.times(f819)).plus(f6.times(f738)),\n h4: f02\n .times(f4)\n .plus(f12.times(f32))\n .plus(f2.times(f2))\n .plus(f52.times(f938))\n .plus(f62.times(f819))\n .plus(f7.times(f738)),\n h5: f02.times(f5).plus(f12.times(f4)).plus(f22.times(f3)).plus(f6.times(f938)).plus(f72.times(f819)),\n h6: f02\n .times(f6)\n .plus(f12.times(f52))\n .plus(f22.times(f4))\n .plus(f32.times(f3))\n .plus(f72.times(f938))\n .plus(f8.times(f819)),\n h7: f02.times(f7).plus(f12.times(f6)).plus(f22.times(f5)).plus(f32.times(f4)).plus(f8.times(f938)),\n h8: f02\n .times(f8)\n .plus(f12.times(f72))\n .plus(f22.times(f6))\n .plus(f32.times(f52))\n .plus(f4.times(f4))\n .plus(f9.times(f938)),\n h9: f02.times(f9).plus(f12.times(f8)).plus(f22.times(f7)).plus(f32.times(f6)).plus(f42.times(f5))\n };\n }\n /**\n * Square2 sets h = 2 * f * f.\n *\n * Can overlap h with f.\n *\n * Preconditions:\n * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\n *\n * Postconditions:\n * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\n * See fe_mul.c for discussion of implementation strategy.\n * @param f The f element.\n */\n square2(f) {\n let { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\n h0 = h0.plus(h0);\n h1 = h1.plus(h1);\n h2 = h2.plus(h2);\n h3 = h3.plus(h3);\n h4 = h4.plus(h4);\n h5 = h5.plus(h5);\n h6 = h6.plus(h6);\n h7 = h7.plus(h7);\n h8 = h8.plus(h8);\n h9 = h9.plus(h9);\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\n }\n /**\n * Add the elements and store in this.\n * @param a The a element.\n * @param b The b element.\n */\n add(a, b) {\n this.data[0] = a.data[0] + b.data[0];\n this.data[1] = a.data[1] + b.data[1];\n this.data[2] = a.data[2] + b.data[2];\n this.data[3] = a.data[3] + b.data[3];\n this.data[4] = a.data[4] + b.data[4];\n this.data[5] = a.data[5] + b.data[5];\n this.data[6] = a.data[6] + b.data[6];\n this.data[7] = a.data[7] + b.data[7];\n this.data[8] = a.data[8] + b.data[8];\n this.data[9] = a.data[9] + b.data[9];\n }\n /**\n * Subtract the elements and store in this.\n * @param a The a element.\n * @param b The b element.\n */\n sub(a, b) {\n this.data[0] = a.data[0] - b.data[0];\n this.data[1] = a.data[1] - b.data[1];\n this.data[2] = a.data[2] - b.data[2];\n this.data[3] = a.data[3] - b.data[3];\n this.data[4] = a.data[4] - b.data[4];\n this.data[5] = a.data[5] - b.data[5];\n this.data[6] = a.data[6] - b.data[6];\n this.data[7] = a.data[7] - b.data[7];\n this.data[8] = a.data[8] - b.data[8];\n this.data[9] = a.data[9] - b.data[9];\n }\n /**\n * Populate from bytes.\n * @param bytes The bytes to populate from.\n */\n fromBytes(bytes) {\n const h0 = BigIntHelper.read4(bytes, 0);\n const h1 = BigIntHelper.read3(bytes, 4).shiftLeft(BIG_ARR[6]);\n const h2 = BigIntHelper.read3(bytes, 7).shiftLeft(BIG_ARR[5]);\n const h3 = BigIntHelper.read3(bytes, 10).shiftLeft(BIG_ARR[3]);\n const h4 = BigIntHelper.read3(bytes, 13).shiftLeft(BIG_ARR[2]);\n const h5 = BigIntHelper.read4(bytes, 16);\n const h6 = BigIntHelper.read3(bytes, 20).shiftLeft(BIG_ARR[7]);\n const h7 = BigIntHelper.read3(bytes, 23).shiftLeft(BIG_ARR[5]);\n const h8 = BigIntHelper.read3(bytes, 26).shiftLeft(BIG_ARR[4]);\n const h9 = BigIntHelper.read3(bytes, 29).and(BIG_8388607).shiftLeft(BIG_ARR[2]);\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\n }\n /**\n * FieldElement.toBytes marshals h to s.\n * Preconditions:\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n *\n * Write p=2^255-19; q=floor(h/p).\n * Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).\n *\n * Proof:\n * Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.\n * Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4.\n *\n * Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).\n * Then 0> 25;\n q = (this.data[0] + q) >> 26;\n q = (this.data[1] + q) >> 25;\n q = (this.data[2] + q) >> 26;\n q = (this.data[3] + q) >> 25;\n q = (this.data[4] + q) >> 26;\n q = (this.data[5] + q) >> 25;\n q = (this.data[6] + q) >> 26;\n q = (this.data[7] + q) >> 25;\n q = (this.data[8] + q) >> 26;\n q = (this.data[9] + q) >> 25;\n // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20.\n this.data[0] += 19 * q;\n // Goal: Output h-2^255 q, which is between 0 and 2^255-20.\n carry[0] = this.data[0] >> 26;\n this.data[1] += carry[0];\n this.data[0] -= carry[0] << 26;\n carry[1] = this.data[1] >> 25;\n this.data[2] += carry[1];\n this.data[1] -= carry[1] << 25;\n carry[2] = this.data[2] >> 26;\n this.data[3] += carry[2];\n this.data[2] -= carry[2] << 26;\n carry[3] = this.data[3] >> 25;\n this.data[4] += carry[3];\n this.data[3] -= carry[3] << 25;\n carry[4] = this.data[4] >> 26;\n this.data[5] += carry[4];\n this.data[4] -= carry[4] << 26;\n carry[5] = this.data[5] >> 25;\n this.data[6] += carry[5];\n this.data[5] -= carry[5] << 25;\n carry[6] = this.data[6] >> 26;\n this.data[7] += carry[6];\n this.data[6] -= carry[6] << 26;\n carry[7] = this.data[7] >> 25;\n this.data[8] += carry[7];\n this.data[7] -= carry[7] << 25;\n carry[8] = this.data[8] >> 26;\n this.data[9] += carry[8];\n this.data[8] -= carry[8] << 26;\n carry[9] = this.data[9] >> 25;\n this.data[9] -= carry[9] << 25;\n // h10 = carry9\n // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.\n // Have h[0]+...+2^230 h[9] between 0 and 2^255-1;\n // evidently 2^255 h10-2^255 q = 0.\n // Goal: Output h[0]+...+2^230 h[9].\n bytes[0] = Math.trunc(this.data[0]);\n bytes[1] = this.data[0] >> 8;\n bytes[2] = this.data[0] >> 16;\n bytes[3] = (this.data[0] >> 24) | (this.data[1] << 2);\n bytes[4] = this.data[1] >> 6;\n bytes[5] = this.data[1] >> 14;\n bytes[6] = (this.data[1] >> 22) | (this.data[2] << 3);\n bytes[7] = this.data[2] >> 5;\n bytes[8] = this.data[2] >> 13;\n bytes[9] = (this.data[2] >> 21) | (this.data[3] << 5);\n bytes[10] = this.data[3] >> 3;\n bytes[11] = this.data[3] >> 11;\n bytes[12] = (this.data[3] >> 19) | (this.data[4] << 6);\n bytes[13] = this.data[4] >> 2;\n bytes[14] = this.data[4] >> 10;\n bytes[15] = this.data[4] >> 18;\n bytes[16] = Math.trunc(this.data[5]);\n bytes[17] = this.data[5] >> 8;\n bytes[18] = this.data[5] >> 16;\n bytes[19] = (this.data[5] >> 24) | (this.data[6] << 1);\n bytes[20] = this.data[6] >> 7;\n bytes[21] = this.data[6] >> 15;\n bytes[22] = (this.data[6] >> 23) | (this.data[7] << 3);\n bytes[23] = this.data[7] >> 5;\n bytes[24] = this.data[7] >> 13;\n bytes[25] = (this.data[7] >> 21) | (this.data[8] << 4);\n bytes[26] = this.data[8] >> 4;\n bytes[27] = this.data[8] >> 12;\n bytes[28] = (this.data[8] >> 20) | (this.data[9] << 6);\n bytes[29] = this.data[9] >> 2;\n bytes[30] = this.data[9] >> 10;\n bytes[31] = this.data[9] >> 18;\n }\n /**\n * Is the element negative.\n * @returns 1 if its negative.\n */\n isNegative() {\n const s = new Uint8Array(32);\n this.toBytes(s);\n return s[0] & 1;\n }\n /**\n * Is the value non zero.\n * @returns 1 if non zero.\n */\n isNonZero() {\n const s = new Uint8Array(32);\n this.toBytes(s);\n let x = 0;\n for (let i = 0; i < s.length; i++) {\n x |= s[i];\n }\n x |= x >> 4;\n x |= x >> 2;\n x |= x >> 1;\n return x & 1;\n }\n /**\n * Neg sets h = -f.\n *\n * Preconditions:\n * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n *\n * Postconditions:\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n */\n neg() {\n for (let i = 0; i < FieldElement.FIELD_ELEMENT_SIZE; i++) {\n this.data[i] = -this.data[i];\n }\n }\n /**\n * Invert.\n * @param z The elemnt to invert.\n */\n invert(z) {\n const t0 = new FieldElement();\n const t1 = new FieldElement();\n const t2 = new FieldElement();\n const t3 = new FieldElement();\n let i;\n t0.square(z); // 2^1\n t1.square(t0); // 2^2\n for (i = 1; i < 2; i++) {\n // 2^3\n t1.square(t1);\n }\n t1.mul(z, t1); // 2^3 + 2^0\n t0.mul(t0, t1); // 2^3 + 2^1 + 2^0\n t2.square(t0); // 2^4 + 2^2 + 2^1\n t1.mul(t1, t2); // 2^4 + 2^3 + 2^2 + 2^1 + 2^0\n t2.square(t1); // 5,4,3,2,1\n for (i = 1; i < 5; i++) {\n // 9,8,7,6,5\n t2.square(t2);\n }\n t1.mul(t2, t1); // 9,8,7,6,5,4,3,2,1,0\n t2.square(t1); // 10..1\n for (i = 1; i < 10; i++) {\n // 19..10\n t2.square(t2);\n }\n t2.mul(t2, t1); // 19..0\n t3.square(t2); // 20..1\n for (i = 1; i < 20; i++) {\n // 39..20\n t3.square(t3);\n }\n t2.mul(t3, t2); // 39..0\n t2.square(t2); // 40..1\n for (i = 1; i < 10; i++) {\n // 49..10\n t2.square(t2);\n }\n t1.mul(t2, t1); // 49..0\n t2.square(t1); // 50..1\n for (i = 1; i < 50; i++) {\n // 99..50\n t2.square(t2);\n }\n t2.mul(t2, t1); // 99..0\n t3.square(t2); // 100..1\n for (i = 1; i < 100; i++) {\n // 199..100\n t3.square(t3);\n }\n t2.mul(t3, t2); // 199..0\n t2.square(t2); // 200..1\n for (i = 1; i < 50; i++) {\n // 249..50\n t2.square(t2);\n }\n t1.mul(t2, t1); // 249..0\n t1.square(t1); // 250..1\n for (i = 1; i < 5; i++) {\n // 254..5\n t1.square(t1);\n }\n this.mul(t1, t0); // 254..5,3,1,0\n }\n /**\n * Perform the pow 22523 calculate.\n * @param z The element to operate on.\n */\n pow22523(z) {\n const t0 = new FieldElement();\n const t1 = new FieldElement();\n const t2 = new FieldElement();\n let i;\n t0.square(z);\n // for (i = 1; i < 1; i++) {\n // t0.square(t0);\n // }\n t1.square(t0);\n for (i = 1; i < 2; i++) {\n t1.square(t1);\n }\n t1.mul(z, t1);\n t0.mul(t0, t1);\n t0.square(t0);\n // for (i = 1; i < 1; i++) {\n // t0.square(t0);\n // }\n t0.mul(t1, t0);\n t1.square(t0);\n for (i = 1; i < 5; i++) {\n t1.square(t1);\n }\n t0.mul(t1, t0);\n t1.square(t0);\n for (i = 1; i < 10; i++) {\n t1.square(t1);\n }\n t1.mul(t1, t0);\n t2.square(t1);\n for (i = 1; i < 20; i++) {\n t2.square(t2);\n }\n t1.mul(t2, t1);\n t1.square(t1);\n for (i = 1; i < 10; i++) {\n t1.square(t1);\n }\n t0.mul(t1, t0);\n t1.square(t0);\n for (i = 1; i < 50; i++) {\n t1.square(t1);\n }\n t1.mul(t1, t0);\n t2.square(t1);\n for (i = 1; i < 100; i++) {\n t2.square(t2);\n }\n t1.mul(t2, t1);\n t1.square(t1);\n for (i = 1; i < 50; i++) {\n t1.square(t1);\n }\n t0.mul(t1, t0);\n t0.square(t0);\n for (i = 1; i < 2; i++) {\n t0.square(t0);\n }\n this.mul(t0, z);\n }\n /**\n * Replace (f,g) with (g,g) if b == 1;\n * replace (f,g) with (f,g) if b == 0.\n *\n * Preconditions: b in {0,1}.\n * @param g The g element.\n * @param b The b value.\n */\n cMove(g, b) {\n b = -b;\n this.data[0] ^= b & (this.data[0] ^ g.data[0]);\n this.data[1] ^= b & (this.data[1] ^ g.data[1]);\n this.data[2] ^= b & (this.data[2] ^ g.data[2]);\n this.data[3] ^= b & (this.data[3] ^ g.data[3]);\n this.data[4] ^= b & (this.data[4] ^ g.data[4]);\n this.data[5] ^= b & (this.data[5] ^ g.data[5]);\n this.data[6] ^= b & (this.data[6] ^ g.data[6]);\n this.data[7] ^= b & (this.data[7] ^ g.data[7]);\n this.data[8] ^= b & (this.data[8] ^ g.data[8]);\n this.data[9] ^= b & (this.data[9] ^ g.data[9]);\n }\n /**\n * Zero the values.\n */\n zero() {\n this.data.fill(0);\n }\n /**\n * Zero all the values and set the first byte to 1.\n */\n one() {\n this.data.fill(0);\n this.data[0] = 1;\n }\n /**\n * Clone the field element.\n * @returns The clones element.\n */\n clone() {\n return new FieldElement(this.data);\n }\n}\n/**\n * Field element size.\n */\nFieldElement.FIELD_ELEMENT_SIZE = 10;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { FieldElement } from \"./fieldElement.mjs\";\n/**\n * Cached group element.\n */\nexport class CachedGroupElement {\n /**\n * Create a new instance of CachedGroupElement.\n * @param yPlusX Y + X Element.\n * @param yMinusX Y - X Element.\n * @param Z Z Element.\n * @param T2d T2d Element.\n */\n constructor(yPlusX, yMinusX, Z, T2d) {\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\n this.T2d = T2d !== null && T2d !== void 0 ? T2d : new FieldElement();\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { FieldElement } from \"./fieldElement.mjs\";\n/**\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\n * y^2 where d = -121665/121666.\n * CompletedGroupElement: ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T.\n */\nexport class CompletedGroupElement {\n /**\n * Create a new instance of CompletedGroupElement.\n * @param X The X element.\n * @param Y The Y Element.\n * @param Z The Z Element.\n * @param T The T Element.\n */\n constructor(X, Y, Z, T) {\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\n }\n /**\n * Group Element add.\n * @param p The extended group element.\n * @param q The cached group element.\n */\n add(p, q) {\n const t0 = new FieldElement();\n this.X.add(p.Y, p.X);\n this.Y.sub(p.Y, p.X);\n this.Z.mul(this.X, q.yPlusX);\n this.Y.mul(this.Y, q.yMinusX);\n this.T.mul(q.T2d, p.T);\n this.X.mul(p.Z, q.Z);\n t0.add(this.X, this.X);\n this.X.sub(this.Z, this.Y);\n this.Y.add(this.Z, this.Y);\n this.Z.add(t0, this.T);\n this.T.sub(t0, this.T);\n }\n /**\n * Group Element substract.\n * @param p The p.\n * @param q The q.\n */\n sub(p, q) {\n const t0 = new FieldElement();\n this.X.add(p.Y, p.X);\n this.Y.sub(p.Y, p.X);\n this.Z.mul(this.X, q.yMinusX);\n this.Y.mul(this.Y, q.yPlusX);\n this.T.mul(q.T2d, p.T);\n this.X.mul(p.Z, q.Z);\n t0.add(this.X, this.X);\n this.X.sub(this.Z, this.Y);\n this.Y.add(this.Z, this.Y);\n this.Z.sub(t0, this.T);\n this.T.add(t0, this.T);\n }\n /**\n * Mixed add.\n * @param p The p.\n * @param q The q.\n */\n mixedAdd(p, q) {\n const t0 = new FieldElement();\n this.X.add(p.Y, p.X);\n this.Y.sub(p.Y, p.X);\n this.Z.mul(this.X, q.yPlusX);\n this.Y.mul(this.Y, q.yMinusX);\n this.T.mul(q.xy2d, p.T);\n t0.add(p.Z, p.Z);\n this.X.sub(this.Z, this.Y);\n this.Y.add(this.Z, this.Y);\n this.Z.add(t0, this.T);\n this.T.sub(t0, this.T);\n }\n /**\n * Mixed subtract.\n * @param p The p.\n * @param q The q.\n */\n mixedSub(p, q) {\n const t0 = new FieldElement();\n this.X.add(p.Y, p.X);\n this.Y.sub(p.Y, p.X);\n this.Z.mul(this.X, q.yMinusX);\n this.Y.mul(this.Y, q.yPlusX);\n this.T.mul(q.xy2d, p.T);\n t0.add(p.Z, p.Z);\n this.X.sub(this.Z, this.Y);\n this.Y.add(this.Z, this.Y);\n this.Z.sub(t0, this.T);\n this.T.add(t0, this.T);\n }\n /**\n * Convert to projective element.\n * @param p The projective element to fill.\n */\n toProjective(p) {\n p.X.mul(this.X, this.T);\n p.Y.mul(this.Y, this.Z);\n p.Z.mul(this.Z, this.T);\n }\n /**\n * Convert to extended element.\n * @param e The extended element to fill.\n */\n toExtended(e) {\n e.X.mul(this.X, this.T);\n e.Y.mul(this.Y, this.Z);\n e.Z.mul(this.Z, this.T);\n e.T.mul(this.X, this.Y);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { CONST_BASE } from \"./const.mjs\";\nimport { FieldElement } from \"./fieldElement.mjs\";\n/**\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\n * y^2 where d = -121665/121666.\n * PreComputedGroupElement: (y+x,y-x,2dxy).\n */\nexport class PreComputedGroupElement {\n /**\n * Create a new instance of PreComputedGroupElement.\n * @param yPlusX Y + X Element.\n * @param yMinusX Y - X Element.\n * @param xy2d XY2d Element.\n */\n constructor(yPlusX, yMinusX, xy2d) {\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\n this.xy2d = xy2d !== null && xy2d !== void 0 ? xy2d : new FieldElement();\n }\n /**\n * Set the elements to zero.\n */\n zero() {\n this.yPlusX.one();\n this.yMinusX.one();\n this.xy2d.zero();\n }\n /**\n * CMove the pre computed element.\n * @param u The u.\n * @param b The b.\n */\n cMove(u, b) {\n this.yPlusX.cMove(u.yPlusX, b);\n this.yMinusX.cMove(u.yMinusX, b);\n this.xy2d.cMove(u.xy2d, b);\n }\n /**\n * Select point.\n * @param pos The position.\n * @param b The index.\n */\n selectPoint(pos, b) {\n const minusT = new PreComputedGroupElement();\n const bNegative = this.negative(b);\n const bAbs = b - ((-bNegative & b) << 1);\n this.zero();\n for (let i = 0; i < 8; i++) {\n this.cMove(CONST_BASE[pos][i], this.equal(bAbs, i + 1));\n }\n minusT.yPlusX = this.yMinusX.clone();\n minusT.yMinusX = this.yPlusX.clone();\n minusT.xy2d = this.xy2d.clone();\n minusT.xy2d.neg();\n this.cMove(minusT, bNegative);\n }\n /**\n * Negative returns 1 if b < 0 and 0 otherwise.\n * @param b The b.\n * @returns 1 if b < 0 and 0.\n */\n negative(b) {\n return (b >> 31) & 1;\n }\n /**\n * Equal returns 1 if b == c and 0 otherwise, assuming that b and c are\n * non-negative.\n * @param b The b.\n * @param c The c.\n * @returns 1 if b == c and 0.\n */\n equal(b, c) {\n let x = (b ^ c) & 0xffffffff;\n x--;\n return Math.abs(x >> 31);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable array-bracket-newline */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport bigInt from \"big-integer\";\nimport { BIG_ARR } from \"./bigIntCommon.mjs\";\nimport { FieldElement } from \"./fieldElement.mjs\";\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\n// d is a constant in the Edwards curve equation.\nexport const CONST_D = new FieldElement([\n -10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116\n]);\n// d2 is 2*d.\nexport const CONST_D2 = new FieldElement([\n -21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199\n]);\n// SqrtM1 is the square-root of -1 in the field.\nexport const CONST_SQRT_M1 = new FieldElement([\n -32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482\n]);\n// A is a constant in the Montgomery-form of curve25519.\nexport const CONST_A = new FieldElement([486662, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n// order is the order of Curve25519 in little-endian form.\nexport const CONST_ORDER = [\n bigInt(\"5812631A5CF5D3ED\", 16),\n bigInt(\"14DEF9DEA2F79CD6\", 16),\n BIG_ARR[0],\n bigInt(\"1000000000000000\", 16)\n];\n// bi contains precomputed multiples of the base-point. See the Ed25519 paper\n// for a discussion about how these values are used.\nexport const CONST_BI = [\n new PreComputedGroupElement(new FieldElement([\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\n ]), new FieldElement([\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\n ]), new FieldElement([\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\n ]), new FieldElement([\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\n ]), new FieldElement([\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\n ]), new FieldElement([\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\n ]), new FieldElement([\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\n ])),\n new PreComputedGroupElement(new FieldElement([\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\n ]), new FieldElement([\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\n ]), new FieldElement([\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\n ])),\n new PreComputedGroupElement(new FieldElement([\n -22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877\n ]), new FieldElement([\n -6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951\n ]), new FieldElement([\n 4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436\n ]), new FieldElement([\n 25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918\n ]), new FieldElement([\n 23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877\n ])),\n new PreComputedGroupElement(new FieldElement([\n -33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800\n ]), new FieldElement([\n -25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305\n ]), new FieldElement([\n -13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300\n ])),\n new PreComputedGroupElement(new FieldElement([\n -3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876\n ]), new FieldElement([\n -24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619\n ]), new FieldElement([\n -3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683\n ]))\n];\n// base contains precomputed multiples of the base-point. See the Ed25519 paper\n// for a discussion about how these values are used.\nexport const CONST_BASE = [\n [\n new PreComputedGroupElement(new FieldElement([\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\n ]), new FieldElement([\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\n ]), new FieldElement([\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\n ])),\n new PreComputedGroupElement(new FieldElement([\n -12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303\n ]), new FieldElement([\n -21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081\n ]), new FieldElement([\n 26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\n ]), new FieldElement([\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\n ]), new FieldElement([\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\n ])),\n new PreComputedGroupElement(new FieldElement([\n -17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540\n ]), new FieldElement([\n 23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397\n ]), new FieldElement([\n 7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\n ]), new FieldElement([\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\n ]), new FieldElement([\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\n ])),\n new PreComputedGroupElement(new FieldElement([\n -15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777\n ]), new FieldElement([\n -8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737\n ]), new FieldElement([\n -18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652\n ])),\n new PreComputedGroupElement(new FieldElement([\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\n ]), new FieldElement([\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\n ]), new FieldElement([\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\n ])),\n new PreComputedGroupElement(new FieldElement([\n 14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726\n ]), new FieldElement([\n -7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955\n ]), new FieldElement([\n 27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171\n ]), new FieldElement([\n 27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510\n ]), new FieldElement([\n 17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660\n ])),\n new PreComputedGroupElement(new FieldElement([\n -10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639\n ]), new FieldElement([\n 29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963\n ]), new FieldElement([\n 5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950\n ])),\n new PreComputedGroupElement(new FieldElement([\n -27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568\n ]), new FieldElement([\n 12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335\n ]), new FieldElement([\n 25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628\n ])),\n new PreComputedGroupElement(new FieldElement([\n -26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007\n ]), new FieldElement([\n -2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772\n ]), new FieldElement([\n -22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653\n ])),\n new PreComputedGroupElement(new FieldElement([\n 2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567\n ]), new FieldElement([\n 13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686\n ]), new FieldElement([\n 21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372\n ])),\n new PreComputedGroupElement(new FieldElement([\n -13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887\n ]), new FieldElement([\n -23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954\n ]), new FieldElement([\n -29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953\n ])),\n new PreComputedGroupElement(new FieldElement([\n 24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833\n ]), new FieldElement([\n -16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532\n ]), new FieldElement([\n -22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876\n ])),\n new PreComputedGroupElement(new FieldElement([\n 2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268\n ]), new FieldElement([\n 33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214\n ]), new FieldElement([\n 1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800\n ]), new FieldElement([\n 4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645\n ]), new FieldElement([\n -4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664\n ])),\n new PreComputedGroupElement(new FieldElement([\n 1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933\n ]), new FieldElement([\n -25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182\n ]), new FieldElement([\n -17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222\n ])),\n new PreComputedGroupElement(new FieldElement([\n -18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991\n ]), new FieldElement([\n 20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880\n ]), new FieldElement([\n 9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092\n ])),\n new PreComputedGroupElement(new FieldElement([\n -16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295\n ]), new FieldElement([\n 19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788\n ]), new FieldElement([\n 8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553\n ])),\n new PreComputedGroupElement(new FieldElement([\n -15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026\n ]), new FieldElement([\n 11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347\n ]), new FieldElement([\n -18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395\n ]), new FieldElement([\n -27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278\n ]), new FieldElement([\n 1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890\n ])),\n new PreComputedGroupElement(new FieldElement([\n 32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995\n ]), new FieldElement([\n -30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596\n ]), new FieldElement([\n -11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060\n ]), new FieldElement([\n 11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608\n ]), new FieldElement([\n -20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389\n ]), new FieldElement([\n -19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016\n ]), new FieldElement([\n -11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341\n ])),\n new PreComputedGroupElement(new FieldElement([\n -22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505\n ]), new FieldElement([\n 14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553\n ]), new FieldElement([\n -28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220\n ]), new FieldElement([\n 12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631\n ]), new FieldElement([\n -4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099\n ])),\n new PreComputedGroupElement(new FieldElement([\n 26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556\n ]), new FieldElement([\n 14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749\n ]), new FieldElement([\n 236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930\n ])),\n new PreComputedGroupElement(new FieldElement([\n 1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391\n ]), new FieldElement([\n 5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253\n ]), new FieldElement([\n 20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066\n ])),\n new PreComputedGroupElement(new FieldElement([\n 24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958\n ]), new FieldElement([\n -11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082\n ]), new FieldElement([\n -28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383\n ])),\n new PreComputedGroupElement(new FieldElement([\n -30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521\n ]), new FieldElement([\n -11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807\n ]), new FieldElement([\n 23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948\n ])),\n new PreComputedGroupElement(new FieldElement([\n 9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134\n ]), new FieldElement([\n -32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455\n ]), new FieldElement([\n 27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069\n ]), new FieldElement([\n -32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746\n ]), new FieldElement([\n 24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919\n ])),\n new PreComputedGroupElement(new FieldElement([\n 11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837\n ]), new FieldElement([\n 8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906\n ]), new FieldElement([\n -28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817\n ]), new FieldElement([\n 10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098\n ]), new FieldElement([\n 10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409\n ])),\n new PreComputedGroupElement(new FieldElement([\n -12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504\n ]), new FieldElement([\n -26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727\n ]), new FieldElement([\n 28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420\n ])),\n new PreComputedGroupElement(new FieldElement([\n -32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003\n ]), new FieldElement([\n -1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605\n ]), new FieldElement([\n -30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384\n ])),\n new PreComputedGroupElement(new FieldElement([\n -26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701\n ]), new FieldElement([\n -23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683\n ]), new FieldElement([\n 29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708\n ])),\n new PreComputedGroupElement(new FieldElement([\n -3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563\n ]), new FieldElement([\n -19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260\n ]), new FieldElement([\n -5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387\n ])),\n new PreComputedGroupElement(new FieldElement([\n -19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870,\n 15664672\n ]), new FieldElement([\n 23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686\n ]), new FieldElement([\n -24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182\n ]), new FieldElement([\n -31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277\n ]), new FieldElement([\n 14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474\n ]), new FieldElement([\n -26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539\n ]), new FieldElement([\n -25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822\n ])),\n new PreComputedGroupElement(new FieldElement([\n -10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970\n ]), new FieldElement([\n 19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756\n ]), new FieldElement([\n -24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508\n ])),\n new PreComputedGroupElement(new FieldElement([\n -26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683\n ]), new FieldElement([\n -10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655\n ]), new FieldElement([\n -20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125\n ]), new FieldElement([\n -15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839\n ]), new FieldElement([\n -20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664\n ])),\n new PreComputedGroupElement(new FieldElement([\n 27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294\n ]), new FieldElement([\n -18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899\n ]), new FieldElement([\n -11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070\n ])),\n new PreComputedGroupElement(new FieldElement([\n 3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294\n ]), new FieldElement([\n -15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949\n ]), new FieldElement([\n -21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420\n ]), new FieldElement([\n -5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940\n ]), new FieldElement([\n 29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567\n ]), new FieldElement([\n 20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127\n ]), new FieldElement([\n -16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294\n ])),\n new PreComputedGroupElement(new FieldElement([\n -12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887\n ]), new FieldElement([\n 22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964\n ]), new FieldElement([\n 16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195\n ])),\n new PreComputedGroupElement(new FieldElement([\n 9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244\n ]), new FieldElement([\n 24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999\n ]), new FieldElement([\n -1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762\n ])),\n new PreComputedGroupElement(new FieldElement([\n -18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274\n ]), new FieldElement([\n -33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236\n ]), new FieldElement([\n -16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605\n ])),\n new PreComputedGroupElement(new FieldElement([\n -13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761\n ]), new FieldElement([\n -22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884\n ]), new FieldElement([\n -6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482\n ])),\n new PreComputedGroupElement(new FieldElement([\n -24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638\n ]), new FieldElement([\n -11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490\n ]), new FieldElement([\n -32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170\n ])),\n new PreComputedGroupElement(new FieldElement([\n 5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736\n ]), new FieldElement([\n 10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124\n ]), new FieldElement([\n -17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392\n ])),\n new PreComputedGroupElement(new FieldElement([\n 8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029\n ]), new FieldElement([\n 6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048\n ]), new FieldElement([\n 28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593\n ]), new FieldElement([\n 26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071\n ]), new FieldElement([\n -11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692\n ])),\n new PreComputedGroupElement(new FieldElement([\n 11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687\n ]), new FieldElement([\n -160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441\n ]), new FieldElement([\n -20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001\n ])),\n new PreComputedGroupElement(new FieldElement([\n -938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460\n ]), new FieldElement([\n -19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007\n ]), new FieldElement([\n -21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005\n ]), new FieldElement([\n -9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674\n ]), new FieldElement([\n 4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035\n ])),\n new PreComputedGroupElement(new FieldElement([\n 7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590\n ]), new FieldElement([\n -2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957\n ]), new FieldElement([\n -30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812\n ])),\n new PreComputedGroupElement(new FieldElement([\n 33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740\n ]), new FieldElement([\n -18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122\n ]), new FieldElement([\n -27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158\n ])),\n new PreComputedGroupElement(new FieldElement([\n 8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885\n ]), new FieldElement([\n 26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140\n ]), new FieldElement([\n 19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857\n ])),\n new PreComputedGroupElement(new FieldElement([\n 801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155\n ]), new FieldElement([\n 19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260\n ]), new FieldElement([\n 19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677\n ]), new FieldElement([\n 32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815\n ]), new FieldElement([\n 22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751\n ])),\n new PreComputedGroupElement(new FieldElement([\n -16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203\n ]), new FieldElement([\n -11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208\n ]), new FieldElement([\n 1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850\n ]), new FieldElement([\n -21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389\n ]), new FieldElement([\n -9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968\n ])),\n new PreComputedGroupElement(new FieldElement([\n -11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689\n ]), new FieldElement([\n 14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880\n ]), new FieldElement([\n 5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632\n ]), new FieldElement([\n -3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412\n ]), new FieldElement([\n 20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566\n ])),\n new PreComputedGroupElement(new FieldElement([\n -20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038\n ]), new FieldElement([\n -26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232\n ]), new FieldElement([\n -1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943\n ])),\n new PreComputedGroupElement(new FieldElement([\n 17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856\n ]), new FieldElement([\n 23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738\n ]), new FieldElement([\n 15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971\n ])),\n new PreComputedGroupElement(new FieldElement([\n -27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718\n ]), new FieldElement([\n -13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697\n ]), new FieldElement([\n -11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912\n ]), new FieldElement([\n -26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358\n ]), new FieldElement([\n 3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849\n ])),\n new PreComputedGroupElement(new FieldElement([\n 29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307\n ]), new FieldElement([\n -14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977\n ]), new FieldElement([\n -6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335\n ])),\n new PreComputedGroupElement(new FieldElement([\n -29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831,\n 15026644\n ]), new FieldElement([\n -22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616\n ]), new FieldElement([\n -27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735\n ])),\n new PreComputedGroupElement(new FieldElement([\n -21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099\n ]), new FieldElement([\n 29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341\n ]), new FieldElement([\n -936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646\n ]), new FieldElement([\n 31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425\n ]), new FieldElement([\n -17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388\n ])),\n new PreComputedGroupElement(new FieldElement([\n -31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743\n ]), new FieldElement([\n -16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822\n ]), new FieldElement([\n -8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462\n ])),\n new PreComputedGroupElement(new FieldElement([\n 18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985\n ]), new FieldElement([\n 9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702\n ]), new FieldElement([\n -22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797\n ])),\n new PreComputedGroupElement(new FieldElement([\n 21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293\n ]), new FieldElement([\n 27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100\n ]), new FieldElement([\n 19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186\n ]), new FieldElement([\n 2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610\n ]), new FieldElement([\n -2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707\n ])),\n new PreComputedGroupElement(new FieldElement([\n 7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220\n ]), new FieldElement([\n 915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025\n ]), new FieldElement([\n 32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044\n ])),\n new PreComputedGroupElement(new FieldElement([\n 32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992\n ]), new FieldElement([\n -4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027\n ]), new FieldElement([\n 21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197\n ])),\n new PreComputedGroupElement(new FieldElement([\n 8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901\n ]), new FieldElement([\n 31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952\n ]), new FieldElement([\n 19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878\n ])),\n new PreComputedGroupElement(new FieldElement([\n -28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390\n ]), new FieldElement([\n 32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730\n ]), new FieldElement([\n 2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730\n ])),\n new PreComputedGroupElement(new FieldElement([\n -19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180\n ]), new FieldElement([\n -30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272\n ]), new FieldElement([\n -15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715\n ])),\n new PreComputedGroupElement(new FieldElement([\n -22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970\n ]), new FieldElement([\n -31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772\n ]), new FieldElement([\n -17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750\n ]), new FieldElement([\n 20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373\n ]), new FieldElement([\n 32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144\n ]), new FieldElement([\n -22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195\n ]), new FieldElement([\n 5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086\n ])),\n new PreComputedGroupElement(new FieldElement([\n -13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684\n ]), new FieldElement([\n -8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518\n ]), new FieldElement([\n -2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233\n ])),\n new PreComputedGroupElement(new FieldElement([\n -5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793\n ]), new FieldElement([\n -2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794\n ]), new FieldElement([\n 580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435\n ])),\n new PreComputedGroupElement(new FieldElement([\n 23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921\n ]), new FieldElement([\n 13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518\n ]), new FieldElement([\n 2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563\n ])),\n new PreComputedGroupElement(new FieldElement([\n 14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278\n ]), new FieldElement([\n -27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024\n ]), new FieldElement([\n 4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783\n ]), new FieldElement([\n 27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717\n ]), new FieldElement([\n 6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844\n ])),\n new PreComputedGroupElement(new FieldElement([\n 14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333\n ]), new FieldElement([\n 16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048\n ]), new FieldElement([\n 22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760\n ]), new FieldElement([\n -15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757\n ]), new FieldElement([\n -2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468\n ]), new FieldElement([\n 3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184\n ]), new FieldElement([\n 10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066\n ]), new FieldElement([\n 24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882\n ]), new FieldElement([\n 13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101\n ]), new FieldElement([\n 29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279\n ]), new FieldElement([\n -6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811\n ])),\n new PreComputedGroupElement(new FieldElement([\n 27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709\n ]), new FieldElement([\n 20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714\n ]), new FieldElement([\n -2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121\n ])),\n new PreComputedGroupElement(new FieldElement([\n 9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464\n ]), new FieldElement([\n 12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847\n ]), new FieldElement([\n 13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400\n ])),\n new PreComputedGroupElement(new FieldElement([\n 4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414\n ]), new FieldElement([\n -15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158\n ]), new FieldElement([\n 17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045\n ])),\n new PreComputedGroupElement(new FieldElement([\n -461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415\n ]), new FieldElement([\n -5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459\n ]), new FieldElement([\n -31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079\n ])),\n new PreComputedGroupElement(new FieldElement([\n 21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412\n ]), new FieldElement([\n -20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743\n ]), new FieldElement([\n -14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022\n ]), new FieldElement([\n 18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429\n ]), new FieldElement([\n -6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861\n ]), new FieldElement([\n 10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000\n ]), new FieldElement([\n -33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101\n ])),\n new PreComputedGroupElement(new FieldElement([\n 32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815\n ]), new FieldElement([\n 29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642\n ]), new FieldElement([\n 10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966\n ])),\n new PreComputedGroupElement(new FieldElement([\n 25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574\n ]), new FieldElement([\n -21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742\n ]), new FieldElement([\n -18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689\n ])),\n new PreComputedGroupElement(new FieldElement([\n 12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020\n ]), new FieldElement([\n -10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772\n ]), new FieldElement([\n 3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982\n ])),\n new PreComputedGroupElement(new FieldElement([\n -14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953\n ]), new FieldElement([\n -16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218\n ]), new FieldElement([\n -17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265\n ])),\n new PreComputedGroupElement(new FieldElement([\n 29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073\n ]), new FieldElement([\n -3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325\n ]), new FieldElement([\n -11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870\n ]), new FieldElement([\n -7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863\n ]), new FieldElement([\n -13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267\n ]), new FieldElement([\n -9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663\n ]), new FieldElement([\n 22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673\n ]), new FieldElement([\n 15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943\n ]), new FieldElement([\n 15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238\n ]), new FieldElement([\n 11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064\n ]), new FieldElement([\n 14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052\n ]), new FieldElement([\n -10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904\n ]), new FieldElement([\n 29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531\n ])),\n new PreComputedGroupElement(new FieldElement([\n -13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979\n ]), new FieldElement([\n -5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841\n ]), new FieldElement([\n 10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324\n ]), new FieldElement([\n -31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940\n ]), new FieldElement([\n 10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320\n ])),\n new PreComputedGroupElement(new FieldElement([\n -15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184\n ]), new FieldElement([\n 14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114\n ]), new FieldElement([\n 30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878\n ])),\n new PreComputedGroupElement(new FieldElement([\n 12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784\n ]), new FieldElement([\n -2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091\n ]), new FieldElement([\n -16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208\n ]), new FieldElement([\n 10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864\n ]), new FieldElement([\n 17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661\n ])),\n new PreComputedGroupElement(new FieldElement([\n 7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233\n ]), new FieldElement([\n 26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212\n ]), new FieldElement([\n -12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525\n ])),\n new PreComputedGroupElement(new FieldElement([\n -24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068\n ]), new FieldElement([\n 9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397\n ]), new FieldElement([\n -8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988\n ])),\n new PreComputedGroupElement(new FieldElement([\n 5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889\n ]), new FieldElement([\n 32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038\n ]), new FieldElement([\n 14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697\n ])),\n new PreComputedGroupElement(new FieldElement([\n 20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875\n ]), new FieldElement([\n -25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905\n ]), new FieldElement([\n -25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656\n ])),\n new PreComputedGroupElement(new FieldElement([\n 11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818\n ]), new FieldElement([\n 27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714\n ]), new FieldElement([\n 10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203\n ])),\n new PreComputedGroupElement(new FieldElement([\n 20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931\n ]), new FieldElement([\n -30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024\n ]), new FieldElement([\n -23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084\n ])),\n new PreComputedGroupElement(new FieldElement([\n -1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204\n ]), new FieldElement([\n 20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817\n ]), new FieldElement([\n 27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504\n ]), new FieldElement([\n -12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768\n ]), new FieldElement([\n -19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255\n ])),\n new PreComputedGroupElement(new FieldElement([\n 6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790\n ]), new FieldElement([\n 1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438\n ]), new FieldElement([\n -22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333\n ])),\n new PreComputedGroupElement(new FieldElement([\n 17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971\n ]), new FieldElement([\n 31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905\n ]), new FieldElement([\n 29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409\n ])),\n new PreComputedGroupElement(new FieldElement([\n 12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409\n ]), new FieldElement([\n 6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499\n ]), new FieldElement([\n -8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363\n ])),\n new PreComputedGroupElement(new FieldElement([\n 28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664\n ]), new FieldElement([\n -11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324\n ]), new FieldElement([\n -21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940\n ])),\n new PreComputedGroupElement(new FieldElement([\n 13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990\n ]), new FieldElement([\n -17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914\n ]), new FieldElement([\n -25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290\n ])),\n new PreComputedGroupElement(new FieldElement([\n 24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257\n ]), new FieldElement([\n -6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433\n ]), new FieldElement([\n -16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236\n ])),\n new PreComputedGroupElement(new FieldElement([\n -12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045\n ]), new FieldElement([\n 11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093\n ]), new FieldElement([\n -1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191\n ]), new FieldElement([\n -15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507\n ]), new FieldElement([\n -12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906\n ])),\n new PreComputedGroupElement(new FieldElement([\n 3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018\n ]), new FieldElement([\n -16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109\n ]), new FieldElement([\n -23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926\n ])),\n new PreComputedGroupElement(new FieldElement([\n -24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528\n ]), new FieldElement([\n 8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625\n ]), new FieldElement([\n -32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286\n ])),\n new PreComputedGroupElement(new FieldElement([\n 2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033\n ]), new FieldElement([\n 27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866\n ]), new FieldElement([\n 21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075\n ]), new FieldElement([\n 26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347\n ]), new FieldElement([\n -22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437\n ])),\n new PreComputedGroupElement(new FieldElement([\n -5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165\n ]), new FieldElement([\n -18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588\n ]), new FieldElement([\n -32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193\n ])),\n new PreComputedGroupElement(new FieldElement([\n -19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017\n ]), new FieldElement([\n -28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883\n ]), new FieldElement([\n 21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961\n ])),\n new PreComputedGroupElement(new FieldElement([\n 8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043\n ]), new FieldElement([\n 29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663\n ]), new FieldElement([\n -20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860\n ]), new FieldElement([\n 2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466\n ]), new FieldElement([\n -24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063\n ])),\n new PreComputedGroupElement(new FieldElement([\n -26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997\n ]), new FieldElement([\n -1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295\n ]), new FieldElement([\n -13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369\n ])),\n new PreComputedGroupElement(new FieldElement([\n 9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385\n ]), new FieldElement([\n 18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109\n ]), new FieldElement([\n 2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906\n ])),\n new PreComputedGroupElement(new FieldElement([\n 4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424\n ]), new FieldElement([\n -19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185\n ]), new FieldElement([\n 7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962\n ])),\n new PreComputedGroupElement(new FieldElement([\n -7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325\n ]), new FieldElement([\n 10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593\n ]), new FieldElement([\n 696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404\n ])),\n new PreComputedGroupElement(new FieldElement([\n -11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644\n ]), new FieldElement([\n 17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801\n ]), new FieldElement([\n 26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804\n ])),\n new PreComputedGroupElement(new FieldElement([\n -31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884\n ]), new FieldElement([\n -586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577\n ]), new FieldElement([\n -9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849\n ])),\n new PreComputedGroupElement(new FieldElement([\n 32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473\n ]), new FieldElement([\n -8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644\n ]), new FieldElement([\n -2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599\n ]), new FieldElement([\n -9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768\n ]), new FieldElement([\n -27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084\n ])),\n new PreComputedGroupElement(new FieldElement([\n -27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328\n ]), new FieldElement([\n -15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369\n ]), new FieldElement([\n 20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920\n ])),\n new PreComputedGroupElement(new FieldElement([\n 12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815\n ]), new FieldElement([\n -32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025\n ]), new FieldElement([\n -21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397\n ])),\n new PreComputedGroupElement(new FieldElement([\n -20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448\n ]), new FieldElement([\n 6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981\n ]), new FieldElement([\n 30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165\n ])),\n new PreComputedGroupElement(new FieldElement([\n 32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501\n ]), new FieldElement([\n 17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073\n ]), new FieldElement([\n -1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861\n ])),\n new PreComputedGroupElement(new FieldElement([\n 14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845\n ]), new FieldElement([\n -1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211\n ]), new FieldElement([\n 18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096\n ]), new FieldElement([\n 33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803\n ]), new FieldElement([\n -32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965\n ]), new FieldElement([\n -14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505\n ]), new FieldElement([\n 18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782\n ]), new FieldElement([\n 5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900\n ]), new FieldElement([\n -31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479\n ])),\n new PreComputedGroupElement(new FieldElement([\n -12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208\n ]), new FieldElement([\n 8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232\n ]), new FieldElement([\n 17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271\n ]), new FieldElement([\n -4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326\n ]), new FieldElement([\n -8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132\n ])),\n new PreComputedGroupElement(new FieldElement([\n 14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300\n ]), new FieldElement([\n 8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570\n ]), new FieldElement([\n 15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670\n ])),\n new PreComputedGroupElement(new FieldElement([\n -2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994\n ]), new FieldElement([\n -12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913\n ]), new FieldElement([\n 31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730\n ]), new FieldElement([\n 842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096\n ]), new FieldElement([\n -4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078\n ])),\n new PreComputedGroupElement(new FieldElement([\n -15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411\n ]), new FieldElement([\n -19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905\n ]), new FieldElement([\n -9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654\n ])),\n new PreComputedGroupElement(new FieldElement([\n -28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870\n ]), new FieldElement([\n -23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498\n ]), new FieldElement([\n 12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677\n ]), new FieldElement([\n 10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647\n ]), new FieldElement([\n -2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468\n ]), new FieldElement([\n 21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375\n ]), new FieldElement([\n -25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155\n ])),\n new PreComputedGroupElement(new FieldElement([\n 6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725\n ]), new FieldElement([\n -12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612\n ]), new FieldElement([\n -10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943\n ])),\n new PreComputedGroupElement(new FieldElement([\n -30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944\n ]), new FieldElement([\n 30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928\n ]), new FieldElement([\n 9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406\n ])),\n new PreComputedGroupElement(new FieldElement([\n 22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139\n ]), new FieldElement([\n -8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963\n ]), new FieldElement([\n -31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693\n ])),\n new PreComputedGroupElement(new FieldElement([\n 1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734\n ]), new FieldElement([\n -448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680\n ]), new FieldElement([\n -24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410\n ])),\n new PreComputedGroupElement(new FieldElement([\n -9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931\n ]), new FieldElement([\n -16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654\n ]), new FieldElement([\n 22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710\n ])),\n new PreComputedGroupElement(new FieldElement([\n 29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180\n ]), new FieldElement([\n -26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684\n ]), new FieldElement([\n -10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501\n ]), new FieldElement([\n -11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413\n ]), new FieldElement([\n 6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880\n ])),\n new PreComputedGroupElement(new FieldElement([\n -8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874\n ]), new FieldElement([\n 22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962\n ]), new FieldElement([\n -7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899\n ])),\n new PreComputedGroupElement(new FieldElement([\n 21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152\n ]), new FieldElement([\n 9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063\n ]), new FieldElement([\n 7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080\n ])),\n new PreComputedGroupElement(new FieldElement([\n -9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146\n ]), new FieldElement([\n -17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183\n ]), new FieldElement([\n -19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133\n ])),\n new PreComputedGroupElement(new FieldElement([\n -32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421\n ]), new FieldElement([\n -3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622\n ]), new FieldElement([\n -4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197\n ])),\n new PreComputedGroupElement(new FieldElement([\n 2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663\n ]), new FieldElement([\n 31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753\n ]), new FieldElement([\n 4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755\n ])),\n new PreComputedGroupElement(new FieldElement([\n -9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862\n ]), new FieldElement([\n -26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118\n ]), new FieldElement([\n 26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380\n ]), new FieldElement([\n 16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824\n ]), new FieldElement([\n 28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438\n ]), new FieldElement([\n -31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584\n ]), new FieldElement([\n -594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471\n ]), new FieldElement([\n 18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610\n ]), new FieldElement([\n 19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269\n ])),\n new PreComputedGroupElement(new FieldElement([\n -30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650\n ]), new FieldElement([\n 14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369\n ]), new FieldElement([\n 19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462\n ]), new FieldElement([\n -5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793\n ]), new FieldElement([\n -2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218\n ])),\n new PreComputedGroupElement(new FieldElement([\n -24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226\n ]), new FieldElement([\n 18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019\n ]), new FieldElement([\n -15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171\n ]), new FieldElement([\n -17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132\n ]), new FieldElement([\n -28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841\n ])),\n new PreComputedGroupElement(new FieldElement([\n 21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181\n ]), new FieldElement([\n -33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210\n ]), new FieldElement([\n -1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040\n ])),\n new PreComputedGroupElement(new FieldElement([\n 3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935\n ]), new FieldElement([\n 24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105\n ]), new FieldElement([\n -28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852\n ]), new FieldElement([\n 5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581\n ]), new FieldElement([\n -4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646\n ])),\n new PreComputedGroupElement(new FieldElement([\n 10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844\n ]), new FieldElement([\n 10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025\n ]), new FieldElement([\n 27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068\n ]), new FieldElement([\n 4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192\n ]), new FieldElement([\n -17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921\n ])),\n new PreComputedGroupElement(new FieldElement([\n -9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259\n ]), new FieldElement([\n -12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426\n ]), new FieldElement([\n -5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072\n ])),\n new PreComputedGroupElement(new FieldElement([\n -17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305\n ]), new FieldElement([\n 13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204,\n -9421832\n ]), new FieldElement([\n 28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943\n ])),\n new PreComputedGroupElement(new FieldElement([\n -16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011\n ]), new FieldElement([\n 24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447\n ]), new FieldElement([\n 17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494\n ])),\n new PreComputedGroupElement(new FieldElement([\n -28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245\n ]), new FieldElement([\n -20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859\n ]), new FieldElement([\n 28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707\n ]), new FieldElement([\n 10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848\n ]), new FieldElement([\n -11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391\n ]), new FieldElement([\n 15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215\n ]), new FieldElement([\n -23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101\n ])),\n new PreComputedGroupElement(new FieldElement([\n 23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713\n ]), new FieldElement([\n 21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849\n ]), new FieldElement([\n -7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930\n ])),\n new PreComputedGroupElement(new FieldElement([\n -29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940\n ]), new FieldElement([\n -21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031\n ]), new FieldElement([\n -17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243\n ]), new FieldElement([\n -23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116\n ]), new FieldElement([\n -24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509\n ]), new FieldElement([\n -10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883\n ]), new FieldElement([\n 15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865\n ])),\n new PreComputedGroupElement(new FieldElement([\n -3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660\n ]), new FieldElement([\n 4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273\n ]), new FieldElement([\n -28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560\n ]), new FieldElement([\n -10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135\n ]), new FieldElement([\n 2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941\n ])),\n new PreComputedGroupElement(new FieldElement([\n -4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739\n ]), new FieldElement([\n 18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756\n ]), new FieldElement([\n -30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347\n ]), new FieldElement([\n -27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028\n ]), new FieldElement([\n 21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799\n ]), new FieldElement([\n -2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609\n ]), new FieldElement([\n -25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989\n ]), new FieldElement([\n -30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523\n ]), new FieldElement([\n 4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045\n ]), new FieldElement([\n 19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377\n ]), new FieldElement([\n 24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480\n ])),\n new PreComputedGroupElement(new FieldElement([\n 17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016\n ]), new FieldElement([\n 510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426\n ]), new FieldElement([\n 18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525\n ])),\n new PreComputedGroupElement(new FieldElement([\n 13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396\n ]), new FieldElement([\n 9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080\n ]), new FieldElement([\n 12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892\n ])),\n new PreComputedGroupElement(new FieldElement([\n 15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275\n ]), new FieldElement([\n 11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074\n ]), new FieldElement([\n 20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140\n ])),\n new PreComputedGroupElement(new FieldElement([\n -16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717\n ]), new FieldElement([\n -1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101\n ]), new FieldElement([\n 24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632\n ]), new FieldElement([\n -26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415\n ]), new FieldElement([\n -31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876\n ]), new FieldElement([\n 22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625\n ]), new FieldElement([\n -15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478\n ])),\n new PreComputedGroupElement(new FieldElement([\n 27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164\n ]), new FieldElement([\n 26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595\n ]), new FieldElement([\n -7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248\n ])),\n new PreComputedGroupElement(new FieldElement([\n -16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858\n ]), new FieldElement([\n 15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193\n ]), new FieldElement([\n 8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184\n ])),\n new PreComputedGroupElement(new FieldElement([\n -18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942\n ]), new FieldElement([\n -1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635\n ]), new FieldElement([\n 21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948\n ])),\n new PreComputedGroupElement(new FieldElement([\n 11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935\n ]), new FieldElement([\n -25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415\n ]), new FieldElement([\n -15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416\n ])),\n new PreComputedGroupElement(new FieldElement([\n -7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018\n ]), new FieldElement([\n 4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778\n ]), new FieldElement([\n 366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659\n ])),\n new PreComputedGroupElement(new FieldElement([\n -24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385\n ]), new FieldElement([\n 18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503\n ]), new FieldElement([\n 476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056\n ]), new FieldElement([\n -13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838\n ]), new FieldElement([\n 24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948\n ])),\n new PreComputedGroupElement(new FieldElement([\n -3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691\n ]), new FieldElement([\n -15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118\n ]), new FieldElement([\n -23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517\n ])),\n new PreComputedGroupElement(new FieldElement([\n -20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269\n ]), new FieldElement([\n -6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904\n ]), new FieldElement([\n -23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589\n ])),\n new PreComputedGroupElement(new FieldElement([\n -28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193\n ]), new FieldElement([\n -7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910\n ]), new FieldElement([\n -30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930\n ])),\n new PreComputedGroupElement(new FieldElement([\n -7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667\n ]), new FieldElement([\n 25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481\n ]), new FieldElement([\n -9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876\n ])),\n new PreComputedGroupElement(new FieldElement([\n 22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640\n ]), new FieldElement([\n -8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278\n ]), new FieldElement([\n -21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112\n ])),\n new PreComputedGroupElement(new FieldElement([\n 26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272\n ]), new FieldElement([\n 17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012\n ]), new FieldElement([\n -10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046\n ]), new FieldElement([\n 13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345\n ]), new FieldElement([\n -19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937\n ]), new FieldElement([\n 31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636\n ]), new FieldElement([\n -9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008\n ])),\n new PreComputedGroupElement(new FieldElement([\n -2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429\n ]), new FieldElement([\n -15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576\n ]), new FieldElement([\n 31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066\n ])),\n new PreComputedGroupElement(new FieldElement([\n -9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490\n ]), new FieldElement([\n -12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104\n ]), new FieldElement([\n 33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053\n ])),\n new PreComputedGroupElement(new FieldElement([\n 31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275\n ]), new FieldElement([\n -20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511\n ]), new FieldElement([\n 22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095\n ])),\n new PreComputedGroupElement(new FieldElement([\n -28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439\n ]), new FieldElement([\n 23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939\n ]), new FieldElement([\n -23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424\n ])),\n new PreComputedGroupElement(new FieldElement([\n 2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310\n ]), new FieldElement([\n 3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608\n ]), new FieldElement([\n -32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101\n ]), new FieldElement([\n 21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418\n ]), new FieldElement([\n 18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356\n ]), new FieldElement([\n 9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996\n ]), new FieldElement([\n -26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n -26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728\n ]), new FieldElement([\n -13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658\n ]), new FieldElement([\n -10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242\n ])),\n new PreComputedGroupElement(new FieldElement([\n -21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001\n ]), new FieldElement([\n -4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766\n ]), new FieldElement([\n 18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373\n ])),\n new PreComputedGroupElement(new FieldElement([\n 26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458\n ]), new FieldElement([\n -17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628\n ]), new FieldElement([\n -13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657\n ])),\n new PreComputedGroupElement(new FieldElement([\n -23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062\n ]), new FieldElement([\n 25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616\n ]), new FieldElement([\n 31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014\n ])),\n new PreComputedGroupElement(new FieldElement([\n 24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383\n ]), new FieldElement([\n -25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814\n ]), new FieldElement([\n -20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718\n ])),\n new PreComputedGroupElement(new FieldElement([\n 30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417\n ]), new FieldElement([\n 2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222\n ]), new FieldElement([\n 33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444\n ])),\n new PreComputedGroupElement(new FieldElement([\n -20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597\n ]), new FieldElement([\n 23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970\n ]), new FieldElement([\n 1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799\n ])),\n new PreComputedGroupElement(new FieldElement([\n -5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647\n ]), new FieldElement([\n 13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511\n ]), new FieldElement([\n -29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032\n ]))\n ],\n [\n new PreComputedGroupElement(new FieldElement([\n 9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834\n ]), new FieldElement([\n -23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461\n ]), new FieldElement([\n 29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062\n ])),\n new PreComputedGroupElement(new FieldElement([\n -25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516\n ]), new FieldElement([\n -20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547\n ]), new FieldElement([\n -24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240\n ])),\n new PreComputedGroupElement(new FieldElement([\n -17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038\n ]), new FieldElement([\n -33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741\n ]), new FieldElement([\n 16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103\n ])),\n new PreComputedGroupElement(new FieldElement([\n -19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747\n ]), new FieldElement([\n -1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323\n ]), new FieldElement([\n 31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016\n ])),\n new PreComputedGroupElement(new FieldElement([\n -14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373\n ]), new FieldElement([\n 15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228\n ]), new FieldElement([\n -2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141\n ])),\n new PreComputedGroupElement(new FieldElement([\n 16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399\n ]), new FieldElement([\n 11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831\n ]), new FieldElement([\n -185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376\n ])),\n new PreComputedGroupElement(new FieldElement([\n -32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313\n ]), new FieldElement([\n -18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958\n ]), new FieldElement([\n -6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577\n ])),\n new PreComputedGroupElement(new FieldElement([\n -22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743\n ]), new FieldElement([\n 29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684\n ]), new FieldElement([\n -20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476\n ]))\n ]\n];\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\nimport { CONST_BI } from \"./const.mjs\";\nimport { ExtendedGroupElement } from \"./extendedGroupElement.mjs\";\nimport { FieldElement } from \"./fieldElement.mjs\";\n/**\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\n * y^2 where d = -121665/121666\n * ProjectiveGroupElement: (X:Y:Z) satisfying x=X/Z, y=Y/Z.\n */\nexport class ProjectiveGroupElement {\n /**\n * Create a new instance of CompletedGroupElement.\n * @param X The X element.\n * @param Y The Y Element.\n * @param Z The Z Element.\n */\n constructor(X, Y, Z) {\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\n }\n /**\n * Zero the elements.\n */\n zero() {\n this.X.zero();\n this.Y.one();\n this.Z.one();\n }\n /**\n * Double the elements.\n * @param r The elements.\n */\n double(r) {\n const t0 = new FieldElement();\n r.X.square(this.X);\n r.Z.square(this.Y);\n r.T.square2(this.Z);\n r.Y.add(this.X, this.Y);\n t0.square(r.Y);\n r.Y.add(r.Z, r.X);\n r.Z.sub(r.Z, r.X);\n r.X.sub(t0, r.Y);\n r.T.sub(r.T, r.Z);\n }\n /**\n * Convert to extended form.\n * @param r The extended element.\n */\n toExtended(r) {\n r.X.mul(this.X, this.Z);\n r.Y.mul(this.Y, this.Z);\n r.Z.square(this.Z);\n r.T.mul(this.X, this.Y);\n }\n /**\n * Convert the element to bytes.\n * @param s The bytes.\n */\n toBytes(s) {\n const recip = new FieldElement();\n const x = new FieldElement();\n const y = new FieldElement();\n recip.invert(this.Z);\n x.mul(this.X, recip);\n y.mul(this.Y, recip);\n y.toBytes(s);\n s[31] ^= x.isNegative() << 7;\n }\n /**\n * GeDoubleScalarMultVartime sets r = a*A + b*B\n * where a = a[0]+256*a[1]+...+256^31 a[31]\n * and b = b[0]+256*b[1]+...+256^31 b[31]\n * B is the Ed25519 base point (x,4/5) with x positive.\n * @param a The a.\n * @param A The A.\n * @param b The b.\n */\n doubleScalarMultVartime(a, A, b) {\n const aSlide = new Int8Array(256);\n const bSlide = new Int8Array(256);\n const ai = [\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement(),\n new CachedGroupElement()\n ]; // A,3A,5A,7A,9A,11A,13A,15A\n const t = new CompletedGroupElement();\n const u = new ExtendedGroupElement();\n const A2 = new ExtendedGroupElement();\n let i;\n this.slide(aSlide, a);\n this.slide(bSlide, b);\n A.toCached(ai[0]);\n A.double(t);\n t.toExtended(A2);\n for (i = 0; i < 7; i++) {\n t.add(A2, ai[i]);\n t.toExtended(u);\n u.toCached(ai[i + 1]);\n }\n this.zero();\n for (i = 255; i >= 0; i--) {\n if (aSlide[i] !== 0 || bSlide[i] !== 0) {\n break;\n }\n }\n for (; i >= 0; i--) {\n this.double(t);\n if (aSlide[i] > 0) {\n t.toExtended(u);\n t.add(u, ai[Math.floor(aSlide[i] / 2)]);\n }\n else if (aSlide[i] < 0) {\n t.toExtended(u);\n t.sub(u, ai[Math.floor(-aSlide[i] / 2)]);\n }\n if (bSlide[i] > 0) {\n t.toExtended(u);\n t.mixedAdd(u, CONST_BI[Math.floor(bSlide[i] / 2)]);\n }\n else if (bSlide[i] < 0) {\n t.toExtended(u);\n t.mixedSub(u, CONST_BI[Math.floor(-bSlide[i] / 2)]);\n }\n t.toProjective(this);\n }\n }\n /**\n * Perform the slide.\n * @param r The r.\n * @param a The a.\n */\n slide(r, a) {\n let i;\n for (i = 0; i < r.length; i++) {\n r[i] = 1 & (a[i >> 3] >> (i & 7));\n }\n for (i = 0; i < r.length; i++) {\n if (r[i] !== 0) {\n for (let b = 1; b <= 6 && i + b < 256; b++) {\n if (r[i + b] !== 0) {\n if (r[i] + (r[i + b] << b) <= 15) {\n r[i] += r[i + b] << b;\n r[i + b] = 0;\n }\n else if (r[i] - (r[i + b] << b) >= -15) {\n r[i] -= r[i + b] << b;\n for (let k = i + b; k < 256; k++) {\n if (r[k] === 0) {\n r[k] = 1;\n break;\n }\n r[k] = 0;\n }\n }\n else {\n break;\n }\n }\n }\n }\n }\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { ArrayHelper } from \"../../utils/arrayHelper.mjs\";\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\nimport { CONST_D, CONST_D2, CONST_SQRT_M1 } from \"./const.mjs\";\nimport { FieldElement } from \"./fieldElement.mjs\";\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\nimport { ProjectiveGroupElement } from \"./projectiveGroupElement.mjs\";\n/**\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 * y^2 where d = -121665/121666.\n * ExtendedGroupElement: (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT.\n */\nexport class ExtendedGroupElement {\n /**\n * Create a new instance of ExtendedGroupElement.\n * @param X The X element.\n * @param Y The Y Element.\n * @param Z The Z Element.\n * @param T The T Element.\n */\n constructor(X, Y, Z, T) {\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\n }\n /**\n * Zero the elements.\n */\n zero() {\n this.X.zero();\n this.Y.one();\n this.Z.one();\n this.T.zero();\n }\n /**\n * Double the element.\n * @param cachedGroupElement The element to populate.\n */\n double(cachedGroupElement) {\n const q = new ProjectiveGroupElement();\n this.toProjective(q);\n q.double(cachedGroupElement);\n }\n /**\n * Convert to a cached group element.\n * @param cacheGroupElement The element to populate.\n */\n toCached(cacheGroupElement) {\n cacheGroupElement.yPlusX.add(this.Y, this.X);\n cacheGroupElement.yMinusX.sub(this.Y, this.X);\n cacheGroupElement.Z = this.Z.clone();\n cacheGroupElement.T2d.mul(this.T, CONST_D2);\n }\n /**\n * Convert to a projective group element.\n * @param projectiveGroupElement The element to populate.\n */\n toProjective(projectiveGroupElement) {\n projectiveGroupElement.X = this.X.clone();\n projectiveGroupElement.Y = this.Y.clone();\n projectiveGroupElement.Z = this.Z.clone();\n }\n /**\n * Convert the element to bytes.\n * @param bytes The array to store the bytes in.\n */\n toBytes(bytes) {\n const recip = new FieldElement();\n const x = new FieldElement();\n const y = new FieldElement();\n recip.invert(this.Z);\n x.mul(this.X, recip);\n y.mul(this.Y, recip);\n y.toBytes(bytes);\n bytes[31] ^= x.isNegative() << 7;\n }\n /**\n * Populate the element from bytes.\n * @param bytes The butes to populate from.\n * @returns False is non-zero check.\n */\n fromBytes(bytes) {\n const u = new FieldElement();\n const v = new FieldElement();\n const v3 = new FieldElement();\n const vxx = new FieldElement();\n const check = new FieldElement();\n let i;\n this.Y.fromBytes(bytes);\n this.Z.one();\n u.square(this.Y);\n v.mul(u, CONST_D);\n u.sub(u, this.Z); // y = y^2-1\n v.add(v, this.Z); // v = dy^2+1\n v3.square(v);\n v3.mul(v3, v); // v3 = v^3\n this.X.square(v3);\n this.X.mul(this.X, v);\n this.X.mul(this.X, u); // x = uv^7\n this.X.pow22523(this.X); // x = (uv^7)^((q-5)/8)\n this.X.mul(this.X, v3);\n this.X.mul(this.X, u); // x = uv^3(uv^7)^((q-5)/8)\n const tmpX = new Uint8Array(32);\n const tmp2 = new Uint8Array(32);\n vxx.square(this.X);\n vxx.mul(vxx, v);\n check.sub(vxx, u); // vx^2-u\n if (check.isNonZero() === 1) {\n check.add(vxx, u); // vx^2+u\n if (check.isNonZero() === 1) {\n return false;\n }\n this.X.mul(this.X, CONST_SQRT_M1);\n this.X.toBytes(tmpX);\n for (i = 0; i < tmpX.length; i++) {\n tmp2[31 - i] = tmpX[i];\n }\n }\n if (this.X.isNegative() !== bytes[31] >> 7) {\n this.X.neg();\n }\n this.T.mul(this.X, this.Y);\n return true;\n }\n /**\n * GeScalarMultBase computes h = a*B, where\n * a = a[0]+256*a[1]+...+256^31 a[31]\n * b is the Ed25519 base point (x,4/5) with x positive.\n *\n * Preconditions:\n * A[31] <= 127.\n * @param a The a.\n */\n scalarMultBase(a) {\n const e = new Int8Array(64);\n for (let i = 0; i < a.length; i++) {\n e[2 * i] = a[i] & 15;\n e[2 * i + 1] = (a[i] >> 4) & 15;\n }\n // each e[i] is between 0 and 15 and e[63] is between 0 and 7.\n let carry = 0;\n for (let i = 0; i < 63; i++) {\n e[i] += carry;\n carry = (e[i] + 8) >> 4;\n e[i] -= carry << 4;\n }\n e[63] += carry;\n // each e[i] is between -8 and 8.\n this.zero();\n const t = new PreComputedGroupElement();\n const r = new CompletedGroupElement();\n for (let i = 1; i < 64; i += 2) {\n t.selectPoint(Math.floor(i / 2), e[i]);\n r.mixedAdd(this, t);\n r.toExtended(this);\n }\n const s = new ProjectiveGroupElement();\n this.double(r);\n r.toProjective(s);\n s.double(r);\n r.toProjective(s);\n s.double(r);\n r.toProjective(s);\n s.double(r);\n r.toExtended(this);\n for (let i = 0; i < 64; i += 2) {\n t.selectPoint(i / 2, e[i]);\n r.mixedAdd(this, t);\n r.toExtended(this);\n }\n }\n /**\n * CofactorEqual checks whether p, q are equal up to cofactor multiplication\n * ie if their difference is of small order.\n * @param q The extended group element.\n * @returns True if they are equal.\n */\n cofactorEqual(q) {\n const t1 = new CachedGroupElement();\n const t2 = new CompletedGroupElement();\n const t3 = new ProjectiveGroupElement();\n q.toCached(t1);\n t2.sub(this, t1); // t2 = (P - Q)\n t2.toProjective(t3); // t3 = (P - Q)\n t3.double(t2); // t2 = [2](P - Q)\n t2.toProjective(t3); // t3 = [2](P - Q)\n t3.double(t2); // t2 = [4](P - Q)\n t2.toProjective(t3); // t3 = [4](P - Q)\n t3.double(t2); // t2 = [8](P - Q)\n t2.toProjective(t3); // t3 = [8](P - Q)\n // Now we want to check whether the point t3 is the identity.\n // In projective coordinates this is (X:Y:Z) ~ (0:1:0)\n // ie. X/Z = 0, Y/Z = 1\n // <=> X = 0, Y = Z\n const zero = new Uint8Array(32);\n const xBytes = new Uint8Array(32);\n const yBytes = new Uint8Array(32);\n const zBytes = new Uint8Array(32);\n t3.X.toBytes(xBytes);\n t3.Y.toBytes(yBytes);\n t3.Z.toBytes(zBytes);\n return ArrayHelper.equal(zero, xBytes) && ArrayHelper.equal(yBytes, zBytes);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/* eslint-disable newline-per-chained-call */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { BigIntHelper } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport { BIG_136657, BIG_1_SHIFTL_20, BIG_2097151, BIG_470296, BIG_654183, BIG_666643, BIG_683901, BIG_997805, BIG_ARR } from \"./bigIntCommon.mjs\";\nimport { CONST_ORDER } from \"./const.mjs\";\n/**\n * The scalars are GF(2^252 + 27742317777372353535851937790883648493).\n *\n * Input\n * a[0]+256*a[1]+...+256^31*a[31] = a\n * b[0]+256*b[1]+...+256^31*b[31] = b\n * c[0]+256*c[1]+...+256^31*c[31] = c.\n *\n * Output\n * s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l\n * where l = 2^252 + 27742317777372353535851937790883648493.\n * @param s The scalar.\n * @param a The a.\n * @param b The b.\n * @param c The c.\n */\nexport function scalarMulAdd(s, a, b, c) {\n const a0 = BIG_2097151.and(BigIntHelper.read3(a, 0));\n const a1 = BIG_2097151.and(BigIntHelper.read4(a, 2).shiftRight(BIG_ARR[5]));\n const a2 = BIG_2097151.and(BigIntHelper.read3(a, 5).shiftRight(BIG_ARR[2]));\n const a3 = BIG_2097151.and(BigIntHelper.read4(a, 7).shiftRight(BIG_ARR[7]));\n const a4 = BIG_2097151.and(BigIntHelper.read4(a, 10).shiftRight(BIG_ARR[4]));\n const a5 = BIG_2097151.and(BigIntHelper.read3(a, 13).shiftRight(BIG_ARR[1]));\n const a6 = BIG_2097151.and(BigIntHelper.read4(a, 15).shiftRight(BIG_ARR[6]));\n const a7 = BIG_2097151.and(BigIntHelper.read3(a, 18).shiftRight(BIG_ARR[3]));\n const a8 = BIG_2097151.and(BigIntHelper.read3(a, 21));\n const a9 = BIG_2097151.and(BigIntHelper.read4(a, 23).shiftRight(BIG_ARR[5]));\n const a10 = BIG_2097151.and(BigIntHelper.read3(a, 26).shiftRight(BIG_ARR[2]));\n const a11 = BigIntHelper.read4(a, 28).shiftRight(BIG_ARR[7]);\n const b0 = BIG_2097151.and(BigIntHelper.read3(b, 0));\n const b1 = BIG_2097151.and(BigIntHelper.read4(b, 2).shiftRight(BIG_ARR[5]));\n const b2 = BIG_2097151.and(BigIntHelper.read3(b, 5).shiftRight(BIG_ARR[2]));\n const b3 = BIG_2097151.and(BigIntHelper.read4(b, 7).shiftRight(BIG_ARR[7]));\n const b4 = BIG_2097151.and(BigIntHelper.read4(b, 10).shiftRight(BIG_ARR[4]));\n const b5 = BIG_2097151.and(BigIntHelper.read3(b, 13).shiftRight(BIG_ARR[1]));\n const b6 = BIG_2097151.and(BigIntHelper.read4(b, 15).shiftRight(BIG_ARR[6]));\n const b7 = BIG_2097151.and(BigIntHelper.read3(b, 18).shiftRight(BIG_ARR[3]));\n const b8 = BIG_2097151.and(BigIntHelper.read3(b, 21));\n const b9 = BIG_2097151.and(BigIntHelper.read4(b, 23).shiftRight(BIG_ARR[5]));\n const b10 = BIG_2097151.and(BigIntHelper.read3(b, 26).shiftRight(BIG_ARR[2]));\n const b11 = BigIntHelper.read4(b, 28).shiftRight(BIG_ARR[7]);\n const c0 = BIG_2097151.and(BigIntHelper.read3(c, 0));\n const c1 = BIG_2097151.and(BigIntHelper.read4(c, 2).shiftRight(BIG_ARR[5]));\n const c2 = BIG_2097151.and(BigIntHelper.read3(c, 5).shiftRight(BIG_ARR[2]));\n const c3 = BIG_2097151.and(BigIntHelper.read4(c, 7).shiftRight(BIG_ARR[7]));\n const c4 = BIG_2097151.and(BigIntHelper.read4(c, 10).shiftRight(BIG_ARR[4]));\n const c5 = BIG_2097151.and(BigIntHelper.read3(c, 13).shiftRight(BIG_ARR[1]));\n const c6 = BIG_2097151.and(BigIntHelper.read4(c, 15).shiftRight(BIG_ARR[6]));\n const c7 = BIG_2097151.and(BigIntHelper.read3(c, 18).shiftRight(BIG_ARR[3]));\n const c8 = BIG_2097151.and(BigIntHelper.read3(c, 21));\n const c9 = BIG_2097151.and(BigIntHelper.read4(c, 23).shiftRight(BIG_ARR[5]));\n const c10 = BIG_2097151.and(BigIntHelper.read3(c, 26).shiftRight(BIG_ARR[2]));\n const c11 = BigIntHelper.read4(c, 28).shiftRight(BIG_ARR[7]);\n const carry = [];\n for (let i = 0; i < 32; i++) {\n carry[i] = bigInt(0);\n }\n let s0 = c0.add(a0.times(b0));\n let s1 = c1.add(a0.times(b1).add(a1.times(b0)));\n let s2 = c2.add(a0.times(b2).add(a1.times(b1)).add(a2.times(b0)));\n let s3 = c3.add(a0.times(b3).add(a1.times(b2)).add(a2.times(b1)).add(a3.times(b0)));\n let s4 = c4.add(a0.times(b4).add(a1.times(b3)).add(a2.times(b2)).add(a3.times(b1)).add(a4.times(b0)));\n let s5 = c5.add(a0.times(b5).add(a1.times(b4)).add(a2.times(b3)).add(a3.times(b2)).add(a4.times(b1)).add(a5.times(b0)));\n let s6 = c6.add(a0\n .times(b6)\n .add(a1.times(b5))\n .add(a2.times(b4))\n .add(a3.times(b3))\n .add(a4.times(b2))\n .add(a5.times(b1))\n .add(a6.times(b0)));\n let s7 = c7\n .add(a0\n .times(b7)\n .add(a1.times(b6))\n .add(a2.times(b5))\n .add(a3.times(b4))\n .add(a4.times(b3))\n .add(a5.times(b2))\n .add(a6.times(b1)))\n .add(a7.times(b0));\n let s8 = c8.add(a0\n .times(b8)\n .add(a1.times(b7))\n .add(a2.times(b6))\n .add(a3.times(b5))\n .add(a4.times(b4))\n .add(a5.times(b3))\n .add(a6.times(b2))\n .add(a7.times(b1))\n .add(a8.times(b0)));\n let s9 = c9\n .add(a0.times(b9))\n .add(a1.times(b8))\n .add(a2.times(b7))\n .add(a3.times(b6))\n .add(a4.times(b5))\n .add(a5.times(b4))\n .add(a6.times(b3))\n .add(a7.times(b2))\n .add(a8.times(b1))\n .add(a9.times(b0));\n let s10 = c10\n .add(a0.times(b10))\n .add(a1.times(b9))\n .add(a2.times(b8))\n .add(a3.times(b7))\n .add(a4.times(b6))\n .add(a5.times(b5))\n .add(a6.times(b4))\n .add(a7.times(b3))\n .add(a8.times(b2))\n .add(a9.times(b1))\n .add(a10.times(b0));\n let s11 = c11\n .add(a0.times(b11))\n .add(a1.times(b10))\n .add(a2.times(b9))\n .add(a3.times(b8))\n .add(a4.times(b7))\n .add(a5.times(b6))\n .add(a6.times(b5))\n .add(a7.times(b4))\n .add(a8.times(b3))\n .add(a9.times(b2))\n .add(a10.times(b1))\n .add(a11.times(b0));\n let s12 = a1\n .times(b11)\n .add(a2.times(b10))\n .add(a3.times(b9))\n .add(a4.times(b8))\n .add(a5.times(b7))\n .add(a6.times(b6))\n .add(a7.times(b5))\n .add(a8.times(b4))\n .add(a9.times(b3))\n .add(a10.times(b2))\n .add(a11.times(b1));\n let s13 = a2\n .times(b11)\n .add(a3.times(b10))\n .add(a4.times(b9))\n .add(a5.times(b8))\n .add(a6.times(b7))\n .add(a7.times(b6))\n .add(a8.times(b5))\n .add(a9.times(b4))\n .add(a10.times(b3))\n .add(a11.times(b2));\n let s14 = a3\n .times(b11)\n .add(a4.times(b10))\n .add(a5.times(b9))\n .add(a6.times(b8))\n .add(a7.times(b7))\n .add(a8.times(b6))\n .add(a9.times(b5))\n .add(a10.times(b4))\n .add(a11.times(b3));\n let s15 = a4\n .times(b11)\n .add(a5.times(b10))\n .add(a6.times(b9))\n .add(a7.times(b8))\n .add(a8.times(b7))\n .add(a9.times(b6))\n .add(a10.times(b5))\n .add(a11.times(b4));\n let s16 = a5\n .times(b11)\n .add(a6.times(b10))\n .add(a7.times(b9))\n .add(a8.times(b8))\n .add(a9.times(b7))\n .add(a10.times(b6))\n .add(a11.times(b5));\n let s17 = a6\n .times(b11)\n .add(a7.times(b10))\n .add(a8.times(b9))\n .add(a9.times(b8))\n .add(a10.times(b7))\n .add(a11.times(b6));\n let s18 = a7.times(b11).add(a8.times(b10)).add(a9.times(b9)).add(a10.times(b8)).add(a11.times(b7));\n let s19 = a8.times(b11).add(a9.times(b10)).add(a10.times(b9)).add(a11.times(b8));\n let s20 = a9.times(b11).add(a10.times(b10)).add(a11.times(b9));\n let s21 = a10.times(b11).add(a11.times(b10));\n let s22 = a11.times(b11);\n let s23 = BIG_ARR[0];\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s13 = s13.add(carry[12]);\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s15 = s15.add(carry[14]);\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s17 = s17.add(carry[16]);\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\n carry[18] = s18.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s19 = s19.add(carry[18]);\n s18 = s18.minus(carry[18].shiftLeft(BIG_ARR[21]));\n carry[20] = s20.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s21 = s21.add(carry[20]);\n s20 = s20.minus(carry[20].shiftLeft(BIG_ARR[21]));\n carry[22] = s22.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s23 = s23.add(carry[22]);\n s22 = s22.minus(carry[22].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s14 = s14.add(carry[13]);\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s16 = s16.add(carry[15]);\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\n carry[17] = s17.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s18 = s18.add(carry[17]);\n s17 = s17.minus(carry[17].shiftLeft(BIG_ARR[21]));\n carry[19] = s19.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s20 = s20.add(carry[19]);\n s19 = s19.minus(carry[19].shiftLeft(BIG_ARR[21]));\n carry[21] = s21.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s22 = s22.add(carry[21]);\n s21 = s21.minus(carry[21].shiftLeft(BIG_ARR[21]));\n s11 = s11.add(s23.times(BIG_666643));\n s12 = s12.add(s23.times(BIG_470296));\n s13 = s13.add(s23.times(BIG_654183));\n s14 = s14.minus(s23.times(BIG_997805));\n s15 = s15.add(s23.times(BIG_136657));\n s16 = s16.minus(s23.times(BIG_683901));\n s23 = BIG_ARR[0];\n s10 = s10.add(s22.times(BIG_666643));\n s11 = s11.add(s22.times(BIG_470296));\n s12 = s12.add(s22.times(BIG_654183));\n s13 = s13.minus(s22.times(BIG_997805));\n s14 = s14.add(s22.times(BIG_136657));\n s15 = s15.minus(s22.times(BIG_683901));\n s22 = BIG_ARR[0];\n s9 = s9.add(s21.times(BIG_666643));\n s10 = s10.add(s21.times(BIG_470296));\n s11 = s11.add(s21.times(BIG_654183));\n s12 = s12.minus(s21.times(BIG_997805));\n s13 = s13.add(s21.times(BIG_136657));\n s14 = s14.minus(s21.times(BIG_683901));\n s21 = BIG_ARR[0];\n s8 = s8.add(s20.times(BIG_666643));\n s9 = s9.add(s20.times(BIG_470296));\n s10 = s10.add(s20.times(BIG_654183));\n s11 = s11.minus(s20.times(BIG_997805));\n s12 = s12.add(s20.times(BIG_136657));\n s13 = s13.minus(s20.times(BIG_683901));\n s20 = BIG_ARR[0];\n s7 = s7.add(s19.times(BIG_666643));\n s8 = s8.add(s19.times(BIG_470296));\n s9 = s9.add(s19.times(BIG_654183));\n s10 = s10.minus(s19.times(BIG_997805));\n s11 = s11.add(s19.times(BIG_136657));\n s12 = s12.minus(s19.times(BIG_683901));\n s19 = BIG_ARR[0];\n s6 = s6.add(s18.times(BIG_666643));\n s7 = s7.add(s18.times(BIG_470296));\n s8 = s8.add(s18.times(BIG_654183));\n s9 = s9.minus(s18.times(BIG_997805));\n s10 = s10.add(s18.times(BIG_136657));\n s11 = s11.minus(s18.times(BIG_683901));\n s18 = BIG_ARR[0];\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s13 = s13.add(carry[12]);\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s15 = s15.add(carry[14]);\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s17 = s17.add(carry[16]);\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s14 = s14.add(carry[13]);\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s16 = s16.add(carry[15]);\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\n s5 = s5.add(s17.times(BIG_666643));\n s6 = s6.add(s17.times(BIG_470296));\n s7 = s7.add(s17.times(BIG_654183));\n s8 = s8.minus(s17.times(BIG_997805));\n s9 = s9.add(s17.times(BIG_136657));\n s10 = s10.minus(s17.times(BIG_683901));\n s17 = BIG_ARR[0];\n s4 = s4.add(s16.times(BIG_666643));\n s5 = s5.add(s16.times(BIG_470296));\n s6 = s6.add(s16.times(BIG_654183));\n s7 = s7.minus(s16.times(BIG_997805));\n s8 = s8.add(s16.times(BIG_136657));\n s9 = s9.minus(s16.times(BIG_683901));\n s16 = BIG_ARR[0];\n s3 = s3.add(s15.times(BIG_666643));\n s4 = s4.add(s15.times(BIG_470296));\n s5 = s5.add(s15.times(BIG_654183));\n s6 = s6.minus(s15.times(BIG_997805));\n s7 = s7.add(s15.times(BIG_136657));\n s8 = s8.minus(s15.times(BIG_683901));\n s15 = BIG_ARR[0];\n s2 = s2.add(s14.times(BIG_666643));\n s3 = s3.add(s14.times(BIG_470296));\n s4 = s4.add(s14.times(BIG_654183));\n s5 = s5.minus(s14.times(BIG_997805));\n s6 = s6.add(s14.times(BIG_136657));\n s7 = s7.minus(s14.times(BIG_683901));\n s14 = BIG_ARR[0];\n s1 = s1.add(s13.times(BIG_666643));\n s2 = s2.add(s13.times(BIG_470296));\n s3 = s3.add(s13.times(BIG_654183));\n s4 = s4.minus(s13.times(BIG_997805));\n s5 = s5.add(s13.times(BIG_136657));\n s6 = s6.minus(s13.times(BIG_683901));\n s13 = BIG_ARR[0];\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n s[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\n s[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\n s[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\n s[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\n s[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\n s[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\n s[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\n s[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\n s[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\n s[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\n s[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\n s[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\n s[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\n s[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\n s[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\n s[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\n s[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\n s[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\n s[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\n s[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\n s[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\n s[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\n s[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\n s[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\n s[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\n s[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\n s[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\n s[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\n s[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\n s[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\n s[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\n s[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\n}\n/**\n * Scalar reduce\n * where l = 2^252 + 27742317777372353535851937790883648493.\n * @param out Where s[0]+256*s[1]+...+256^31*s[31] = s mod l.\n * @param s Where s[0]+256*s[1]+...+256^63*s[63] = s.\n */\nexport function scalarReduce(out, s) {\n let s0 = BIG_2097151.and(BigIntHelper.read3(s, 0));\n let s1 = BIG_2097151.and(BigIntHelper.read4(s, 2).shiftRight(BIG_ARR[5]));\n let s2 = BIG_2097151.and(BigIntHelper.read3(s, 5).shiftRight(BIG_ARR[2]));\n let s3 = BIG_2097151.and(BigIntHelper.read4(s, 7).shiftRight(BIG_ARR[7]));\n let s4 = BIG_2097151.and(BigIntHelper.read4(s, 10).shiftRight(BIG_ARR[4]));\n let s5 = BIG_2097151.and(BigIntHelper.read3(s, 13).shiftRight(BIG_ARR[1]));\n let s6 = BIG_2097151.and(BigIntHelper.read4(s, 15).shiftRight(BIG_ARR[6]));\n let s7 = BIG_2097151.and(BigIntHelper.read3(s, 18).shiftRight(BIG_ARR[3]));\n let s8 = BIG_2097151.and(BigIntHelper.read3(s, 21));\n let s9 = BIG_2097151.and(BigIntHelper.read4(s, 23).shiftRight(BIG_ARR[5]));\n let s10 = BIG_2097151.and(BigIntHelper.read3(s, 26).shiftRight(BIG_ARR[2]));\n let s11 = BIG_2097151.and(BigIntHelper.read4(s, 28).shiftRight(BIG_ARR[7]));\n let s12 = BIG_2097151.and(BigIntHelper.read4(s, 31).shiftRight(BIG_ARR[4]));\n let s13 = BIG_2097151.and(BigIntHelper.read3(s, 34).shiftRight(BIG_ARR[1]));\n let s14 = BIG_2097151.and(BigIntHelper.read4(s, 36).shiftRight(BIG_ARR[6]));\n let s15 = BIG_2097151.and(BigIntHelper.read3(s, 39).shiftRight(BIG_ARR[3]));\n let s16 = BIG_2097151.and(BigIntHelper.read3(s, 42));\n let s17 = BIG_2097151.and(BigIntHelper.read4(s, 44).shiftRight(BIG_ARR[5]));\n let s18 = BIG_2097151.and(BigIntHelper.read3(s, 47).shiftRight(BIG_ARR[2]));\n let s19 = BIG_2097151.and(BigIntHelper.read4(s, 49).shiftRight(BIG_ARR[7]));\n let s20 = BIG_2097151.and(BigIntHelper.read4(s, 52).shiftRight(BIG_ARR[4]));\n let s21 = BIG_2097151.and(BigIntHelper.read3(s, 55).shiftRight(BIG_ARR[1]));\n let s22 = BIG_2097151.and(BigIntHelper.read4(s, 57).shiftRight(BIG_ARR[6]));\n let s23 = BigIntHelper.read4(s, 60).shiftRight(BIG_ARR[3]);\n s11 = s11.add(s23.times(BIG_666643));\n s12 = s12.add(s23.times(BIG_470296));\n s13 = s13.add(s23.times(BIG_654183));\n s14 = s14.minus(s23.times(BIG_997805));\n s15 = s15.add(s23.times(BIG_136657));\n s16 = s16.minus(s23.times(BIG_683901));\n s23 = BIG_ARR[0];\n s10 = s10.add(s22.times(BIG_666643));\n s11 = s11.add(s22.times(BIG_470296));\n s12 = s12.add(s22.times(BIG_654183));\n s13 = s13.minus(s22.times(BIG_997805));\n s14 = s14.add(s22.times(BIG_136657));\n s15 = s15.minus(s22.times(BIG_683901));\n s22 = BIG_ARR[0];\n s9 = s9.add(s21.times(BIG_666643));\n s10 = s10.add(s21.times(BIG_470296));\n s11 = s11.add(s21.times(BIG_654183));\n s12 = s12.minus(s21.times(BIG_997805));\n s13 = s13.add(s21.times(BIG_136657));\n s14 = s14.minus(s21.times(BIG_683901));\n s21 = BIG_ARR[0];\n s8 = s8.add(s20.times(BIG_666643));\n s9 = s9.add(s20.times(BIG_470296));\n s10 = s10.add(s20.times(BIG_654183));\n s11 = s11.minus(s20.times(BIG_997805));\n s12 = s12.add(s20.times(BIG_136657));\n s13 = s13.minus(s20.times(BIG_683901));\n s20 = BIG_ARR[0];\n s7 = s7.add(s19.times(BIG_666643));\n s8 = s8.add(s19.times(BIG_470296));\n s9 = s9.add(s19.times(BIG_654183));\n s10 = s10.minus(s19.times(BIG_997805));\n s11 = s11.add(s19.times(BIG_136657));\n s12 = s12.minus(s19.times(BIG_683901));\n s19 = BIG_ARR[0];\n s6 = s6.add(s18.times(BIG_666643));\n s7 = s7.add(s18.times(BIG_470296));\n s8 = s8.add(s18.times(BIG_654183));\n s9 = s9.minus(s18.times(BIG_997805));\n s10 = s10.add(s18.times(BIG_136657));\n s11 = s11.minus(s18.times(BIG_683901));\n s18 = BIG_ARR[0];\n const carry = [];\n for (let i = 0; i < 17; i++) {\n carry[i] = bigInt(0);\n }\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s13 = s13.add(carry[12]);\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s15 = s15.add(carry[14]);\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s17 = s17.add(carry[16]);\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s14 = s14.add(carry[13]);\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s16 = s16.add(carry[15]);\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\n s5 = s5.add(s17.times(BIG_666643));\n s6 = s6.add(s17.times(BIG_470296));\n s7 = s7.add(s17.times(BIG_654183));\n s8 = s8.minus(s17.times(BIG_997805));\n s9 = s9.add(s17.times(BIG_136657));\n s10 = s10.minus(s17.times(BIG_683901));\n s17 = BIG_ARR[0];\n s4 = s4.add(s16.times(BIG_666643));\n s5 = s5.add(s16.times(BIG_470296));\n s6 = s6.add(s16.times(BIG_654183));\n s7 = s7.minus(s16.times(BIG_997805));\n s8 = s8.add(s16.times(BIG_136657));\n s9 = s9.minus(s16.times(BIG_683901));\n s16 = BIG_ARR[0];\n s3 = s3.add(s15.times(BIG_666643));\n s4 = s4.add(s15.times(BIG_470296));\n s5 = s5.add(s15.times(BIG_654183));\n s6 = s6.minus(s15.times(BIG_997805));\n s7 = s7.add(s15.times(BIG_136657));\n s8 = s8.minus(s15.times(BIG_683901));\n s15 = BIG_ARR[0];\n s2 = s2.add(s14.times(BIG_666643));\n s3 = s3.add(s14.times(BIG_470296));\n s4 = s4.add(s14.times(BIG_654183));\n s5 = s5.minus(s14.times(BIG_997805));\n s6 = s6.add(s14.times(BIG_136657));\n s7 = s7.minus(s14.times(BIG_683901));\n s14 = BIG_ARR[0];\n s1 = s1.add(s13.times(BIG_666643));\n s2 = s2.add(s13.times(BIG_470296));\n s3 = s3.add(s13.times(BIG_654183));\n s4 = s4.minus(s13.times(BIG_997805));\n s5 = s5.add(s13.times(BIG_136657));\n s6 = s6.minus(s13.times(BIG_683901));\n s13 = BIG_ARR[0];\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n carry[11] = s11.shiftRight(BIG_ARR[21]);\n s12 = s12.add(carry[11]);\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\n s0 = s0.add(s12.times(BIG_666643));\n s1 = s1.add(s12.times(BIG_470296));\n s2 = s2.add(s12.times(BIG_654183));\n s3 = s3.minus(s12.times(BIG_997805));\n s4 = s4.add(s12.times(BIG_136657));\n s5 = s5.minus(s12.times(BIG_683901));\n s12 = BIG_ARR[0];\n carry[0] = s0.shiftRight(BIG_ARR[21]);\n s1 = s1.add(carry[0]);\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\n carry[1] = s1.shiftRight(BIG_ARR[21]);\n s2 = s2.add(carry[1]);\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\n carry[2] = s2.shiftRight(BIG_ARR[21]);\n s3 = s3.add(carry[2]);\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\n carry[3] = s3.shiftRight(BIG_ARR[21]);\n s4 = s4.add(carry[3]);\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\n carry[4] = s4.shiftRight(BIG_ARR[21]);\n s5 = s5.add(carry[4]);\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\n carry[5] = s5.shiftRight(BIG_ARR[21]);\n s6 = s6.add(carry[5]);\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\n carry[6] = s6.shiftRight(BIG_ARR[21]);\n s7 = s7.add(carry[6]);\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\n carry[7] = s7.shiftRight(BIG_ARR[21]);\n s8 = s8.add(carry[7]);\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\n carry[8] = s8.shiftRight(BIG_ARR[21]);\n s9 = s9.add(carry[8]);\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\n carry[9] = s9.shiftRight(BIG_ARR[21]);\n s10 = s10.add(carry[9]);\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\n carry[10] = s10.shiftRight(BIG_ARR[21]);\n s11 = s11.add(carry[10]);\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\n out[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\n out[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\n out[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\n out[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\n out[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\n out[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\n out[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\n out[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\n out[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\n out[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\n out[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\n out[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\n out[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\n out[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\n out[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\n out[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\n out[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\n out[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\n out[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\n out[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\n out[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\n out[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\n out[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\n out[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\n out[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\n out[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\n out[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\n out[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\n out[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\n out[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\n out[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\n out[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\n}\n/**\n * Scalar Minimal returns true if the given scalar is less than the order of the Curve.\n * @param scalar The scalar.\n * @returns True if the given scalar is less than the order of the Curve.\n */\nexport function scalarMinimal(scalar) {\n for (let i = 3; i >= 0; i--) {\n const v = BigIntHelper.read8(scalar, i * 8);\n if (v > CONST_ORDER[i]) {\n return false;\n }\n else if (v < CONST_ORDER[i]) {\n break;\n }\n else if (i === 0) {\n return false;\n }\n }\n return true;\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\n/**\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus.\n * Which is an extension of https://github.com/golang/crypto/tree/master/ed25519.\n * Which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\n */\nimport { Sha512 } from \"../hashes/sha512.mjs\";\nimport { ArrayHelper } from \"../utils/arrayHelper.mjs\";\nimport { ExtendedGroupElement } from \"./edwards25519/extendedGroupElement.mjs\";\nimport { ProjectiveGroupElement } from \"./edwards25519/projectiveGroupElement.mjs\";\nimport { scalarMinimal, scalarMulAdd, scalarReduce } from \"./edwards25519/scalar.mjs\";\n/**\n * Implementation of Ed25519.\n */\nexport class Ed25519 {\n /**\n * Public returns the PublicKey corresponding to priv.\n * @param privateKey The private key to get the corresponding public key.\n * @returns The public key.\n */\n static publicKeyFromPrivateKey(privateKey) {\n return privateKey.subarray(32).slice();\n }\n /**\n * Generate the key pair from the seed.\n * @param seed The seed to generate the key pair for.\n * @returns The key pair.\n */\n static keyPairFromSeed(seed) {\n const privateKey = Ed25519.privateKeyFromSeed(seed.slice(0, Ed25519.SEED_SIZE));\n return {\n privateKey,\n publicKey: Ed25519.publicKeyFromPrivateKey(privateKey)\n };\n }\n /**\n * Calculates a private key from a seed.\n * @param seed The seed to generate the private key from.\n * @returns The private key.\n */\n static privateKeyFromSeed(seed) {\n if (!seed || seed.length !== Ed25519.SEED_SIZE) {\n throw new Error(`The seed length is incorrect, it should be ${Ed25519.SEED_SIZE} but is ${seed ? seed.length : 0}`);\n }\n const sha512 = new Sha512();\n sha512.update(seed);\n const digest = sha512.digest();\n digest[0] &= 248;\n digest[31] &= 127;\n digest[31] |= 64;\n const A = new ExtendedGroupElement();\n A.scalarMultBase(digest);\n const publicKeyBytes = new Uint8Array(32);\n A.toBytes(publicKeyBytes);\n const privateKey = new Uint8Array(Ed25519.PRIVATE_KEY_SIZE);\n privateKey.set(seed);\n privateKey.set(publicKeyBytes, 32);\n return privateKey;\n }\n /**\n * Sign the block with privateKey and returns a signature.\n * @param privateKey The private key.\n * @param block The block to sign.\n * @returns The signature.\n */\n static sign(privateKey, block) {\n if (!privateKey || privateKey.length !== Ed25519.PRIVATE_KEY_SIZE) {\n throw new Error(\"Bad private key length\");\n }\n let sha512 = new Sha512();\n sha512.update(privateKey.subarray(0, 32));\n const digest1 = sha512.digest();\n const expandedSecretKey = digest1.slice();\n expandedSecretKey[0] &= 248;\n expandedSecretKey[31] &= 63;\n expandedSecretKey[31] |= 64;\n sha512 = new Sha512();\n sha512.update(digest1.subarray(32));\n sha512.update(block);\n const blockDigest = sha512.digest();\n const blockDigestReduced = new Uint8Array(32);\n scalarReduce(blockDigestReduced, blockDigest);\n const R = new ExtendedGroupElement();\n R.scalarMultBase(blockDigestReduced);\n const encodedR = new Uint8Array(32);\n R.toBytes(encodedR);\n sha512 = new Sha512();\n sha512.update(encodedR);\n sha512.update(privateKey.subarray(32));\n sha512.update(block);\n const hramDigest = sha512.digest();\n const hramDigestReduced = new Uint8Array(32);\n scalarReduce(hramDigestReduced, hramDigest);\n const s = new Uint8Array(32);\n scalarMulAdd(s, hramDigestReduced, expandedSecretKey, blockDigestReduced);\n const signature = new Uint8Array(Ed25519.SIGNATURE_SIZE);\n signature.set(encodedR);\n signature.set(s, 32);\n return signature;\n }\n /**\n * Verify reports whether sig is a valid signature of block by publicKey.\n * @param publicKey The public key to verify the signature.\n * @param block The block for the signature.\n * @param sig The signature.\n * @returns True if the signature matches.\n */\n static verify(publicKey, block, sig) {\n if (!publicKey || publicKey.length !== Ed25519.PUBLIC_KEY_SIZE) {\n return false;\n }\n if (!sig || sig.length !== Ed25519.SIGNATURE_SIZE || (sig[63] & 224) !== 0) {\n return false;\n }\n const A = new ExtendedGroupElement();\n if (!A.fromBytes(publicKey)) {\n return false;\n }\n A.X.neg();\n A.T.neg();\n const h = new Sha512();\n h.update(sig.subarray(0, 32));\n h.update(publicKey);\n h.update(block);\n const digest = h.digest();\n const hReduced = new Uint8Array(32);\n scalarReduce(hReduced, digest);\n const R = new ProjectiveGroupElement();\n const s = sig.subarray(32).slice();\n // https://tools.ietf.org/html/rfc8032#section-5.1.7 requires that s be in\n // the range [0, order) in order to prevent signature malleability.\n if (!scalarMinimal(s)) {\n return false;\n }\n R.doubleScalarMultVartime(hReduced, A, s);\n const checkR = new Uint8Array(32);\n R.toBytes(checkR);\n return ArrayHelper.equal(sig.subarray(0, 32), checkR);\n }\n}\n/**\n * PublicKeySize is the size, in bytes, of public keys as used in this package.\n */\nEd25519.PUBLIC_KEY_SIZE = 32;\n/**\n * PrivateKeySize is the size, in bytes, of private keys as used in this package.\n */\nEd25519.PRIVATE_KEY_SIZE = 64;\n/**\n * SignatureSize is the size, in bytes, of signatures generated and verified by this package.\n */\nEd25519.SIGNATURE_SIZE = 64;\n/**\n * SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.\n */\nEd25519.SEED_SIZE = 32;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { Converter } from \"@iota/util.js\";\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\nimport { Ed25519 } from \"../signatures/ed25519.mjs\";\n/**\n * Class to help with slip0010 key derivation\n * https://github.com/satoshilabs/slips/blob/master/slip-0010.md.\n */\nexport class Slip0010 {\n /**\n * Get the master key from the seed.\n * @param seed The seed to generate the master key from.\n * @returns The key and chain code.\n */\n static getMasterKeyFromSeed(seed) {\n const hmac = new HmacSha512(Converter.utf8ToBytes(\"ed25519 seed\"));\n const fullKey = hmac.update(seed).digest();\n return {\n privateKey: Uint8Array.from(fullKey.slice(0, 32)),\n chainCode: Uint8Array.from(fullKey.slice(32))\n };\n }\n /**\n * Derive a key from the path.\n * @param seed The seed.\n * @param path The path.\n * @returns The key and chain code.\n */\n static derivePath(seed, path) {\n let { privateKey, chainCode } = Slip0010.getMasterKeyFromSeed(seed);\n const segments = path.numberSegments();\n for (let i = 0; i < segments.length; i++) {\n const indexValue = 0x80000000 + segments[i];\n const data = new Uint8Array(1 + privateKey.length + 4);\n data[0] = 0;\n data.set(privateKey, 1);\n data[privateKey.length + 1] = indexValue >>> 24;\n data[privateKey.length + 2] = indexValue >>> 16;\n data[privateKey.length + 3] = indexValue >>> 8;\n data[privateKey.length + 4] = indexValue & 0xff;\n // eslint-disable-next-line newline-per-chained-call\n const fullKey = new HmacSha512(chainCode).update(data).digest();\n privateKey = Uint8Array.from(fullKey.slice(0, 32));\n chainCode = Uint8Array.from(fullKey.slice(32));\n }\n return {\n privateKey,\n chainCode\n };\n }\n /**\n * Get the public key from the private key.\n * @param privateKey The private key.\n * @param withZeroByte Include a zero bute prefix.\n * @returns The public key.\n */\n static getPublicKey(privateKey, withZeroByte = true) {\n const keyPair = Ed25519.keyPairFromSeed(privateKey);\n const signPk = keyPair.privateKey.slice(32);\n if (withZeroByte) {\n const arr = new Uint8Array(1 + signPk.length);\n arr[0] = 0;\n arr.set(signPk, 1);\n return arr;\n }\n return signPk;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { BigIntHelper } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport { B1T6 } from \"../encoding/b1t6.mjs\";\nimport { Blake2b } from \"../hashes/blake2b.mjs\";\nimport { Curl } from \"../hashes/curl.mjs\";\n/**\n * Helper methods for POW.\n */\nexport class PowHelper {\n /**\n * Perform the score calculation.\n * @param block The data to perform the score on.\n * @returns The score for the data.\n */\n static score(block) {\n // the PoW digest is the hash of block without the nonce\n const powRelevantData = block.slice(0, -8);\n const powDigest = Blake2b.sum256(powRelevantData);\n const nonce = BigIntHelper.read8(block, block.length - 8);\n const zeros = PowHelper.trailingZeros(powDigest, nonce);\n return Math.pow(3, zeros) / block.length;\n }\n /**\n * Calculate the number of zeros required to get target score.\n * @param block The block to process.\n * @param targetScore The target score.\n * @returns The number of zeros to find.\n */\n static calculateTargetZeros(block, targetScore) {\n return Math.ceil(Math.log(block.length * targetScore) / this.LN3);\n }\n /**\n * Calculate the trailing zeros.\n * @param powDigest The pow digest.\n * @param nonce The nonce.\n * @returns The trailing zeros.\n */\n static trailingZeros(powDigest, nonce) {\n const buf = new Int8Array(Curl.HASH_LENGTH);\n const digestTritsLen = B1T6.encode(buf, 0, powDigest);\n const biArr = new Uint8Array(8);\n BigIntHelper.write8(nonce, biArr, 0);\n B1T6.encode(buf, digestTritsLen, biArr);\n const curl = new Curl();\n curl.absorb(buf, 0, Curl.HASH_LENGTH);\n const hash = new Int8Array(Curl.HASH_LENGTH);\n curl.squeeze(hash, 0, Curl.HASH_LENGTH);\n return PowHelper.trinaryTrailingZeros(hash);\n }\n /**\n * Find the number of trailing zeros.\n * @param trits The trits to look for zeros.\n * @param endPos The end position to start looking for zeros.\n * @returns The number of trailing zeros.\n */\n static trinaryTrailingZeros(trits, endPos = trits.length) {\n let z = 0;\n for (let i = endPos - 1; i >= 0 && trits[i] === 0; i--) {\n z++;\n }\n return z;\n }\n /**\n * Perform the hash on the data until we reach target number of zeros.\n * @param powDigest The pow digest.\n * @param targetZeros The target number of zeros.\n * @param startIndex The index to start looking from.\n * @param powInterval The time in seconds that pow should work before aborting.\n * @returns The nonce.\n */\n static performPow(powDigest, targetZeros, startIndex, powInterval) {\n let nonce = bigInt(startIndex);\n let returnNonce;\n const buf = new Int8Array(Curl.HASH_LENGTH);\n const digestTritsLen = B1T6.encode(buf, 0, powDigest);\n const biArr = new Uint8Array(8);\n let end = Number.POSITIVE_INFINITY;\n if (powInterval) {\n end = Date.now() + (powInterval * 1000);\n }\n do {\n BigIntHelper.write8(nonce, biArr, 0);\n B1T6.encode(buf, digestTritsLen, biArr);\n const curlState = new Int8Array(Curl.STATE_LENGTH);\n curlState.set(buf, 0);\n Curl.transform(curlState, 81);\n if (PowHelper.trinaryTrailingZeros(curlState, Curl.HASH_LENGTH) >= targetZeros) {\n returnNonce = nonce;\n }\n else {\n nonce = nonce.plus(1);\n }\n } while (returnNonce === undefined && Date.now() <= end);\n return returnNonce ? returnNonce.toString() : \"0\";\n }\n}\n/**\n * LN3 Const see https://oeis.org/A002391.\n * 1.098612288668109691395245236922525704647490557822749451734694333 .\n */\nPowHelper.LN3 = 1.0986122886681098;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { ArrayHelper, Blake2b } from \"@iota/crypto.js\";\n/**\n * Class to help with Ed25519 Signature scheme.\n */\nexport class Ed25519Address {\n /**\n * Create a new instance of Ed25519Address.\n * @param publicKey The public key for the address.\n */\n constructor(publicKey) {\n this._publicKey = publicKey;\n }\n /**\n * Convert the public key to an address.\n * @returns The address.\n */\n toAddress() {\n return Blake2b.sum256(this._publicKey);\n }\n /**\n * Use the public key to validate the address.\n * @param address The address to verify.\n * @returns True if the data and address is verified.\n */\n verify(address) {\n return ArrayHelper.equal(this.toAddress(), address);\n }\n}\n/**\n * Address size.\n * @internal\n */\nEd25519Address.ADDRESS_LENGTH = Blake2b.SIZE_256;\n","/**\n * The global type for the alias address type.\n */\nexport const ALIAS_ADDRESS_TYPE = 8;\n","/**\n * The global type for the NFT address type.\n */\nexport const NFT_ADDRESS_TYPE = 16;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Blake2b } from \"@iota/crypto.js\";\n/**\n * Byte length for a uint8 field.\n */\nexport const UINT8_SIZE = 1;\n/**\n * Byte length for a uint16 field.\n */\nexport const UINT16_SIZE = 2;\n/**\n * Byte length for a uint32 field.\n */\nexport const UINT32_SIZE = 4;\n/**\n * Byte length for a uint64 field.\n */\nexport const UINT64_SIZE = 8;\n/**\n * Byte length for a uint256 field.\n */\nexport const UINT256_SIZE = 32;\n/**\n * Byte length for a block id.\n */\nexport const BLOCK_ID_LENGTH = Blake2b.SIZE_256;\n/**\n * Byte length for a transaction id.\n */\nexport const TRANSACTION_ID_LENGTH = Blake2b.SIZE_256;\n/**\n * Byte length for a merkle prrof.\n */\nexport const MERKLE_PROOF_LENGTH = Blake2b.SIZE_256;\n/**\n * Byte length for a type length.\n */\nexport const TYPE_LENGTH = UINT32_SIZE;\n/**\n * Byte length for a small type length.\n */\nexport const SMALL_TYPE_LENGTH = UINT8_SIZE;\n/**\n * Byte length for a string length.\n */\nexport const STRING_LENGTH = UINT16_SIZE;\n/**\n * Byte length for an array length.\n */\nexport const ARRAY_LENGTH = UINT16_SIZE;\n","import { ALIAS_ADDRESS_TYPE } from \"../../models/addresses/IAliasAddress.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n// A better place for this id would be in outputs/aliasOutput, but importing it from there\n// causes other constats computed from it to have value NaN during serialization\n/* eslint-disable no-warning-comments */\n// TODO: Find fix for the weird typescript issue\n/**\n * The length of an alias id.\n */\nexport const ALIAS_ID_LENGTH = 32;\n/**\n * The minimum length of an alias address binary representation.\n */\nexport const MIN_ALIAS_ADDRESS_LENGTH = SMALL_TYPE_LENGTH + ALIAS_ID_LENGTH;\n/**\n * Deserialize the alias address from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeAliasAddress(readStream) {\n if (!readStream.hasRemaining(MIN_ALIAS_ADDRESS_LENGTH)) {\n throw new Error(`Alias address data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ALIAS_ADDRESS_LENGTH}`);\n }\n const type = readStream.readUInt8(\"aliasAddress.type\");\n if (type !== ALIAS_ADDRESS_TYPE) {\n throw new Error(`Type mismatch in aliasAddress ${type}`);\n }\n const address = readStream.readFixedHex(\"aliasAddress.aliasId\", ALIAS_ID_LENGTH);\n return {\n type: ALIAS_ADDRESS_TYPE,\n aliasId: address\n };\n}\n/**\n * Serialize the alias address to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeAliasAddress(writeStream, object) {\n writeStream.writeUInt8(\"aliasAddress.type\", object.type);\n writeStream.writeFixedHex(\"aliasAddress.aliasId\", ALIAS_ID_LENGTH, object.aliasId);\n}\n","import { Ed25519Address } from \"../../addressTypes/ed25519Address.mjs\";\nimport { ED25519_ADDRESS_TYPE } from \"../../models/addresses/IEd25519Address.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an ed25519 address binary representation.\n */\nexport const MIN_ED25519_ADDRESS_LENGTH = SMALL_TYPE_LENGTH + Ed25519Address.ADDRESS_LENGTH;\n/**\n * Deserialize the Ed25519 address from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeEd25519Address(readStream) {\n if (!readStream.hasRemaining(MIN_ED25519_ADDRESS_LENGTH)) {\n throw new Error(`Ed25519 address data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ED25519_ADDRESS_LENGTH}`);\n }\n const type = readStream.readUInt8(\"ed25519Address.type\");\n if (type !== ED25519_ADDRESS_TYPE) {\n throw new Error(`Type mismatch in ed25519Address ${type}`);\n }\n const address = readStream.readFixedHex(\"ed25519Address.pubKeyHash\", Ed25519Address.ADDRESS_LENGTH);\n return {\n type: ED25519_ADDRESS_TYPE,\n pubKeyHash: address\n };\n}\n/**\n * Serialize the ed25519 address to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeEd25519Address(writeStream, object) {\n writeStream.writeUInt8(\"ed25519Address.type\", object.type);\n writeStream.writeFixedHex(\"ed25519Address.pubKeyHash\", Ed25519Address.ADDRESS_LENGTH, object.pubKeyHash);\n}\n","import { NFT_ADDRESS_TYPE } from \"../../models/addresses/INftAddress.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n// A better place for this id would be in outputs/nftOutput, but importing it from there\n// causes other constats computed from it to have value NaN during serialization\n/* eslint-disable no-warning-comments */\n// TODO: Find fix for the weird typescript issue\n/**\n * The length of an NFT Id.\n */\nexport const NFT_ID_LENGTH = 32;\n/**\n * The minimum length of an nft address binary representation.\n */\nexport const MIN_NFT_ADDRESS_LENGTH = SMALL_TYPE_LENGTH + NFT_ID_LENGTH;\n/**\n * Deserialize the nft address from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeNftAddress(readStream) {\n if (!readStream.hasRemaining(MIN_NFT_ADDRESS_LENGTH)) {\n throw new Error(`NFT address data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_NFT_ADDRESS_LENGTH}`);\n }\n const type = readStream.readUInt8(\"nftAddress.type\");\n if (type !== NFT_ADDRESS_TYPE) {\n throw new Error(`Type mismatch in nftAddress ${type}`);\n }\n const address = readStream.readFixedHex(\"nftAddress.nftId\", NFT_ID_LENGTH);\n return {\n type: NFT_ADDRESS_TYPE,\n nftId: address\n };\n}\n/**\n * Serialize the nft address to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeNftAddress(writeStream, object) {\n writeStream.writeUInt8(\"nftAddress.type\", object.type);\n writeStream.writeFixedHex(\"nftAddress.nftId\", NFT_ID_LENGTH, object.nftId);\n}\n","import { ALIAS_ADDRESS_TYPE } from \"../../models/addresses/IAliasAddress.mjs\";\nimport { ED25519_ADDRESS_TYPE } from \"../../models/addresses/IEd25519Address.mjs\";\nimport { NFT_ADDRESS_TYPE } from \"../../models/addresses/INftAddress.mjs\";\nimport { deserializeAliasAddress, MIN_ALIAS_ADDRESS_LENGTH, serializeAliasAddress } from \"./aliasAddress.mjs\";\nimport { deserializeEd25519Address, MIN_ED25519_ADDRESS_LENGTH, serializeEd25519Address } from \"./ed25519Address.mjs\";\nimport { deserializeNftAddress, MIN_NFT_ADDRESS_LENGTH, serializeNftAddress } from \"./nftAddress.mjs\";\n/**\n * The minimum length of an address binary representation.\n */\nexport const MIN_ADDRESS_LENGTH = Math.min(MIN_ED25519_ADDRESS_LENGTH, MIN_ALIAS_ADDRESS_LENGTH, MIN_NFT_ADDRESS_LENGTH);\n/**\n * Deserialize the address from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeAddress(readStream) {\n if (!readStream.hasRemaining(MIN_ADDRESS_LENGTH)) {\n throw new Error(`Address data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ADDRESS_LENGTH}`);\n }\n const type = readStream.readUInt8(\"address.type\", false);\n let address;\n if (type === ED25519_ADDRESS_TYPE) {\n address = deserializeEd25519Address(readStream);\n }\n else if (type === ALIAS_ADDRESS_TYPE) {\n address = deserializeAliasAddress(readStream);\n }\n else if (type === NFT_ADDRESS_TYPE) {\n address = deserializeNftAddress(readStream);\n }\n else {\n throw new Error(`Unrecognized address type ${type}`);\n }\n return address;\n}\n/**\n * Serialize the address to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeAddress(writeStream, object) {\n if (object.type === ED25519_ADDRESS_TYPE) {\n serializeEd25519Address(writeStream, object);\n }\n else if (object.type === ALIAS_ADDRESS_TYPE) {\n serializeAliasAddress(writeStream, object);\n }\n else if (object.type === NFT_ADDRESS_TYPE) {\n serializeNftAddress(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized address type ${object.type}`);\n }\n}\n","/**\n * The global type for the ed25519 address type.\n */\nexport const ED25519_ADDRESS_TYPE = 0;\n","/**\n * The global type for the issuer feature.\n */\nexport const ISSUER_FEATURE_TYPE = 1;\n","import { ISSUER_FEATURE_TYPE } from \"../../models/features/IIssuerFeature.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a issuer feature binary representation.\n */\nexport const MIN_ISSUER_FEATURE_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the issuer feature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeIssuerFeature(readStream) {\n if (!readStream.hasRemaining(MIN_ISSUER_FEATURE_LENGTH)) {\n throw new Error(`Issuer Feature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ISSUER_FEATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"issuerFeature.type\");\n if (type !== ISSUER_FEATURE_TYPE) {\n throw new Error(`Type mismatch in issuerFeature ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: ISSUER_FEATURE_TYPE,\n address\n };\n}\n/**\n * Serialize the issuer feature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeIssuerFeature(writeStream, object) {\n writeStream.writeUInt8(\"issuerFeature.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import { SENDER_FEATURE_TYPE } from \"../../models/features/ISenderFeature.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a sender feature binary representation.\n */\nexport const MIN_SENDER_FEATURE_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the sender feature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeSenderFeature(readStream) {\n if (!readStream.hasRemaining(MIN_SENDER_FEATURE_LENGTH)) {\n throw new Error(`Sender Feature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_SENDER_FEATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"senderFeature.type\");\n if (type !== SENDER_FEATURE_TYPE) {\n throw new Error(`Type mismatch in senderFeature ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: SENDER_FEATURE_TYPE,\n address\n };\n}\n/**\n * Serialize the sender feature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeSenderFeature(writeStream, object) {\n writeStream.writeUInt8(\"senderFeature.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import { ISSUER_FEATURE_TYPE } from \"../../models/features/IIssuerFeature.mjs\";\nimport { METADATA_FEATURE_TYPE } from \"../../models/features/IMetadataFeature.mjs\";\nimport { SENDER_FEATURE_TYPE } from \"../../models/features/ISenderFeature.mjs\";\nimport { TAG_FEATURE_TYPE } from \"../../models/features/ITagFeature.mjs\";\nimport { UINT8_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeIssuerFeature, MIN_ISSUER_FEATURE_LENGTH, serializeIssuerFeature } from \"./issuerFeature.mjs\";\nimport { deserializeMetadataFeature, MIN_METADATA_FEATURE_LENGTH, serializeMetadataFeature } from \"./metadataFeature.mjs\";\nimport { deserializeSenderFeature, MIN_SENDER_FEATURE_LENGTH, serializeSenderFeature } from \"./senderFeature.mjs\";\nimport { deserializeTagFeature, MIN_TAG_FEATURE_LENGTH, serializeTagFeature } from \"./tagFeature.mjs\";\n/**\n * The minimum length of a featurs tokens list.\n */\nexport const MIN_FEATURES_LENGTH = UINT8_SIZE;\n/**\n * The minimum length of a feature binary representation.\n */\nexport const MIN_FEATURE_LENGTH = Math.min(MIN_SENDER_FEATURE_LENGTH, MIN_ISSUER_FEATURE_LENGTH, MIN_METADATA_FEATURE_LENGTH, MIN_TAG_FEATURE_LENGTH);\n/**\n * Deserialize the feature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeFeatures(readStream) {\n const numFeatures = readStream.readUInt8(\"features.numFeatures\");\n const features = [];\n for (let i = 0; i < numFeatures; i++) {\n features.push(deserializeFeature(readStream));\n }\n return numFeatures > 0 ? features : undefined;\n}\n/**\n * Serialize the feature to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeFeatures(writeStream, objects) {\n var _a;\n writeStream.writeUInt8(\"features.numFeatures\", (_a = objects === null || objects === void 0 ? void 0 : objects.length) !== null && _a !== void 0 ? _a : 0);\n if (!objects) {\n return;\n }\n for (let i = 0; i < objects.length; i++) {\n serializeFeature(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the feature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeFeature(readStream) {\n if (!readStream.hasRemaining(MIN_FEATURE_LENGTH)) {\n throw new Error(`Feature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_FEATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"feature.type\", false);\n let input;\n if (type === SENDER_FEATURE_TYPE) {\n input = deserializeSenderFeature(readStream);\n }\n else if (type === ISSUER_FEATURE_TYPE) {\n input = deserializeIssuerFeature(readStream);\n }\n else if (type === METADATA_FEATURE_TYPE) {\n input = deserializeMetadataFeature(readStream);\n }\n else if (type === TAG_FEATURE_TYPE) {\n input = deserializeTagFeature(readStream);\n }\n else {\n throw new Error(`Unrecognized feature type ${type}`);\n }\n return input;\n}\n/**\n * Serialize the feature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeFeature(writeStream, object) {\n if (object.type === SENDER_FEATURE_TYPE) {\n serializeSenderFeature(writeStream, object);\n }\n else if (object.type === ISSUER_FEATURE_TYPE) {\n serializeIssuerFeature(writeStream, object);\n }\n else if (object.type === METADATA_FEATURE_TYPE) {\n serializeMetadataFeature(writeStream, object);\n }\n else if (object.type === TAG_FEATURE_TYPE) {\n serializeTagFeature(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized feature type ${object.type}`);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { HexHelper } from \"@iota/util.js\";\nimport { METADATA_FEATURE_TYPE } from \"../../models/features/IMetadataFeature.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a metadata feature block binary representation.\n */\nexport const MIN_METADATA_FEATURE_LENGTH = SMALL_TYPE_LENGTH + UINT16_SIZE;\n/**\n * Deserialize the metadata feature block from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeMetadataFeature(readStream) {\n if (!readStream.hasRemaining(MIN_METADATA_FEATURE_LENGTH)) {\n throw new Error(`Metadata Feature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_METADATA_FEATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"metadataFeature.type\");\n if (type !== METADATA_FEATURE_TYPE) {\n throw new Error(`Type mismatch in metadataFeature ${type}`);\n }\n const dataLength = readStream.readUInt16(\"metadataFeature.dataLength\");\n const data = readStream.readFixedHex(\"metadataFeature.data\", dataLength);\n return {\n type: METADATA_FEATURE_TYPE,\n data\n };\n}\n/**\n * Serialize the metadata feature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeMetadataFeature(writeStream, object) {\n writeStream.writeUInt8(\"metadataFeature.type\", object.type);\n const data = HexHelper.stripPrefix(object.data);\n writeStream.writeUInt16(\"metadataFeature.dataLength\", data.length / 2);\n writeStream.writeFixedHex(\"metadataFeature.data\", data.length / 2, data);\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { HexHelper } from \"@iota/util.js\";\nimport { TAG_FEATURE_TYPE } from \"../../models/features/ITagFeature.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT8_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a tag feature binary representation.\n */\nexport const MIN_TAG_FEATURE_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT8_SIZE; // Length\n/**\n * Deserialize the tag feature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTagFeature(readStream) {\n if (!readStream.hasRemaining(MIN_TAG_FEATURE_LENGTH)) {\n throw new Error(`Tag Feature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TAG_FEATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"tagFeature.type\");\n if (type !== TAG_FEATURE_TYPE) {\n throw new Error(`Type mismatch in tagFeature ${type}`);\n }\n const tagLength = readStream.readUInt8(\"tagFeature.tagLength\");\n const tag = readStream.readFixedHex(\"tagFeature.tag\", tagLength);\n return {\n type: TAG_FEATURE_TYPE,\n tag\n };\n}\n/**\n * Serialize the tag feature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTagFeature(writeStream, object) {\n writeStream.writeUInt8(\"tagFeature.type\", object.type);\n const tag = HexHelper.stripPrefix(object.tag);\n writeStream.writeUInt8(\"tagFeature.tagLength\", tag.length / 2);\n writeStream.writeFixedHex(\"tagFeature.tag\", tag.length / 2, tag);\n}\n","/**\n * The global type for the sender feature.\n */\nexport const SENDER_FEATURE_TYPE = 0;\n","/**\n * The global type for the metadata feature.\n */\nexport const METADATA_FEATURE_TYPE = 2;\n","/**\n * The global type for the tag feature.\n */\nexport const TAG_FEATURE_TYPE = 3;\n","import bigInt from \"big-integer\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"./addresses/addresses.mjs\";\nimport { UINT64_SIZE } from \"./commonDataTypes.mjs\";\n/**\n * The length of the tail hash length in bytes.\n */\nexport const TAIL_HASH_LENGTH = 49;\n/**\n * The minimum length of a migrated fund binary representation.\n */\nexport const MIN_MIGRATED_FUNDS_LENGTH = TAIL_HASH_LENGTH + // tailTransactionHash\n MIN_ADDRESS_LENGTH + // address\n UINT64_SIZE; // deposit\n/**\n * The maximum number of funds.\n */\nexport const MAX_FUNDS_COUNT = 127;\n/**\n * Deserialize the receipt payload funds from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeFunds(readStream) {\n const numFunds = readStream.readUInt16(\"funds.numFunds\");\n const funds = [];\n for (let i = 0; i < numFunds; i++) {\n funds.push(deserializeMigratedFunds(readStream));\n }\n return funds;\n}\n/**\n * Serialize the receipt payload funds to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeFunds(writeStream, objects) {\n if (objects.length > MAX_FUNDS_COUNT) {\n throw new Error(`The maximum number of funds is ${MAX_FUNDS_COUNT}, you have provided ${objects.length}`);\n }\n writeStream.writeUInt16(\"funds.numFunds\", objects.length);\n for (let i = 0; i < objects.length; i++) {\n serializeMigratedFunds(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the migrated fund from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeMigratedFunds(readStream) {\n if (!readStream.hasRemaining(MIN_MIGRATED_FUNDS_LENGTH)) {\n throw new Error(`Migrated funds data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_MIGRATED_FUNDS_LENGTH}`);\n }\n const tailTransactionHash = readStream.readFixedHex(\"migratedFunds.tailTransactionHash\", TAIL_HASH_LENGTH);\n const address = deserializeAddress(readStream);\n const deposit = readStream.readUInt64(\"migratedFunds.deposit\");\n return {\n tailTransactionHash,\n address,\n deposit: deposit.toString()\n };\n}\n/**\n * Serialize the migrated funds to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeMigratedFunds(writeStream, object) {\n writeStream.writeFixedHex(\"migratedFunds.tailTransactionHash\", TAIL_HASH_LENGTH, object.tailTransactionHash);\n serializeAddress(writeStream, object.address);\n writeStream.writeUInt64(\"migratedFunds.deposit\", bigInt(object.deposit));\n}\n","/**\n * The global type for the treasury input.\n */\nexport const TREASURY_INPUT_TYPE = 1;\n","import { TREASURY_INPUT_TYPE } from \"../../models/inputs/ITreasuryInput.mjs\";\nimport { SMALL_TYPE_LENGTH, TRANSACTION_ID_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a treasury input binary representation.\n */\nexport const MIN_TREASURY_INPUT_LENGTH = SMALL_TYPE_LENGTH + TRANSACTION_ID_LENGTH;\n/**\n * Deserialize the treasury input from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTreasuryInput(readStream) {\n if (!readStream.hasRemaining(MIN_TREASURY_INPUT_LENGTH)) {\n throw new Error(`Treasury Input data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TREASURY_INPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"treasuryInput.type\");\n if (type !== TREASURY_INPUT_TYPE) {\n throw new Error(`Type mismatch in treasuryInput ${type}`);\n }\n const milestoneId = readStream.readFixedHex(\"treasuryInput.milestoneId\", TRANSACTION_ID_LENGTH);\n return {\n type: TREASURY_INPUT_TYPE,\n milestoneId\n };\n}\n/**\n * Serialize the treasury input to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTreasuryInput(writeStream, object) {\n writeStream.writeUInt8(\"treasuryInput.type\", object.type);\n writeStream.writeFixedHex(\"treasuryInput.milestoneId\", TRANSACTION_ID_LENGTH, object.milestoneId);\n}\n","import { UTXO_INPUT_TYPE } from \"../../models/inputs/IUTXOInput.mjs\";\nimport { SMALL_TYPE_LENGTH, TRANSACTION_ID_LENGTH, UINT16_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a utxo input binary representation.\n */\nexport const MIN_UTXO_INPUT_LENGTH = SMALL_TYPE_LENGTH + TRANSACTION_ID_LENGTH + UINT16_SIZE;\n/**\n * Deserialize the utxo input from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeUTXOInput(readStream) {\n if (!readStream.hasRemaining(MIN_UTXO_INPUT_LENGTH)) {\n throw new Error(`UTXO Input data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_UTXO_INPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"utxoInput.type\");\n if (type !== UTXO_INPUT_TYPE) {\n throw new Error(`Type mismatch in utxoInput ${type}`);\n }\n const transactionId = readStream.readFixedHex(\"utxoInput.transactionId\", TRANSACTION_ID_LENGTH);\n const transactionOutputIndex = readStream.readUInt16(\"utxoInput.transactionOutputIndex\");\n return {\n type: UTXO_INPUT_TYPE,\n transactionId,\n transactionOutputIndex\n };\n}\n/**\n * Serialize the utxo input to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeUTXOInput(writeStream, object) {\n writeStream.writeUInt8(\"utxoInput.type\", object.type);\n writeStream.writeFixedHex(\"utxoInput.transactionId\", TRANSACTION_ID_LENGTH, object.transactionId);\n writeStream.writeUInt16(\"utxoInput.transactionOutputIndex\", object.transactionOutputIndex);\n}\n","import { TREASURY_INPUT_TYPE } from \"../../models/inputs/ITreasuryInput.mjs\";\nimport { UTXO_INPUT_TYPE } from \"../../models/inputs/IUTXOInput.mjs\";\nimport { deserializeTreasuryInput, MIN_TREASURY_INPUT_LENGTH, serializeTreasuryInput } from \"./treasuryInput.mjs\";\nimport { deserializeUTXOInput, MIN_UTXO_INPUT_LENGTH, serializeUTXOInput } from \"./utxoInput.mjs\";\n/**\n * The minimum length of an input binary representation.\n */\nexport const MIN_INPUT_LENGTH = Math.min(MIN_UTXO_INPUT_LENGTH, MIN_TREASURY_INPUT_LENGTH);\n/**\n * The minimum number of inputs.\n */\nexport const MIN_INPUT_COUNT = 1;\n/**\n * The maximum number of inputs.\n */\nexport const MAX_INPUT_COUNT = 128;\n/**\n * Deserialize the inputs from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeInputs(readStream) {\n const numInputs = readStream.readUInt16(\"inputs.numInputs\");\n const inputs = [];\n for (let i = 0; i < numInputs; i++) {\n inputs.push(deserializeInput(readStream));\n }\n return inputs;\n}\n/**\n * Serialize the inputs to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeInputs(writeStream, objects) {\n if (objects.length < MIN_INPUT_COUNT) {\n throw new Error(`The minimum number of inputs is ${MIN_INPUT_COUNT}, you have provided ${objects.length}`);\n }\n if (objects.length > MAX_INPUT_COUNT) {\n throw new Error(`The maximum number of inputs is ${MAX_INPUT_COUNT}, you have provided ${objects.length}`);\n }\n writeStream.writeUInt16(\"inputs.numInputs\", objects.length);\n for (let i = 0; i < objects.length; i++) {\n serializeInput(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the input from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeInput(readStream) {\n if (!readStream.hasRemaining(MIN_INPUT_LENGTH)) {\n throw new Error(`Input data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_INPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"input.type\", false);\n let input;\n if (type === UTXO_INPUT_TYPE) {\n input = deserializeUTXOInput(readStream);\n }\n else if (type === TREASURY_INPUT_TYPE) {\n input = deserializeTreasuryInput(readStream);\n }\n else {\n throw new Error(`Unrecognized input type ${type}`);\n }\n return input;\n}\n/**\n * Serialize the input to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeInput(writeStream, object) {\n if (object.type === UTXO_INPUT_TYPE) {\n serializeUTXOInput(writeStream, object);\n }\n else if (object.type === TREASURY_INPUT_TYPE) {\n serializeTreasuryInput(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized input type ${object.type}`);\n }\n}\n","/**\n * The global type for the input.\n */\nexport const UTXO_INPUT_TYPE = 0;\n","import { RECEIPT_MILESTONE_OPTION_TYPE } from \"../../models/milestoneOptions/IReceiptMilestoneOption.mjs\";\nimport { TREASURY_TRANSACTION_PAYLOAD_TYPE } from \"../../models/payloads/ITreasuryTransactionPayload.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE, UINT32_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeFunds, MIN_MIGRATED_FUNDS_LENGTH, serializeFunds } from \"../funds.mjs\";\nimport { deserializePayload, serializePayload } from \"../payloads/payloads.mjs\";\n/**\n * The minimum length of a receipt milestone option binary representation.\n */\nexport const MIN_RECEIPT_MILESTONE_OPTION_LENGTH = SMALL_TYPE_LENGTH +\n UINT32_SIZE + // migratedAt\n UINT16_SIZE + // numFunds\n MIN_MIGRATED_FUNDS_LENGTH; // 1 Fund\n/**\n * Deserialize the receipt milestone option from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeReceiptMilestoneOption(readStream) {\n if (!readStream.hasRemaining(MIN_RECEIPT_MILESTONE_OPTION_LENGTH)) {\n throw new Error(`Receipt Milestone Option data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_RECEIPT_MILESTONE_OPTION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"receiptMilestoneOption.type\");\n if (type !== RECEIPT_MILESTONE_OPTION_TYPE) {\n throw new Error(`Type mismatch in receiptMilestoneOption ${type}`);\n }\n const migratedAt = readStream.readUInt32(\"receiptMilestoneOption.migratedAt\");\n const final = readStream.readBoolean(\"receiptMilestoneOption.final\");\n const funds = deserializeFunds(readStream);\n const treasuryTransactionPayload = deserializePayload(readStream);\n if ((treasuryTransactionPayload === null || treasuryTransactionPayload === void 0 ? void 0 : treasuryTransactionPayload.type) !== TREASURY_TRANSACTION_PAYLOAD_TYPE) {\n throw new Error(`receiptMilestoneOption can only contain treasury payloads ${type}`);\n }\n return {\n type: RECEIPT_MILESTONE_OPTION_TYPE,\n migratedAt,\n final,\n funds,\n transaction: treasuryTransactionPayload\n };\n}\n/**\n * Serialize the receipt milestone option to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeReceiptMilestoneOption(writeStream, object) {\n writeStream.writeUInt8(\"receiptMilestoneOption.type\", object.type);\n writeStream.writeUInt32(\"receiptMilestoneOption.migratedAt\", object.migratedAt);\n writeStream.writeBoolean(\"receiptMilestoneOption.final\", object.final);\n serializeFunds(writeStream, object.funds);\n serializePayload(writeStream, object.transaction);\n}\n","/**\n * The global type for the option.\n */\nexport const RECEIPT_MILESTONE_OPTION_TYPE = 0;\n","/**\n * The global type for the payload.\n */\nexport const TREASURY_TRANSACTION_PAYLOAD_TYPE = 4;\n","import { PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE } from \"../../models/milestoneOptions/IProtocolParamsMilestoneOption.mjs\";\nimport { RECEIPT_MILESTONE_OPTION_TYPE } from \"../../models/milestoneOptions/IReceiptMilestoneOption.mjs\";\nimport { deserializeProtocolParamsMilestoneOption, MIN_PROTOCOL_PARAMS_MILESTONE_OPTION_LENGTH, serializeProtocolParamsMilestoneOption } from \"../milestoneOptions/protocolParamsMilestoneOption.mjs\";\nimport { deserializeReceiptMilestoneOption, MIN_RECEIPT_MILESTONE_OPTION_LENGTH, serializeReceiptMilestoneOption } from \"../milestoneOptions/receiptMilestoneOption.mjs\";\n/**\n * The minimum length of a milestone option binary representation.\n */\nexport const MIN_MILESTONE_OPTION_LENGTH = Math.min(MIN_RECEIPT_MILESTONE_OPTION_LENGTH, MIN_PROTOCOL_PARAMS_MILESTONE_OPTION_LENGTH);\n/**\n * Deserialize the milestone options from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeMilestoneOptions(readStream) {\n const optionsCount = readStream.readUInt8(\"milestoneOptions.optionsCount\");\n const milestoneOptions = [];\n for (let i = 0; i < optionsCount; i++) {\n milestoneOptions.push(deserializeMilestoneOption(readStream));\n }\n return milestoneOptions;\n}\n/**\n * Serialize the milestone options to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeMilestoneOptions(writeStream, objects) {\n writeStream.writeUInt8(\"milestoneOptions.optionsCount\", objects.length);\n for (let i = 0; i < objects.length; i++) {\n serializeMilestoneOption(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the milestone options from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeMilestoneOption(readStream) {\n if (!readStream.hasRemaining(MIN_MILESTONE_OPTION_LENGTH)) {\n throw new Error(`Milestone option data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_MILESTONE_OPTION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"milestoneOption.type\", false);\n let option;\n if (type === RECEIPT_MILESTONE_OPTION_TYPE) {\n option = deserializeReceiptMilestoneOption(readStream);\n }\n else if (type === PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE) {\n option = deserializeProtocolParamsMilestoneOption(readStream);\n }\n else {\n throw new Error(`Unrecognized milestone option type ${type}`);\n }\n return option;\n}\n/**\n * Serialize the milestone option to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeMilestoneOption(writeStream, object) {\n if (object.type === RECEIPT_MILESTONE_OPTION_TYPE) {\n serializeReceiptMilestoneOption(writeStream, object);\n }\n else if (object.type === PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE) {\n serializeProtocolParamsMilestoneOption(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized milestone option type ${object.type}`);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { HexHelper } from \"@iota/util.js\";\nimport { PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE } from \"../../models/milestoneOptions/IProtocolParamsMilestoneOption.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE, UINT32_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a protocol params milestone option binary representation.\n */\nexport const MIN_PROTOCOL_PARAMS_MILESTONE_OPTION_LENGTH = SMALL_TYPE_LENGTH + // type\n UINT32_SIZE + // targetMilestoneIndex\n SMALL_TYPE_LENGTH + // protocolVersion\n UINT16_SIZE; // params\n/**\n * Deserialize the protocol params milestone option from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeProtocolParamsMilestoneOption(readStream) {\n if (!readStream.hasRemaining(MIN_PROTOCOL_PARAMS_MILESTONE_OPTION_LENGTH)) {\n throw new Error(`Protocol params Milestone Option data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_PROTOCOL_PARAMS_MILESTONE_OPTION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"protocolParamsMilestoneOption.type\");\n if (type !== PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE) {\n throw new Error(`Type mismatch in protocolParamsMilestoneOption ${type}`);\n }\n const targetMilestoneIndex = readStream.readUInt32(\"protocolParamsMilestoneOption.targetMilestoneIndex\");\n const protocolVersion = readStream.readUInt8(\"protocolParamsMilestoneOption.protocolVersion\");\n const paramsLength = readStream.readUInt16(\"payloadMilestone.paramsLength\");\n const params = readStream.readFixedHex(\"payloadMilestone.metadata\", paramsLength);\n return {\n type: PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE,\n targetMilestoneIndex,\n protocolVersion,\n params\n };\n}\n/**\n * Serialize the protocol params milestone option to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeProtocolParamsMilestoneOption(writeStream, object) {\n writeStream.writeUInt8(\"protocolParamsMilestoneOption.type\", object.type);\n writeStream.writeUInt32(\"protocolParamsMilestoneOption.targetMilestoneIndex\", object.targetMilestoneIndex);\n writeStream.writeUInt8(\"protocolParamsMilestoneOption.protocolVersion\", object.protocolVersion);\n const params = HexHelper.stripPrefix(object.params);\n writeStream.writeUInt16(\"protocolParamsMilestoneOption.paramsLength\", params.length / 2);\n writeStream.writeFixedHex(\"protocolParamsMilestoneOption.params\", params.length / 2, params);\n}\n","/**\n * The global type for the option.\n */\nexport const PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE = 1;\n","/**\n * The global type for the signature type.\n */\nexport const ED25519_SIGNATURE_TYPE = 0;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Ed25519 } from \"@iota/crypto.js\";\nimport { ED25519_SIGNATURE_TYPE } from \"../../models/signatures/IEd25519Signature.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an ed25519 signature binary representation.\n */\nexport const MIN_ED25519_SIGNATURE_LENGTH = SMALL_TYPE_LENGTH + Ed25519.SIGNATURE_SIZE + Ed25519.PUBLIC_KEY_SIZE;\n/**\n * Deserialize the Ed25519 signature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeEd25519Signature(readStream) {\n if (!readStream.hasRemaining(MIN_ED25519_SIGNATURE_LENGTH)) {\n throw new Error(`Ed25519 signature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ED25519_SIGNATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"ed25519Signature.type\");\n if (type !== ED25519_SIGNATURE_TYPE) {\n throw new Error(`Type mismatch in ed25519Signature ${type}`);\n }\n const publicKey = readStream.readFixedHex(\"ed25519Signature.publicKey\", Ed25519.PUBLIC_KEY_SIZE);\n const signature = readStream.readFixedHex(\"ed25519Signature.signature\", Ed25519.SIGNATURE_SIZE);\n return {\n type: ED25519_SIGNATURE_TYPE,\n publicKey,\n signature\n };\n}\n/**\n * Serialize the Ed25519 signature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeEd25519Signature(writeStream, object) {\n writeStream.writeUInt8(\"ed25519Signature.type\", object.type);\n writeStream.writeFixedHex(\"ed25519Signature.publicKey\", Ed25519.PUBLIC_KEY_SIZE, object.publicKey);\n writeStream.writeFixedHex(\"ed25519Signature.signature\", Ed25519.SIGNATURE_SIZE, object.signature);\n}\n","import { ED25519_SIGNATURE_TYPE } from \"../../models/signatures/IEd25519Signature.mjs\";\nimport { deserializeEd25519Signature, MIN_ED25519_SIGNATURE_LENGTH, serializeEd25519Signature } from \"./ed25519Signature.mjs\";\n/**\n * The minimum length of a signature binary representation.\n */\nexport const MIN_SIGNATURE_LENGTH = MIN_ED25519_SIGNATURE_LENGTH;\n/**\n * Deserialize the signature from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeSignature(readStream) {\n if (!readStream.hasRemaining(MIN_SIGNATURE_LENGTH)) {\n throw new Error(`Signature data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_SIGNATURE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"signature.type\", false);\n let signature;\n if (type === ED25519_SIGNATURE_TYPE) {\n signature = deserializeEd25519Signature(readStream);\n }\n else {\n throw new Error(`Unrecognized signature type ${type}`);\n }\n return signature;\n}\n/**\n * Serialize the signature to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeSignature(writeStream, object) {\n if (object.type === ED25519_SIGNATURE_TYPE) {\n serializeEd25519Signature(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized signature type ${object.type}`);\n }\n}\n","import { HexHelper } from \"@iota/util.js\";\nimport { MILESTONE_PAYLOAD_TYPE } from \"../../models/payloads/IMilestonePayload.mjs\";\nimport { MAX_NUMBER_PARENTS, MIN_NUMBER_PARENTS } from \"../block.mjs\";\nimport { MERKLE_PROOF_LENGTH, BLOCK_ID_LENGTH, TYPE_LENGTH, UINT8_SIZE, UINT16_SIZE, UINT32_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeMilestoneOptions, serializeMilestoneOptions } from \"../milestoneOptions/milestoneOptions.mjs\";\nimport { MIN_ED25519_SIGNATURE_LENGTH } from \"../signatures/ed25519Signature.mjs\";\nimport { deserializeSignature, serializeSignature } from \"../signatures/signatures.mjs\";\n/**\n * The minimum length of a milestone payload binary representation.\n */\nexport const MIN_MILESTONE_PAYLOAD_LENGTH = TYPE_LENGTH + // min payload\n UINT32_SIZE + // index\n UINT32_SIZE + // timestamp\n BLOCK_ID_LENGTH + // last milestone id\n BLOCK_ID_LENGTH + // parent 1\n BLOCK_ID_LENGTH + // parent 2\n 2 * MERKLE_PROOF_LENGTH + // merkle proof\n UINT8_SIZE + // optionsCount\n UINT16_SIZE + // metadata\n UINT8_SIZE + // signatureCount\n MIN_ED25519_SIGNATURE_LENGTH; // 1 signature\n/**\n * Deserialize the milestone payload from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeMilestonePayload(readStream) {\n if (!readStream.hasRemaining(MIN_MILESTONE_PAYLOAD_LENGTH)) {\n throw new Error(`Milestone Payload data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_MILESTONE_PAYLOAD_LENGTH}`);\n }\n const type = readStream.readUInt32(\"payloadMilestone.type\");\n if (type !== MILESTONE_PAYLOAD_TYPE) {\n throw new Error(`Type mismatch in payloadMilestone ${type}`);\n }\n const index = readStream.readUInt32(\"payloadMilestone.index\");\n const timestamp = readStream.readUInt32(\"payloadMilestone.timestamp\");\n const protocolVersion = readStream.readUInt8(\"payloadMileston.protocolVersion\");\n const previousMilestoneId = readStream.readFixedHex(\"payloadMilestone.previousMilestoneId\", BLOCK_ID_LENGTH);\n const numParents = readStream.readUInt8(\"payloadMilestone.numParents\");\n const parents = [];\n for (let i = 0; i < numParents; i++) {\n const parentBlockId = readStream.readFixedHex(`payloadMilestone.parentBlockId${i + 1}`, BLOCK_ID_LENGTH);\n parents.push(parentBlockId);\n }\n const inclusionMerkleRoot = readStream.readFixedHex(\"payloadMilestone.inclusionMerkleRoot\", MERKLE_PROOF_LENGTH);\n const appliedMerkleRoot = readStream.readFixedHex(\"payloadMilestone.appliedMerkleRoot\", MERKLE_PROOF_LENGTH);\n const metadataLength = readStream.readUInt16(\"payloadMilestone.metadataLength\");\n const metadata = readStream.readFixedHex(\"payloadMilestone.metadata\", metadataLength);\n const options = deserializeMilestoneOptions(readStream);\n const signaturesCount = readStream.readUInt8(\"payloadMilestone.signaturesCount\");\n const signatures = [];\n for (let i = 0; i < signaturesCount; i++) {\n signatures.push(deserializeSignature(readStream));\n }\n return {\n type: MILESTONE_PAYLOAD_TYPE,\n index,\n timestamp: Number(timestamp),\n protocolVersion,\n previousMilestoneId,\n parents,\n inclusionMerkleRoot,\n appliedMerkleRoot,\n metadata,\n options,\n signatures\n };\n}\n/**\n * Serialize the milestone payload to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeMilestonePayload(writeStream, object) {\n writeStream.writeUInt32(\"payloadMilestone.type\", object.type);\n serializeMilestoneEssence(writeStream, object);\n writeStream.writeUInt8(\"payloadMilestone.signaturesCount\", object.signatures.length);\n for (let i = 0; i < object.signatures.length; i++) {\n serializeSignature(writeStream, object.signatures[i]);\n }\n}\n/**\n * Serialize the milestone payload to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeMilestoneEssence(writeStream, object) {\n writeStream.writeUInt32(\"payloadMilestone.index\", object.index);\n writeStream.writeUInt32(\"payloadMilestone.timestamp\", object.timestamp);\n writeStream.writeUInt8(\"payloadMilesone.protocolVersion\", object.protocolVersion);\n writeStream.writeFixedHex(\"payloadMilestone.previousMilestoneId\", BLOCK_ID_LENGTH, object.previousMilestoneId);\n if (object.parents.length < MIN_NUMBER_PARENTS) {\n throw new Error(`A minimum of ${MIN_NUMBER_PARENTS} parents is allowed, you provided ${object.parents.length}`);\n }\n if (object.parents.length > MAX_NUMBER_PARENTS) {\n throw new Error(`A maximum of ${MAX_NUMBER_PARENTS} parents is allowed, you provided ${object.parents.length}`);\n }\n if (new Set(object.parents).size !== object.parents.length) {\n throw new Error(\"The milestone parents must be unique\");\n }\n const sorted = object.parents.slice().sort();\n writeStream.writeUInt8(\"payloadMilestone.numParents\", object.parents.length);\n for (let i = 0; i < object.parents.length; i++) {\n if (sorted[i] !== object.parents[i]) {\n throw new Error(\"The milestone parents must be lexographically sorted\");\n }\n writeStream.writeFixedHex(`payloadMilestone.parentBlockId${i + 1}`, BLOCK_ID_LENGTH, object.parents[i]);\n }\n writeStream.writeFixedHex(\"payloadMilestone.inclusionMerkleRoot\", MERKLE_PROOF_LENGTH, object.inclusionMerkleRoot);\n writeStream.writeFixedHex(\"payloadMilestone.appliedMerkleRoot\", MERKLE_PROOF_LENGTH, object.appliedMerkleRoot);\n if (object.metadata) {\n const metadata = HexHelper.stripPrefix(object.metadata);\n writeStream.writeUInt16(\"payloadMilestone.metadataLength\", metadata.length / 2);\n if (metadata.length > 0) {\n writeStream.writeFixedHex(\"payloadMilestone.metadata\", metadata.length / 2, metadata);\n }\n }\n else {\n writeStream.writeUInt16(\"payloadMilestone.metadataLength\", 0);\n }\n if (object.options) {\n serializeMilestoneOptions(writeStream, object.options);\n }\n else {\n writeStream.writeUInt8(\"milestoneOptions.optionsCount\", 0);\n }\n}\n","/**\n * The global type for the payload.\n */\nexport const MILESTONE_PAYLOAD_TYPE = 7;\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Blake2b } from \"@iota/crypto.js\";\n/**\n * The global type for the transaction essence.\n */\nexport const TRANSACTION_ESSENCE_TYPE = 1;\n/**\n * Inputs commitment size.\n */\nexport const INPUTS_COMMITMENT_SIZE = Blake2b.SIZE_256;\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}","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}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { HexHelper } from \"@iota/util.js\";\nimport { MIN_ALIAS_ADDRESS_LENGTH } from \"./addresses/aliasAddress.mjs\";\nimport { UINT32_SIZE, UINT8_SIZE } from \"./commonDataTypes.mjs\";\n/**\n * The minimum length of a native tokens list.\n */\nexport const MIN_NATIVE_TOKENS_LENGTH = UINT8_SIZE;\n/**\n * The length of a foundry id.\n */\nexport const FOUNDRY_ID_LENGTH = MIN_ALIAS_ADDRESS_LENGTH + UINT32_SIZE + UINT8_SIZE;\n/**\n * The length of a native token id.\n */\nexport const NATIVE_TOKEN_ID_LENGTH = FOUNDRY_ID_LENGTH;\n/**\n * The maximum number of native tokens.\n */\nexport const MAX_NATIVE_TOKEN_COUNT = 64;\n/**\n * Deserialize the natovetokens from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeNativeTokens(readStream) {\n const numNativeTokens = readStream.readUInt8(\"nativeTokens.numNativeTokens\");\n const nativeTokens = [];\n for (let i = 0; i < numNativeTokens; i++) {\n nativeTokens.push(deserializeNativeToken(readStream));\n }\n return numNativeTokens > 0 ? nativeTokens : undefined;\n}\n/**\n * Serialize the natove tokens to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeNativeTokens(writeStream, object) {\n var _a;\n writeStream.writeUInt8(\"nativeTokens.numNativeTokens\", (_a = object === null || object === void 0 ? void 0 : object.length) !== null && _a !== void 0 ? _a : 0);\n if (!object) {\n return;\n }\n for (let i = 0; i < object.length; i++) {\n serializeNativeToken(writeStream, object[i]);\n }\n}\n/**\n * Deserialize the native token from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeNativeToken(readStream) {\n const id = readStream.readFixedHex(\"nativeToken.id\", NATIVE_TOKEN_ID_LENGTH);\n const amount = readStream.readUInt256(\"nativeToken.amount\");\n return {\n id,\n amount: HexHelper.fromBigInt256(amount)\n };\n}\n/**\n * Serialize the native token to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeNativeToken(writeStream, object) {\n writeStream.writeFixedHex(\"nativeToken.id\", NATIVE_TOKEN_ID_LENGTH, object.id);\n writeStream.writeUInt256(\"nativeToken.amount\", HexHelper.toBigInt256(object.amount));\n}\n","/**\n * The global type for the address unlock condition.\n */\nexport const ADDRESS_UNLOCK_CONDITION_TYPE = 0;\n","import { ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IAddressUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an address unlock condition binary representation.\n */\nexport const MIN_ADDRESS_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the address unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeAddressUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_ADDRESS_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Address unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ADDRESS_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"addressUnlockCondition.type\");\n if (type !== ADDRESS_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in addressUnlockCondition ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: ADDRESS_UNLOCK_CONDITION_TYPE,\n address\n };\n}\n/**\n * Serialize the address unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeAddressUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"addressUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import { EXPIRATION_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IExpirationUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT32_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an expiration unlock condition binary representation.\n */\nexport const MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH +\n MIN_ADDRESS_LENGTH +\n UINT32_SIZE;\n/**\n * Deserialize the expiration unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeExpirationUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Expiration unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"expirationUnlockCondition.type\");\n if (type !== EXPIRATION_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in expirationUnlockCondition ${type}`);\n }\n const returnAddress = deserializeAddress(readStream);\n const unixTime = readStream.readUInt32(\"expirationUnlockCondition.unixTime\");\n const expirationUnlockCondition = {\n type: EXPIRATION_UNLOCK_CONDITION_TYPE,\n returnAddress,\n unixTime\n };\n return expirationUnlockCondition;\n}\n/**\n * Serialize the expiration unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeExpirationUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"expirationUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.returnAddress);\n writeStream.writeUInt32(\"expirationUnlockCondition.unixTime\", object.unixTime);\n}\n","import { IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IImmutableAliasUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an immutable alias unlock condition binary representation.\n */\nexport const MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the immutable alias unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeImmutableAliasUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Immutable Alias unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"immutableAliasUnlockCondition.type\");\n if (type !== IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in immutableAliasUnlockCondition ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE,\n address\n };\n}\n/**\n * Serialize the immutable alias unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeImmutableAliasUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"immutableAliasUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import { GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IGovernorAddressUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an governor unlock condition binary representation.\n */\nexport const MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the governor address unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeGovernorAddressUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Governor unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"governorUnlockCondition.type\");\n if (type !== GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in governorUnlockCondition ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE,\n address\n };\n}\n/**\n * Serialize the governor address unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeGovernorAddressUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"governorUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import { STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IStateControllerAddressUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an state controller address unlock condition binary representation.\n */\nexport const MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH + MIN_ADDRESS_LENGTH;\n/**\n * Deserialize the state controller address unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeStateControllerAddressUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`State controller addres unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"stateControllerAddresUnlockCondition.type\");\n if (type !== STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in stateControllerAddresUnlockCondition ${type}`);\n }\n const address = deserializeAddress(readStream);\n return {\n type: STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE,\n address\n };\n}\n/**\n * Serialize the state controller address unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeStateControllerAddressUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"stateControllerAddressUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.address);\n}\n","import bigInt from \"big-integer\";\nimport { STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IStorageDepositReturnUnlockCondition.mjs\";\nimport { deserializeAddress, MIN_ADDRESS_LENGTH, serializeAddress } from \"../addresses/addresses.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT64_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an storage deposit return unlock condition binary representation.\n */\nexport const MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH +\n MIN_ADDRESS_LENGTH +\n UINT64_SIZE;\n/**\n * Deserialize the storage deposit return unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeStorageDepositReturnUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Storage deposit return unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"storageDepositReturnUnlockCondition.type\");\n if (type !== STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in storagDepositReturnUnlockCondition ${type}`);\n }\n const returnAddress = deserializeAddress(readStream);\n const amount = readStream.readUInt64(\"storageDepositReturnUnlockCondition.amount\");\n return {\n type: STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE,\n returnAddress,\n amount: amount.toString()\n };\n}\n/**\n * Serialize the storage deposit return unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeStorageDepositReturnUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"storageDepositReturnUnlockCondition.type\", object.type);\n serializeAddress(writeStream, object.returnAddress);\n writeStream.writeUInt64(\"storageDepositReturnUnlockCondition.amount\", bigInt(object.amount));\n}\n","import { ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IAddressUnlockCondition.mjs\";\nimport { EXPIRATION_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IExpirationUnlockCondition.mjs\";\nimport { GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IGovernorAddressUnlockCondition.mjs\";\nimport { IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IImmutableAliasUnlockCondition.mjs\";\nimport { STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IStateControllerAddressUnlockCondition.mjs\";\nimport { STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/IStorageDepositReturnUnlockCondition.mjs\";\nimport { TIMELOCK_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/ITimelockUnlockCondition.mjs\";\nimport { UINT8_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeAddressUnlockCondition, MIN_ADDRESS_UNLOCK_CONDITION_LENGTH, serializeAddressUnlockCondition } from \"../unlockConditions/addressUnlockCondition.mjs\";\nimport { deserializeExpirationUnlockCondition, MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH, serializeExpirationUnlockCondition } from \"../unlockConditions/expirationUnlockCondition.mjs\";\nimport { deserializeImmutableAliasUnlockCondition, MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH, serializeImmutableAliasUnlockCondition } from \"../unlockConditions/immutableAliasUnlockCondition.mjs\";\nimport { deserializeTimelockUnlockCondition, MIN_TIMELOCK_UNLOCK_CONDITION_LENGTH, serializeTimelockUnlockCondition } from \"../unlockConditions/timelockUnlockCondition.mjs\";\nimport { deserializeGovernorAddressUnlockCondition, MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH, serializeGovernorAddressUnlockCondition } from \"./governorAddressUnlockCondition.mjs\";\nimport { deserializeStateControllerAddressUnlockCondition, MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH, serializeStateControllerAddressUnlockCondition } from \"./stateControllerAddressUnlockCondition.mjs\";\nimport { deserializeStorageDepositReturnUnlockCondition, MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH, serializeStorageDepositReturnUnlockCondition } from \"./storageDepositReturnUnlockCondition.mjs\";\n/**\n * The minimum length of a unlock conditions list.\n */\nexport const MIN_UNLOCK_CONDITIONS_LENGTH = UINT8_SIZE;\n/**\n * The minimum length of a unlock conditions binary representation.\n */\nexport const MIN_UNLOCK_CONDITION_LENGTH = Math.min(MIN_ADDRESS_UNLOCK_CONDITION_LENGTH, MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH, MIN_TIMELOCK_UNLOCK_CONDITION_LENGTH, MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH, MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH, MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH, MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH);\n/**\n * Deserialize the unlock conditions from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeUnlockConditions(readStream) {\n const numUnlockConditions = readStream.readUInt8(\"unlockConditions.numUnlockConditions\");\n const unlockConditions = [];\n for (let i = 0; i < numUnlockConditions; i++) {\n unlockConditions.push(deserializeUnlockCondition(readStream));\n }\n return unlockConditions;\n}\n/**\n * Serialize the unlock conditions to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeUnlockConditions(writeStream, objects) {\n writeStream.writeUInt8(\"unlockConditions.numUnlockConditions\", objects.length);\n for (let i = 0; i < objects.length; i++) {\n serializeUnlockCondition(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"unlockCondition.type\", false);\n let input;\n if (type === ADDRESS_UNLOCK_CONDITION_TYPE) {\n input = deserializeAddressUnlockCondition(readStream);\n }\n else if (type === STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE) {\n input = deserializeStorageDepositReturnUnlockCondition(readStream);\n }\n else if (type === TIMELOCK_UNLOCK_CONDITION_TYPE) {\n input = deserializeTimelockUnlockCondition(readStream);\n }\n else if (type === EXPIRATION_UNLOCK_CONDITION_TYPE) {\n input = deserializeExpirationUnlockCondition(readStream);\n }\n else if (type === STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE) {\n input = deserializeStateControllerAddressUnlockCondition(readStream);\n }\n else if (type === GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE) {\n input = deserializeGovernorAddressUnlockCondition(readStream);\n }\n else if (type === IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) {\n input = deserializeImmutableAliasUnlockCondition(readStream);\n }\n else {\n throw new Error(`Unrecognized unlock condition type ${type}`);\n }\n return input;\n}\n/**\n * Serialize the unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeUnlockCondition(writeStream, object) {\n if (object.type === ADDRESS_UNLOCK_CONDITION_TYPE) {\n serializeAddressUnlockCondition(writeStream, object);\n }\n else if (object.type === STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE) {\n serializeStorageDepositReturnUnlockCondition(writeStream, object);\n }\n else if (object.type === TIMELOCK_UNLOCK_CONDITION_TYPE) {\n serializeTimelockUnlockCondition(writeStream, object);\n }\n else if (object.type === EXPIRATION_UNLOCK_CONDITION_TYPE) {\n serializeExpirationUnlockCondition(writeStream, object);\n }\n else if (object.type === STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE) {\n serializeStateControllerAddressUnlockCondition(writeStream, object);\n }\n else if (object.type === GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE) {\n serializeGovernorAddressUnlockCondition(writeStream, object);\n }\n else if (object.type === IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) {\n serializeImmutableAliasUnlockCondition(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized unlock condition type ${object.type}`);\n }\n}\n","import { TIMELOCK_UNLOCK_CONDITION_TYPE } from \"../../models/unlockConditions/ITimelockUnlockCondition.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT32_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an timelock unlock condition binary representation.\n */\nexport const MIN_TIMELOCK_UNLOCK_CONDITION_LENGTH = SMALL_TYPE_LENGTH +\n UINT32_SIZE;\n/**\n * Deserialize the timelock unlock condition from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTimelockUnlockCondition(readStream) {\n if (!readStream.hasRemaining(MIN_TIMELOCK_UNLOCK_CONDITION_LENGTH)) {\n throw new Error(`Timelock unlock condition data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TIMELOCK_UNLOCK_CONDITION_LENGTH}`);\n }\n const type = readStream.readUInt8(\"timelockUnlockCondition.type\");\n if (type !== TIMELOCK_UNLOCK_CONDITION_TYPE) {\n throw new Error(`Type mismatch in timelockUnlockCondition ${type}`);\n }\n const unixTime = readStream.readUInt32(\"timelockUnlockCondition.unixTime\");\n const timelockUnlockCondition = {\n type: TIMELOCK_UNLOCK_CONDITION_TYPE,\n unixTime\n };\n return timelockUnlockCondition;\n}\n/**\n * Serialize the timelock unlock condition to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTimelockUnlockCondition(writeStream, object) {\n writeStream.writeUInt8(\"timelockUnlockCondition.type\", object.type);\n writeStream.writeUInt32(\"timelockUnlockCondition.unixTime\", object.unixTime);\n}\n","/**\n * The global type for the storage deposit return unlock condition.\n */\nexport const STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE = 1;\n","/**\n * The global type for the timelock unlock condition.\n */\nexport const TIMELOCK_UNLOCK_CONDITION_TYPE = 2;\n","/**\n * The global type for the expiration unlock condition.\n */\nexport const EXPIRATION_UNLOCK_CONDITION_TYPE = 3;\n","/**\n * The global type for the state controller unlock condition.\n */\nexport const STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE = 4;\n","/**\n * The global type for the governor address unlock condition.\n */\nexport const GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE = 5;\n","/**\n * The global type for the immutable alias unlock condition.\n */\nexport const IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE = 6;\n","import bigInt from \"big-integer\";\nimport { BASIC_OUTPUT_TYPE } from \"../../models/outputs/IBasicOutput.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT64_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeFeatures, MIN_FEATURE_LENGTH, serializeFeatures } from \"../features/features.mjs\";\nimport { deserializeNativeTokens, MIN_NATIVE_TOKENS_LENGTH, serializeNativeTokens } from \"../nativeTokens.mjs\";\nimport { deserializeUnlockConditions, MIN_UNLOCK_CONDITIONS_LENGTH, serializeUnlockConditions } from \"../unlockConditions/unlockConditions.mjs\";\n/**\n * The minimum length of a basic output binary representation.\n */\nexport const MIN_BASIC_OUTPUT_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT64_SIZE + // Amount\n MIN_NATIVE_TOKENS_LENGTH + // Native Tokens\n MIN_UNLOCK_CONDITIONS_LENGTH + // Unlock conditions\n MIN_FEATURE_LENGTH; // Features\n/**\n * Deserialize the basic output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeBasicOutput(readStream) {\n if (!readStream.hasRemaining(MIN_BASIC_OUTPUT_LENGTH)) {\n throw new Error(`Basic Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_BASIC_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"basicOutput.type\");\n if (type !== BASIC_OUTPUT_TYPE) {\n throw new Error(`Type mismatch in basicOutput ${type}`);\n }\n const amount = readStream.readUInt64(\"basicOutput.amount\");\n const nativeTokens = deserializeNativeTokens(readStream);\n const unlockConditions = deserializeUnlockConditions(readStream);\n const features = deserializeFeatures(readStream);\n return {\n type: BASIC_OUTPUT_TYPE,\n amount: amount.toString(),\n nativeTokens,\n unlockConditions,\n features\n };\n}\n/**\n * Serialize the basic output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeBasicOutput(writeStream, object) {\n writeStream.writeUInt8(\"basicOutput.type\", object.type);\n writeStream.writeUInt64(\"basicOutput.amount\", bigInt(object.amount));\n serializeNativeTokens(writeStream, object.nativeTokens);\n serializeUnlockConditions(writeStream, object.unlockConditions);\n serializeFeatures(writeStream, object.features);\n}\n","import { SIMPLE_TOKEN_SCHEME_TYPE } from \"../../models/tokenSchemes/ISimpleTokenScheme.mjs\";\nimport { deserializeSimpleTokenScheme, MIN_SIMPLE_TOKEN_SCHEME_LENGTH, serializeSimpleTokenScheme } from \"./simpleTokenScheme.mjs\";\n/**\n * The minimum length of a simple token scheme binary representation.\n */\nexport const MIN_TOKEN_SCHEME_LENGTH = MIN_SIMPLE_TOKEN_SCHEME_LENGTH;\n/**\n * Deserialize the token scheme from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTokenScheme(readStream) {\n if (!readStream.hasRemaining(MIN_TOKEN_SCHEME_LENGTH)) {\n throw new Error(`Token Scheme data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TOKEN_SCHEME_LENGTH}`);\n }\n const type = readStream.readUInt8(\"tokenScheme.type\", false);\n let tokenScheme;\n if (type === SIMPLE_TOKEN_SCHEME_TYPE) {\n tokenScheme = deserializeSimpleTokenScheme(readStream);\n }\n else {\n throw new Error(`Unrecognized token scheme type ${type}`);\n }\n return tokenScheme;\n}\n/**\n * Serialize the token scheme to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTokenScheme(writeStream, object) {\n if (object.type === SIMPLE_TOKEN_SCHEME_TYPE) {\n serializeSimpleTokenScheme(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized simple token scheme type ${object.type}`);\n }\n}\n","import { HexHelper } from \"@iota/util.js\";\nimport { SIMPLE_TOKEN_SCHEME_TYPE } from \"../../models/tokenSchemes/ISimpleTokenScheme.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT256_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of an simple token scheme binary representation.\n */\nexport const MIN_SIMPLE_TOKEN_SCHEME_LENGTH = SMALL_TYPE_LENGTH + // type\n UINT256_SIZE + // Minted\n UINT256_SIZE + // Melted\n UINT256_SIZE; // Maximum Supply;\n/**\n * Deserialize the simple token scheme from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeSimpleTokenScheme(readStream) {\n if (!readStream.hasRemaining(MIN_SIMPLE_TOKEN_SCHEME_LENGTH)) {\n throw new Error(`Simple Token Scheme data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_SIMPLE_TOKEN_SCHEME_LENGTH}`);\n }\n const type = readStream.readUInt8(\"simpleTokenScheme.type\");\n if (type !== SIMPLE_TOKEN_SCHEME_TYPE) {\n throw new Error(`Type mismatch in simpleTokenScheme ${type}`);\n }\n const mintedTokens = readStream.readUInt256(\"foundryOutput.mintedTokens\");\n const meltedTokens = readStream.readUInt256(\"foundryOutput.meltedTokens\");\n const maximumSupply = readStream.readUInt256(\"foundryOutput.maximumSupply\");\n return {\n mintedTokens: HexHelper.fromBigInt256(mintedTokens),\n meltedTokens: HexHelper.fromBigInt256(meltedTokens),\n maximumSupply: HexHelper.fromBigInt256(maximumSupply),\n type: SIMPLE_TOKEN_SCHEME_TYPE\n };\n}\n/**\n * Serialize the simple token scheme to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeSimpleTokenScheme(writeStream, object) {\n writeStream.writeUInt8(\"simpleTokenScheme.type\", object.type);\n writeStream.writeUInt256(\"foundryOutput.mintedTokens\", HexHelper.toBigInt256(object.mintedTokens));\n writeStream.writeUInt256(\"foundryOutput.meltedTokens\", HexHelper.toBigInt256(object.meltedTokens));\n writeStream.writeUInt256(\"foundryOutput.maximumSupply\", HexHelper.toBigInt256(object.maximumSupply));\n}\n","/**\n * The global type for the simple token scheme.\n */\nexport const SIMPLE_TOKEN_SCHEME_TYPE = 0;\n","import bigInt from \"big-integer\";\nimport { NFT_OUTPUT_TYPE } from \"../../models/outputs/INftOutput.mjs\";\nimport { NFT_ID_LENGTH } from \"../addresses/nftAddress.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT64_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeFeatures, MIN_FEATURE_LENGTH, serializeFeatures } from \"../features/features.mjs\";\nimport { deserializeNativeTokens, MIN_NATIVE_TOKENS_LENGTH, serializeNativeTokens } from \"../nativeTokens.mjs\";\nimport { deserializeUnlockConditions, MIN_UNLOCK_CONDITIONS_LENGTH, serializeUnlockConditions } from \"../unlockConditions/unlockConditions.mjs\";\n/**\n * The minimum length of a nft output binary representation.\n */\nexport const MIN_NFT_OUTPUT_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT64_SIZE + // Amount\n MIN_NATIVE_TOKENS_LENGTH + // Native tokens\n NFT_ID_LENGTH + // Nft Id\n MIN_UNLOCK_CONDITIONS_LENGTH + // Unlock conditions\n MIN_FEATURE_LENGTH + // Features\n MIN_FEATURE_LENGTH; // Immutable features\n/**\n * Deserialize the nft output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeNftOutput(readStream) {\n if (!readStream.hasRemaining(MIN_NFT_OUTPUT_LENGTH)) {\n throw new Error(`NFT Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_NFT_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"nftOutput.type\");\n if (type !== NFT_OUTPUT_TYPE) {\n throw new Error(`Type mismatch in nftOutput ${type}`);\n }\n const amount = readStream.readUInt64(\"nftOutput.amount\");\n const nativeTokens = deserializeNativeTokens(readStream);\n const nftId = readStream.readFixedHex(\"nftOutput.nftId\", NFT_ID_LENGTH);\n const unlockConditions = deserializeUnlockConditions(readStream);\n const features = deserializeFeatures(readStream);\n const immutableFeatures = deserializeFeatures(readStream);\n return {\n type: NFT_OUTPUT_TYPE,\n amount: amount.toString(),\n nativeTokens,\n nftId,\n unlockConditions,\n features,\n immutableFeatures\n };\n}\n/**\n * Serialize the nft output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeNftOutput(writeStream, object) {\n writeStream.writeUInt8(\"nftOutput.type\", object.type);\n writeStream.writeUInt64(\"nftOutput.amount\", bigInt(object.amount));\n serializeNativeTokens(writeStream, object.nativeTokens);\n writeStream.writeFixedHex(\"nftOutput.nftId\", NFT_ID_LENGTH, object.nftId);\n serializeUnlockConditions(writeStream, object.unlockConditions);\n serializeFeatures(writeStream, object.features);\n serializeFeatures(writeStream, object.immutableFeatures);\n}\n","import bigInt from \"big-integer\";\nimport { TREASURY_OUTPUT_TYPE } from \"../../models/outputs/ITreasuryOutput.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT64_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a treasury output binary representation.\n */\nexport const MIN_TREASURY_OUTPUT_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT64_SIZE; // Amount\n/**\n * Deserialize the treasury output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTreasuryOutput(readStream) {\n if (!readStream.hasRemaining(MIN_TREASURY_OUTPUT_LENGTH)) {\n throw new Error(`Treasury Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TREASURY_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"treasuryOutput.type\");\n if (type !== TREASURY_OUTPUT_TYPE) {\n throw new Error(`Type mismatch in treasuryOutput ${type}`);\n }\n const amount = readStream.readUInt64(\"treasuryOutput.amount\");\n return {\n type: TREASURY_OUTPUT_TYPE,\n amount: amount.toString()\n };\n}\n/**\n * Serialize the treasury output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTreasuryOutput(writeStream, object) {\n writeStream.writeUInt8(\"treasuryOutput.type\", object.type);\n writeStream.writeUInt64(\"treasuryOutput.amount\", bigInt(object.amount));\n}\n","/**\n * The global type for the treasury output.\n */\nexport const TREASURY_OUTPUT_TYPE = 2;\n","import { ALIAS_OUTPUT_TYPE } from \"../../models/outputs/IAliasOutput.mjs\";\nimport { BASIC_OUTPUT_TYPE } from \"../../models/outputs/IBasicOutput.mjs\";\nimport { FOUNDRY_OUTPUT_TYPE } from \"../../models/outputs/IFoundryOutput.mjs\";\nimport { NFT_OUTPUT_TYPE } from \"../../models/outputs/INftOutput.mjs\";\nimport { TREASURY_OUTPUT_TYPE } from \"../../models/outputs/ITreasuryOutput.mjs\";\nimport { MAX_NATIVE_TOKEN_COUNT } from \"../nativeTokens.mjs\";\nimport { deserializeAliasOutput, MIN_ALIAS_OUTPUT_LENGTH, serializeAliasOutput } from \"./aliasOutput.mjs\";\nimport { deserializeBasicOutput, MIN_BASIC_OUTPUT_LENGTH, serializeBasicOutput } from \"./basicOutput.mjs\";\nimport { deserializeFoundryOutput, MIN_FOUNDRY_OUTPUT_LENGTH, serializeFoundryOutput } from \"./foundryOutput.mjs\";\nimport { deserializeNftOutput, MIN_NFT_OUTPUT_LENGTH, serializeNftOutput } from \"./nftOutput.mjs\";\nimport { deserializeTreasuryOutput, MIN_TREASURY_OUTPUT_LENGTH, serializeTreasuryOutput } from \"./treasuryOutput.mjs\";\n/**\n * The minimum length of an output binary representation.\n */\nexport const MIN_OUTPUT_LENGTH = Math.min(MIN_TREASURY_OUTPUT_LENGTH, MIN_FOUNDRY_OUTPUT_LENGTH, MIN_BASIC_OUTPUT_LENGTH, MIN_NFT_OUTPUT_LENGTH, MIN_ALIAS_OUTPUT_LENGTH);\n/**\n * The minimum number of outputs.\n */\nexport const MIN_OUTPUT_COUNT = 1;\n/**\n * The maximum number of outputs.\n */\nexport const MAX_OUTPUT_COUNT = 128;\n/**\n * Deserialize the outputs from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeOutputs(readStream) {\n const numOutputs = readStream.readUInt16(\"outputs.numOutputs\");\n const outputs = [];\n for (let i = 0; i < numOutputs; i++) {\n outputs.push(deserializeOutput(readStream));\n }\n return outputs;\n}\n/**\n * Serialize the outputs to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeOutputs(writeStream, objects) {\n var _a, _b;\n if (objects.length < MIN_OUTPUT_COUNT) {\n throw new Error(`The minimum number of outputs is ${MIN_OUTPUT_COUNT}, you have provided ${objects.length}`);\n }\n if (objects.length > MAX_OUTPUT_COUNT) {\n throw new Error(`The maximum number of outputs is ${MAX_OUTPUT_COUNT}, you have provided ${objects.length}`);\n }\n writeStream.writeUInt16(\"outputs.numOutputs\", objects.length);\n let nativeTokenCount = 0;\n for (let i = 0; i < objects.length; i++) {\n serializeOutput(writeStream, objects[i]);\n if (objects[i].type === BASIC_OUTPUT_TYPE ||\n objects[i].type === ALIAS_OUTPUT_TYPE ||\n objects[i].type === FOUNDRY_OUTPUT_TYPE ||\n objects[i].type === NFT_OUTPUT_TYPE) {\n const common = objects[i];\n nativeTokenCount += ((_b = (_a = common.nativeTokens) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);\n }\n }\n if (nativeTokenCount > MAX_NATIVE_TOKEN_COUNT) {\n throw new Error(`The maximum number of native tokens is ${MAX_NATIVE_TOKEN_COUNT}, you have provided ${nativeTokenCount}`);\n }\n}\n/**\n * Deserialize the output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeOutput(readStream) {\n if (!readStream.hasRemaining(MIN_OUTPUT_LENGTH)) {\n throw new Error(`Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"output.type\", false);\n let output;\n if (type === TREASURY_OUTPUT_TYPE) {\n output = deserializeTreasuryOutput(readStream);\n }\n else if (type === BASIC_OUTPUT_TYPE) {\n output = deserializeBasicOutput(readStream);\n }\n else if (type === FOUNDRY_OUTPUT_TYPE) {\n output = deserializeFoundryOutput(readStream);\n }\n else if (type === NFT_OUTPUT_TYPE) {\n output = deserializeNftOutput(readStream);\n }\n else if (type === ALIAS_OUTPUT_TYPE) {\n output = deserializeAliasOutput(readStream);\n }\n else {\n throw new Error(`Unrecognized output type ${type}`);\n }\n return output;\n}\n/**\n * Serialize the output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeOutput(writeStream, object) {\n if (object.type === TREASURY_OUTPUT_TYPE) {\n serializeTreasuryOutput(writeStream, object);\n }\n else if (object.type === BASIC_OUTPUT_TYPE) {\n serializeBasicOutput(writeStream, object);\n }\n else if (object.type === FOUNDRY_OUTPUT_TYPE) {\n serializeFoundryOutput(writeStream, object);\n }\n else if (object.type === NFT_OUTPUT_TYPE) {\n serializeNftOutput(writeStream, object);\n }\n else if (object.type === ALIAS_OUTPUT_TYPE) {\n serializeAliasOutput(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized output type ${object.type}`);\n }\n}\n","import bigInt from \"big-integer\";\nimport { FOUNDRY_OUTPUT_TYPE } from \"../../models/outputs/IFoundryOutput.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT32_SIZE, UINT64_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeFeatures, MIN_FEATURES_LENGTH, serializeFeatures } from \"../features/features.mjs\";\nimport { deserializeNativeTokens, MIN_NATIVE_TOKENS_LENGTH, serializeNativeTokens } from \"../nativeTokens.mjs\";\nimport { deserializeTokenScheme, MIN_TOKEN_SCHEME_LENGTH, serializeTokenScheme } from \"../tokenSchemes/tokenSchemes.mjs\";\nimport { deserializeUnlockConditions, MIN_UNLOCK_CONDITIONS_LENGTH, serializeUnlockConditions } from \"../unlockConditions/unlockConditions.mjs\";\n/**\n * The minimum length of a foundry output binary representation.\n */\nexport const MIN_FOUNDRY_OUTPUT_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT64_SIZE + // Amount\n MIN_NATIVE_TOKENS_LENGTH + // Native tokens\n UINT32_SIZE + // Serial Number\n MIN_TOKEN_SCHEME_LENGTH + // Token scheme length\n MIN_UNLOCK_CONDITIONS_LENGTH + // Unlock conditions\n MIN_FEATURES_LENGTH + // Features\n MIN_FEATURES_LENGTH; // Immutable features\n/**\n * Deserialize the foundry output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeFoundryOutput(readStream) {\n if (!readStream.hasRemaining(MIN_FOUNDRY_OUTPUT_LENGTH)) {\n throw new Error(`Foundry Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_FOUNDRY_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"foundryOutput.type\");\n if (type !== FOUNDRY_OUTPUT_TYPE) {\n throw new Error(`Type mismatch in foundryOutput ${type}`);\n }\n const amount = readStream.readUInt64(\"foundryOutput.amount\");\n const nativeTokens = deserializeNativeTokens(readStream);\n const serialNumber = readStream.readUInt32(\"foundryOutput.serialNumber\");\n const tokenScheme = deserializeTokenScheme(readStream);\n const unlockConditions = deserializeUnlockConditions(readStream);\n const features = deserializeFeatures(readStream);\n const immutableFeatures = deserializeFeatures(readStream);\n return {\n type: FOUNDRY_OUTPUT_TYPE,\n amount: amount.toString(),\n nativeTokens,\n serialNumber,\n tokenScheme,\n unlockConditions,\n features: features,\n immutableFeatures\n };\n}\n/**\n * Serialize the foundry output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeFoundryOutput(writeStream, object) {\n writeStream.writeUInt8(\"foundryOutput.type\", object.type);\n writeStream.writeUInt64(\"foundryOutput.amount\", bigInt(object.amount));\n serializeNativeTokens(writeStream, object.nativeTokens);\n writeStream.writeUInt32(\"foundryOutput.serialNumber\", object.serialNumber);\n serializeTokenScheme(writeStream, object.tokenScheme);\n serializeUnlockConditions(writeStream, object.unlockConditions);\n serializeFeatures(writeStream, object.features);\n serializeFeatures(writeStream, object.immutableFeatures);\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { HexHelper } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport { ALIAS_OUTPUT_TYPE } from \"../../models/outputs/IAliasOutput.mjs\";\nimport { ALIAS_ID_LENGTH } from \"../addresses/aliasAddress.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE, UINT32_SIZE, UINT64_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeFeatures, MIN_FEATURES_LENGTH, serializeFeatures } from \"../features/features.mjs\";\nimport { deserializeNativeTokens, MIN_NATIVE_TOKENS_LENGTH, serializeNativeTokens } from \"../nativeTokens.mjs\";\nimport { deserializeUnlockConditions, MIN_UNLOCK_CONDITIONS_LENGTH, serializeUnlockConditions } from \"../unlockConditions/unlockConditions.mjs\";\n/**\n * The minimum length of a alias output binary representation.\n */\nexport const MIN_ALIAS_OUTPUT_LENGTH = SMALL_TYPE_LENGTH + // Type\n UINT64_SIZE + // Amount\n MIN_NATIVE_TOKENS_LENGTH + // Native Tokens\n ALIAS_ID_LENGTH + // Alias Id\n UINT32_SIZE + // State Index\n UINT16_SIZE + // State Metatata Length\n UINT32_SIZE + // Foundry counter\n MIN_UNLOCK_CONDITIONS_LENGTH + // Unlock conditions\n MIN_FEATURES_LENGTH + // Features\n MIN_FEATURES_LENGTH; // Immutable feature\n/**\n * Deserialize the alias output from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeAliasOutput(readStream) {\n if (!readStream.hasRemaining(MIN_ALIAS_OUTPUT_LENGTH)) {\n throw new Error(`Alias Output data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ALIAS_OUTPUT_LENGTH}`);\n }\n const type = readStream.readUInt8(\"aliasOutput.type\");\n if (type !== ALIAS_OUTPUT_TYPE) {\n throw new Error(`Type mismatch in aliasOutput ${type}`);\n }\n const amount = readStream.readUInt64(\"aliasOutput.amount\");\n const nativeTokens = deserializeNativeTokens(readStream);\n const aliasId = readStream.readFixedHex(\"aliasOutput.aliasId\", ALIAS_ID_LENGTH);\n const stateIndex = readStream.readUInt32(\"aliasOutput.stateIndex\");\n const stateMetadataLength = readStream.readUInt16(\"aliasOutput.stateMetadataLength\");\n const stateMetadata = stateMetadataLength > 0\n ? readStream.readFixedHex(\"aliasOutput.stateMetadata\", stateMetadataLength)\n : undefined;\n const foundryCounter = readStream.readUInt32(\"aliasOutput.foundryCounter\");\n const unlockConditions = deserializeUnlockConditions(readStream);\n const features = deserializeFeatures(readStream);\n const immutableFeatures = deserializeFeatures(readStream);\n return {\n type: ALIAS_OUTPUT_TYPE,\n amount: amount.toString(),\n nativeTokens,\n aliasId,\n stateIndex,\n stateMetadata,\n foundryCounter,\n unlockConditions,\n features,\n immutableFeatures\n };\n}\n/**\n * Serialize the alias output to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeAliasOutput(writeStream, object) {\n var _a, _b, _c;\n writeStream.writeUInt8(\"aliasOutput.type\", object.type);\n writeStream.writeUInt64(\"aliasOutput.amount\", bigInt(object.amount));\n serializeNativeTokens(writeStream, (_a = object.nativeTokens) !== null && _a !== void 0 ? _a : []);\n writeStream.writeFixedHex(\"aliasOutput.aliasId\", ALIAS_ID_LENGTH, object.aliasId);\n writeStream.writeUInt32(\"aliasOutput.stateIndex\", object.stateIndex);\n if (object.stateMetadata) {\n const stateMetadata = HexHelper.stripPrefix(object.stateMetadata);\n writeStream.writeUInt16(\"aliasOutput.stateMetadataLength\", stateMetadata.length / 2);\n if (stateMetadata.length > 0) {\n writeStream.writeFixedHex(\"aliasOutput.stateMetadata\", stateMetadata.length / 2, stateMetadata);\n }\n }\n else {\n writeStream.writeUInt16(\"aliasOutput.stateMetadataLength\", 0);\n }\n writeStream.writeUInt32(\"aliasOutput.foundryCounter\", object.foundryCounter);\n serializeUnlockConditions(writeStream, object.unlockConditions);\n serializeFeatures(writeStream, (_b = object.features) !== null && _b !== void 0 ? _b : []);\n serializeFeatures(writeStream, (_c = object.immutableFeatures) !== null && _c !== void 0 ? _c : []);\n}\n","/**\n * The global type for the basic output.\n */\nexport const BASIC_OUTPUT_TYPE = 3;\n","/**\n * The global type for the foundry output.\n */\nexport const FOUNDRY_OUTPUT_TYPE = 5;\n","/**\n * The global type for the NFT output.\n */\nexport const NFT_OUTPUT_TYPE = 6;\n","/**\n * The global type for the alias output.\n */\nexport const ALIAS_OUTPUT_TYPE = 4;\n","import bigInt from \"big-integer\";\nimport { UTXO_INPUT_TYPE } from \"../models/inputs/IUTXOInput.mjs\";\nimport { INPUTS_COMMITMENT_SIZE, TRANSACTION_ESSENCE_TYPE } from \"../models/ITransactionEssence.mjs\";\nimport { TAGGED_DATA_PAYLOAD_TYPE } from \"../models/payloads/ITaggedDataPayload.mjs\";\nimport { ARRAY_LENGTH, SMALL_TYPE_LENGTH, UINT32_SIZE, UINT64_SIZE } from \"./commonDataTypes.mjs\";\nimport { deserializeInputs, serializeInputs } from \"./inputs/inputs.mjs\";\nimport { deserializeOutputs, serializeOutputs } from \"./outputs/outputs.mjs\";\nimport { deserializePayload, serializePayload } from \"./payloads/payloads.mjs\";\n/**\n * The minimum length of a transaction essence binary representation.\n */\nexport const MIN_TRANSACTION_ESSENCE_LENGTH = SMALL_TYPE_LENGTH + // type\n UINT64_SIZE + // network id\n ARRAY_LENGTH + // input count\n INPUTS_COMMITMENT_SIZE + // input commitments\n ARRAY_LENGTH + // output count\n UINT32_SIZE; // payload type\n/**\n * Deserialize the transaction essence from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTransactionEssence(readStream) {\n if (!readStream.hasRemaining(MIN_TRANSACTION_ESSENCE_LENGTH)) {\n throw new Error(`Transaction essence data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TRANSACTION_ESSENCE_LENGTH}`);\n }\n const type = readStream.readUInt8(\"transactionEssence.type\");\n if (type !== TRANSACTION_ESSENCE_TYPE) {\n throw new Error(`Type mismatch in transactionEssence ${type}`);\n }\n const networkId = readStream.readUInt64(\"transactionEssence.networkId\");\n const inputs = deserializeInputs(readStream);\n const inputsCommitment = readStream.readFixedHex(\"transactionEssence.inputsCommitment\", INPUTS_COMMITMENT_SIZE);\n const outputs = deserializeOutputs(readStream);\n const payload = deserializePayload(readStream);\n if (payload && payload.type !== TAGGED_DATA_PAYLOAD_TYPE) {\n throw new Error(\"Transaction essence can only contain embedded Tagged Data Payload\");\n }\n for (const input of inputs) {\n if (input.type !== UTXO_INPUT_TYPE) {\n throw new Error(\"Transaction essence can only contain UTXO Inputs\");\n }\n }\n return {\n type: TRANSACTION_ESSENCE_TYPE,\n networkId: networkId.toString(),\n inputs: inputs,\n inputsCommitment,\n outputs,\n payload\n };\n}\n/**\n * Serialize the transaction essence to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTransactionEssence(writeStream, object) {\n var _a;\n writeStream.writeUInt8(\"transactionEssence.type\", object.type);\n writeStream.writeUInt64(\"transactionEssence.networkId\", bigInt((_a = object.networkId) !== null && _a !== void 0 ? _a : \"0\"));\n for (const input of object.inputs) {\n if (input.type !== UTXO_INPUT_TYPE) {\n throw new Error(\"Transaction essence can only contain UTXO Inputs\");\n }\n }\n serializeInputs(writeStream, object.inputs);\n writeStream.writeFixedHex(\"transactionEssence.inputsCommitment\", INPUTS_COMMITMENT_SIZE, object.inputsCommitment);\n serializeOutputs(writeStream, object.outputs);\n serializePayload(writeStream, object.payload);\n}\n","/**\n * The global type for the payload.\n */\nexport const TAGGED_DATA_PAYLOAD_TYPE = 5;\n","import { SIGNATURE_UNLOCK_TYPE } from \"../../models/unlocks/ISignatureUnlock.mjs\";\nimport { SMALL_TYPE_LENGTH } from \"../commonDataTypes.mjs\";\nimport { deserializeSignature, MIN_SIGNATURE_LENGTH, serializeSignature } from \"../signatures/signatures.mjs\";\n/**\n * The minimum length of a signature unlock binary representation.\n */\nexport const MIN_SIGNATURE_UNLOCK_LENGTH = SMALL_TYPE_LENGTH + MIN_SIGNATURE_LENGTH;\n/**\n * Deserialize the signature unlock from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeSignatureUnlock(readStream) {\n if (!readStream.hasRemaining(MIN_SIGNATURE_UNLOCK_LENGTH)) {\n throw new Error(`Signature Unlock data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_SIGNATURE_UNLOCK_LENGTH}`);\n }\n const type = readStream.readUInt8(\"signatureUnlock.type\");\n if (type !== SIGNATURE_UNLOCK_TYPE) {\n throw new Error(`Type mismatch in signatureUnlock ${type}`);\n }\n const signature = deserializeSignature(readStream);\n return {\n type: SIGNATURE_UNLOCK_TYPE,\n signature\n };\n}\n/**\n * Serialize the signature unlock to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeSignatureUnlock(writeStream, object) {\n writeStream.writeUInt8(\"signatureUnlock.type\", object.type);\n serializeSignature(writeStream, object.signature);\n}\n","import { ALIAS_UNLOCK_TYPE } from \"../../models/unlocks/IAliasUnlock.mjs\";\nimport { NFT_UNLOCK_TYPE } from \"../../models/unlocks/INftUnlock.mjs\";\nimport { REFERENCE_UNLOCK_TYPE } from \"../../models/unlocks/IReferenceUnlock.mjs\";\nimport { SIGNATURE_UNLOCK_TYPE } from \"../../models/unlocks/ISignatureUnlock.mjs\";\nimport { deserializeAliasUnlock, MIN_ALIAS_UNLOCK_LENGTH, serializeAliasUnlock } from \"./aliasUnlock.mjs\";\nimport { deserializeNftUnlock, MIN_NFT_UNLOCK_LENGTH, serializeNftUnlock } from \"./nftUnlock.mjs\";\nimport { deserializeReferenceUnlock, MIN_REFERENCE_UNLOCK_LENGTH, serializeReferenceUnlock } from \"./referenceUnlock.mjs\";\nimport { deserializeSignatureUnlock, MIN_SIGNATURE_UNLOCK_LENGTH, serializeSignatureUnlock } from \"./signatureUnlock.mjs\";\n/**\n * The minimum length of an unlock binary representation.\n */\nexport const MIN_UNLOCK_LENGTH = Math.min(MIN_SIGNATURE_UNLOCK_LENGTH, MIN_REFERENCE_UNLOCK_LENGTH, MIN_ALIAS_UNLOCK_LENGTH, MIN_NFT_UNLOCK_LENGTH);\n/**\n * Deserialize the unlocks from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeUnlocks(readStream) {\n const numUnlocks = readStream.readUInt16(\"transactionEssence.numUnlocks\");\n const unlocks = [];\n for (let i = 0; i < numUnlocks; i++) {\n unlocks.push(deserializeUnlock(readStream));\n }\n return unlocks;\n}\n/**\n * Serialize the unlocks to binary.\n * @param writeStream The stream to write the data to.\n * @param objects The objects to serialize.\n */\nexport function serializeUnlocks(writeStream, objects) {\n writeStream.writeUInt16(\"transactionEssence.numUnlocks\", objects.length);\n for (let i = 0; i < objects.length; i++) {\n serializeUnlock(writeStream, objects[i]);\n }\n}\n/**\n * Deserialize the unlock from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeUnlock(readStream) {\n if (!readStream.hasRemaining(MIN_UNLOCK_LENGTH)) {\n throw new Error(`Unlock data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_UNLOCK_LENGTH}`);\n }\n const type = readStream.readUInt8(\"unlock.type\", false);\n let unlock;\n if (type === SIGNATURE_UNLOCK_TYPE) {\n unlock = deserializeSignatureUnlock(readStream);\n }\n else if (type === REFERENCE_UNLOCK_TYPE) {\n unlock = deserializeReferenceUnlock(readStream);\n }\n else if (type === ALIAS_UNLOCK_TYPE) {\n unlock = deserializeAliasUnlock(readStream);\n }\n else if (type === NFT_UNLOCK_TYPE) {\n unlock = deserializeNftUnlock(readStream);\n }\n else {\n throw new Error(`Unrecognized unlock type ${type}`);\n }\n return unlock;\n}\n/**\n * Serialize the unlock to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeUnlock(writeStream, object) {\n if (object.type === SIGNATURE_UNLOCK_TYPE) {\n serializeSignatureUnlock(writeStream, object);\n }\n else if (object.type === REFERENCE_UNLOCK_TYPE) {\n serializeReferenceUnlock(writeStream, object);\n }\n else if (object.type === ALIAS_UNLOCK_TYPE) {\n serializeAliasUnlock(writeStream, object);\n }\n else if (object.type === NFT_UNLOCK_TYPE) {\n serializeNftUnlock(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized unlock type ${object.type}`);\n }\n}\n","import { REFERENCE_UNLOCK_TYPE } from \"../../models/unlocks/IReferenceUnlock.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a reference unlock binary representation.\n */\nexport const MIN_REFERENCE_UNLOCK_LENGTH = SMALL_TYPE_LENGTH + UINT16_SIZE;\n/**\n * Deserialize the reference unlock from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeReferenceUnlock(readStream) {\n if (!readStream.hasRemaining(MIN_REFERENCE_UNLOCK_LENGTH)) {\n throw new Error(`Reference Unlock data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_REFERENCE_UNLOCK_LENGTH}`);\n }\n const type = readStream.readUInt8(\"referenceUnlock.type\");\n if (type !== REFERENCE_UNLOCK_TYPE) {\n throw new Error(`Type mismatch in referenceUnlock ${type}`);\n }\n const reference = readStream.readUInt16(\"referenceUnlock.reference\");\n return {\n type: REFERENCE_UNLOCK_TYPE,\n reference\n };\n}\n/**\n * Serialize the reference unlock to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeReferenceUnlock(writeStream, object) {\n writeStream.writeUInt8(\"referenceUnlock.type\", object.type);\n writeStream.writeUInt16(\"referenceUnlock.reference\", object.reference);\n}\n","import { ALIAS_UNLOCK_TYPE } from \"../../models/unlocks/IAliasUnlock.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a alias unlock binary representation.\n */\nexport const MIN_ALIAS_UNLOCK_LENGTH = SMALL_TYPE_LENGTH + UINT16_SIZE;\n/**\n * Deserialize the alias unlock from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeAliasUnlock(readStream) {\n if (!readStream.hasRemaining(MIN_ALIAS_UNLOCK_LENGTH)) {\n throw new Error(`Alias Unlock data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_ALIAS_UNLOCK_LENGTH}`);\n }\n const type = readStream.readUInt8(\"aliasUnlock.type\");\n if (type !== ALIAS_UNLOCK_TYPE) {\n throw new Error(`Type mismatch in aliasUnlock ${type}`);\n }\n const reference = readStream.readUInt16(\"aliasUnlock.reference\");\n return {\n type: ALIAS_UNLOCK_TYPE,\n reference\n };\n}\n/**\n * Serialize the alias unlock to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeAliasUnlock(writeStream, object) {\n writeStream.writeUInt8(\"aliasUnlock.type\", object.type);\n writeStream.writeUInt16(\"aliasUnlock.reference\", object.reference);\n}\n","import { NFT_UNLOCK_TYPE } from \"../../models/unlocks/INftUnlock.mjs\";\nimport { SMALL_TYPE_LENGTH, UINT16_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a nft unlock binary representation.\n */\nexport const MIN_NFT_UNLOCK_LENGTH = SMALL_TYPE_LENGTH + UINT16_SIZE;\n/**\n * Deserialize the nft unlock from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeNftUnlock(readStream) {\n if (!readStream.hasRemaining(MIN_NFT_UNLOCK_LENGTH)) {\n throw new Error(`Nft Unlock data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_NFT_UNLOCK_LENGTH}`);\n }\n const type = readStream.readUInt8(\"nftUnlock.type\");\n if (type !== NFT_UNLOCK_TYPE) {\n throw new Error(`Type mismatch in nftUnlock ${type}`);\n }\n const reference = readStream.readUInt16(\"nftUnlock.reference\");\n return {\n type: NFT_UNLOCK_TYPE,\n reference\n };\n}\n/**\n * Serialize the nft unlock to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeNftUnlock(writeStream, object) {\n writeStream.writeUInt8(\"nftUnlock.type\", object.type);\n writeStream.writeUInt16(\"nftUnlock.reference\", object.reference);\n}\n","/**\n * The global type for the unlock.\n */\nexport const SIGNATURE_UNLOCK_TYPE = 0;\n","/**\n * The global type for the reference unlock.\n */\nexport const REFERENCE_UNLOCK_TYPE = 1;\n","/**\n * The global type for the alias unlock.\n */\nexport const ALIAS_UNLOCK_TYPE = 2;\n","/**\n * The global type for the NFT unlock.\n */\nexport const NFT_UNLOCK_TYPE = 3;\n","import { TRANSACTION_ESSENCE_TYPE } from \"../../models/ITransactionEssence.mjs\";\nimport { TRANSACTION_PAYLOAD_TYPE } from \"../../models/payloads/ITransactionPayload.mjs\";\nimport { TYPE_LENGTH, UINT32_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeTransactionEssence, serializeTransactionEssence } from \"../transactionEssence.mjs\";\nimport { deserializeUnlocks, serializeUnlocks } from \"../unlocks/unlocks.mjs\";\n/**\n * The minimum length of a transaction payload binary representation.\n */\nexport const MIN_TRANSACTION_PAYLOAD_LENGTH = TYPE_LENGTH + // min payload\n UINT32_SIZE; // essence type\n/**\n * Deserialize the transaction payload from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTransactionPayload(readStream) {\n if (!readStream.hasRemaining(MIN_TRANSACTION_PAYLOAD_LENGTH)) {\n throw new Error(`Transaction Payload data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TRANSACTION_PAYLOAD_LENGTH}`);\n }\n const type = readStream.readUInt32(\"payloadTransaction.type\");\n if (type !== TRANSACTION_PAYLOAD_TYPE) {\n throw new Error(`Type mismatch in payloadTransaction ${type}`);\n }\n const essenceType = readStream.readUInt8(\"payloadTransaction.essenceType\", false);\n let essence;\n let unlocks;\n if (essenceType === TRANSACTION_ESSENCE_TYPE) {\n essence = deserializeTransactionEssence(readStream);\n unlocks = deserializeUnlocks(readStream);\n }\n else {\n throw new Error(`Unrecognized transaction essence type ${type}`);\n }\n return {\n type: TRANSACTION_PAYLOAD_TYPE,\n essence,\n unlocks\n };\n}\n/**\n * Serialize the transaction payload to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTransactionPayload(writeStream, object) {\n writeStream.writeUInt32(\"payloadTransaction.type\", object.type);\n if (object.type === TRANSACTION_PAYLOAD_TYPE) {\n serializeTransactionEssence(writeStream, object.essence);\n serializeUnlocks(writeStream, object.unlocks);\n }\n else {\n throw new Error(`Unrecognized transaction type ${object.type}`);\n }\n}\n","/**\n * The global type for the payload.\n */\nexport const TRANSACTION_PAYLOAD_TYPE = 6;\n","import { TREASURY_TRANSACTION_PAYLOAD_TYPE } from \"../../models/payloads/ITreasuryTransactionPayload.mjs\";\nimport { TYPE_LENGTH } from \"../commonDataTypes.mjs\";\nimport { deserializeTreasuryInput, MIN_TREASURY_INPUT_LENGTH, serializeTreasuryInput } from \"../inputs/treasuryInput.mjs\";\nimport { deserializeTreasuryOutput, MIN_TREASURY_OUTPUT_LENGTH, serializeTreasuryOutput } from \"../outputs/treasuryOutput.mjs\";\n/**\n * The minimum length of a treasury transaction payload binary representation.\n */\nexport const MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH = TYPE_LENGTH + MIN_TREASURY_INPUT_LENGTH + MIN_TREASURY_OUTPUT_LENGTH;\n/**\n * Deserialize the treasury transaction payload from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTreasuryTransactionPayload(readStream) {\n if (!readStream.hasRemaining(MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH)) {\n throw new Error(`Treasury Transaction Payload data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH}`);\n }\n const type = readStream.readUInt32(\"payloadTreasuryTransaction.type\");\n if (type !== TREASURY_TRANSACTION_PAYLOAD_TYPE) {\n throw new Error(`Type mismatch in payloadTreasuryTransaction ${type}`);\n }\n const input = deserializeTreasuryInput(readStream);\n const output = deserializeTreasuryOutput(readStream);\n return {\n type: TREASURY_TRANSACTION_PAYLOAD_TYPE,\n input,\n output\n };\n}\n/**\n * Serialize the treasury transaction payload to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTreasuryTransactionPayload(writeStream, object) {\n writeStream.writeUInt32(\"payloadTreasuryTransaction.type\", object.type);\n serializeTreasuryInput(writeStream, object.input);\n serializeTreasuryOutput(writeStream, object.output);\n}\n","import { MILESTONE_PAYLOAD_TYPE } from \"../../models/payloads/IMilestonePayload.mjs\";\nimport { TAGGED_DATA_PAYLOAD_TYPE } from \"../../models/payloads/ITaggedDataPayload.mjs\";\nimport { TRANSACTION_PAYLOAD_TYPE } from \"../../models/payloads/ITransactionPayload.mjs\";\nimport { TREASURY_TRANSACTION_PAYLOAD_TYPE } from \"../../models/payloads/ITreasuryTransactionPayload.mjs\";\nimport { UINT32_SIZE } from \"../commonDataTypes.mjs\";\nimport { deserializeMilestonePayload, MIN_MILESTONE_PAYLOAD_LENGTH, serializeMilestonePayload } from \"./milestonePayload.mjs\";\nimport { deserializeTaggedDataPayload, MIN_TAGGED_DATA_PAYLOAD_LENGTH, serializeTaggedDataPayload } from \"./taggedDataPayload.mjs\";\nimport { deserializeTransactionPayload, MIN_TRANSACTION_PAYLOAD_LENGTH, serializeTransactionPayload } from \"./transactionPayload.mjs\";\nimport { deserializeTreasuryTransactionPayload, MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH, serializeTreasuryTransactionPayload } from \"./treasuryTransactionPayload.mjs\";\n/**\n * The minimum length of a payload binary representation.\n */\nexport const MIN_PAYLOAD_LENGTH = Math.min(MIN_TRANSACTION_PAYLOAD_LENGTH, MIN_MILESTONE_PAYLOAD_LENGTH, MIN_TAGGED_DATA_PAYLOAD_LENGTH, MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH);\n/**\n * Deserialize the payload from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializePayload(readStream) {\n const payloadLength = readStream.readUInt32(\"payload.length\");\n if (!readStream.hasRemaining(payloadLength)) {\n throw new Error(`Payload length ${payloadLength} exceeds the remaining data ${readStream.unused()}`);\n }\n let payload;\n if (payloadLength > 0) {\n const payloadType = readStream.readUInt32(\"payload.type\", false);\n if (payloadType === TRANSACTION_PAYLOAD_TYPE) {\n payload = deserializeTransactionPayload(readStream);\n }\n else if (payloadType === MILESTONE_PAYLOAD_TYPE) {\n payload = deserializeMilestonePayload(readStream);\n }\n else if (payloadType === TREASURY_TRANSACTION_PAYLOAD_TYPE) {\n payload = deserializeTreasuryTransactionPayload(readStream);\n }\n else if (payloadType === TAGGED_DATA_PAYLOAD_TYPE) {\n payload = deserializeTaggedDataPayload(readStream);\n }\n else {\n throw new Error(`Unrecognized payload type ${payloadType}`);\n }\n }\n return payload;\n}\n/**\n * Serialize the payload essence to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializePayload(writeStream, object) {\n // Store the location for the payload length and write 0\n // we will rewind and fill in once the size of the payload is known\n const payloadLengthWriteIndex = writeStream.getWriteIndex();\n writeStream.writeUInt32(\"payload.length\", 0);\n if (!object) {\n // No other data to write\n }\n else if (object.type === TRANSACTION_PAYLOAD_TYPE) {\n serializeTransactionPayload(writeStream, object);\n }\n else if (object.type === MILESTONE_PAYLOAD_TYPE) {\n serializeMilestonePayload(writeStream, object);\n }\n else if (object.type === TREASURY_TRANSACTION_PAYLOAD_TYPE) {\n serializeTreasuryTransactionPayload(writeStream, object);\n }\n else if (object.type === TAGGED_DATA_PAYLOAD_TYPE) {\n serializeTaggedDataPayload(writeStream, object);\n }\n else {\n throw new Error(`Unrecognized transaction type ${object.type}`);\n }\n const endOfPayloadWriteIndex = writeStream.getWriteIndex();\n writeStream.setWriteIndex(payloadLengthWriteIndex);\n writeStream.writeUInt32(\"payload.length\", endOfPayloadWriteIndex - payloadLengthWriteIndex - UINT32_SIZE);\n writeStream.setWriteIndex(endOfPayloadWriteIndex);\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-mixed-operators */\nimport { HexHelper } from \"@iota/util.js\";\nimport { TAGGED_DATA_PAYLOAD_TYPE } from \"../../models/payloads/ITaggedDataPayload.mjs\";\nimport { UINT8_SIZE, TYPE_LENGTH, UINT32_SIZE } from \"../commonDataTypes.mjs\";\n/**\n * The minimum length of a tagged data payload binary representation.\n */\nexport const MIN_TAGGED_DATA_PAYLOAD_LENGTH = TYPE_LENGTH + // min payload\n UINT8_SIZE + // tag length\n UINT32_SIZE; // data length\n/**\n * The maximum length of a tag.\n */\nexport const MAX_TAG_LENGTH = 64;\n/**\n * Deserialize the tagged data payload from binary.\n * @param readStream The stream to read the data from.\n * @returns The deserialized object.\n */\nexport function deserializeTaggedDataPayload(readStream) {\n if (!readStream.hasRemaining(MIN_TAGGED_DATA_PAYLOAD_LENGTH)) {\n throw new Error(`Tagged Data Payload data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_TAGGED_DATA_PAYLOAD_LENGTH}`);\n }\n const type = readStream.readUInt32(\"payloadTaggedData.type\");\n if (type !== TAGGED_DATA_PAYLOAD_TYPE) {\n throw new Error(`Type mismatch in payloadTaggedData ${type}`);\n }\n const tagLength = readStream.readUInt8(\"payloadTaggedData.tagLength\");\n let tag = \"\";\n if (tagLength > 0) {\n tag = readStream.readFixedHex(\"payloadTaggedData.tag\", tagLength);\n }\n const dataLength = readStream.readUInt32(\"payloadTaggedData.dataLength\");\n let data = \"\";\n if (dataLength > 0) {\n data = readStream.readFixedHex(\"payloadTaggedData.data\", dataLength);\n }\n return {\n type: TAGGED_DATA_PAYLOAD_TYPE,\n tag: tag ? HexHelper.addPrefix(tag) : tag,\n data: data ? HexHelper.addPrefix(data) : data\n };\n}\n/**\n * Serialize the tagged data payload to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeTaggedDataPayload(writeStream, object) {\n if (object.tag && object.tag.length / 2 > MAX_TAG_LENGTH) {\n throw new Error(`The tag length is ${object.tag.length / 2}, which exceeds the maximum size of ${MAX_TAG_LENGTH}`);\n }\n writeStream.writeUInt32(\"payloadTaggedData.type\", object.type);\n if (object.tag) {\n const tag = HexHelper.stripPrefix(object.tag);\n writeStream.writeUInt8(\"payloadTaggedData.tagLength\", tag.length / 2);\n if (tag.length > 0) {\n writeStream.writeFixedHex(\"payloadTaggedData.tag\", tag.length / 2, tag);\n }\n }\n else {\n writeStream.writeUInt32(\"payloadTaggedData.tagLength\", 0);\n }\n if (object.data) {\n const data = HexHelper.stripPrefix(object.data);\n writeStream.writeUInt32(\"payloadTaggedData.dataLength\", data.length / 2);\n if (data.length > 0) {\n writeStream.writeFixedHex(\"payloadTaggedData.data\", data.length / 2, data);\n }\n }\n else {\n writeStream.writeUInt32(\"payloadTaggedData.dataLength\", 0);\n }\n}\n","import bigInt from \"big-integer\";\nimport { DEFAULT_PROTOCOL_VERSION } from \"../models/IBlock.mjs\";\nimport { MILESTONE_PAYLOAD_TYPE } from \"../models/payloads/IMilestonePayload.mjs\";\nimport { TAGGED_DATA_PAYLOAD_TYPE } from \"../models/payloads/ITaggedDataPayload.mjs\";\nimport { TRANSACTION_PAYLOAD_TYPE } from \"../models/payloads/ITransactionPayload.mjs\";\nimport { TREASURY_TRANSACTION_PAYLOAD_TYPE } from \"../models/payloads/ITreasuryTransactionPayload.mjs\";\nimport { BLOCK_ID_LENGTH, UINT64_SIZE, UINT8_SIZE } from \"./commonDataTypes.mjs\";\nimport { deserializePayload, MIN_PAYLOAD_LENGTH, serializePayload } from \"./payloads/payloads.mjs\";\n/**\n * The minimum length of a block binary representation.\n */\nconst MIN_BLOCK_LENGTH = UINT8_SIZE + // Protocol Version\n UINT8_SIZE + // Parent count\n BLOCK_ID_LENGTH + // Single parent\n MIN_PAYLOAD_LENGTH + // Min payload length\n UINT64_SIZE; // Nonce\n/**\n * The maximum length of a block.\n */\nexport const MAX_BLOCK_LENGTH = 32768;\n/**\n * The maximum number of parents.\n */\nexport const MAX_NUMBER_PARENTS = 8;\n/**\n * The minimum number of parents.\n */\nexport const MIN_NUMBER_PARENTS = 1;\n/**\n * Deserialize the block from binary.\n * @param readStream The block to deserialize.\n * @returns The deserialized block.\n */\nexport function deserializeBlock(readStream) {\n if (!readStream.hasRemaining(MIN_BLOCK_LENGTH)) {\n throw new Error(`Block data is ${readStream.length()} in length which is less than the minimimum size required of ${MIN_BLOCK_LENGTH}`);\n }\n const protocolVersion = readStream.readUInt8(\"block.protocolVersion\");\n const numParents = readStream.readUInt8(\"block.numParents\");\n const parents = [];\n for (let i = 0; i < numParents; i++) {\n const parentBlockId = readStream.readFixedHex(`block.parentBlockId${i}`, BLOCK_ID_LENGTH);\n parents.push(parentBlockId);\n }\n const payload = deserializePayload(readStream);\n if (payload && payload.type === TREASURY_TRANSACTION_PAYLOAD_TYPE) {\n throw new Error(\"Blocks can not contain receipt or treasury transaction payloads\");\n }\n const nonce = readStream.readUInt64(\"block.nonce\");\n const unused = readStream.unused();\n if (unused !== 0) {\n throw new Error(`Block data length ${readStream.length()} has unused data ${unused}`);\n }\n return {\n protocolVersion,\n parents,\n payload,\n nonce: nonce.toString()\n };\n}\n/**\n * Serialize the block essence to binary.\n * @param writeStream The stream to write the data to.\n * @param object The object to serialize.\n */\nexport function serializeBlock(writeStream, object) {\n var _a, _b, _c, _d;\n writeStream.writeUInt8(\"block.protocolVersion\", (_a = object.protocolVersion) !== null && _a !== void 0 ? _a : DEFAULT_PROTOCOL_VERSION);\n const numParents = (_c = (_b = object.parents) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;\n writeStream.writeUInt8(\"block.numParents\", numParents);\n if (object.parents) {\n if (numParents > MAX_NUMBER_PARENTS) {\n throw new Error(`A maximum of ${MAX_NUMBER_PARENTS} parents is allowed, you provided ${numParents}`);\n }\n if (new Set(object.parents).size !== numParents) {\n throw new Error(\"The block parents must be unique\");\n }\n const sorted = object.parents.slice().sort();\n for (let i = 0; i < numParents; i++) {\n if (sorted[i] !== object.parents[i]) {\n throw new Error(\"The block parents must be lexographically sorted\");\n }\n writeStream.writeFixedHex(`block.parentBlockId${i + 1}`, BLOCK_ID_LENGTH, object.parents[i]);\n }\n }\n if (object.payload &&\n object.payload.type !== TRANSACTION_PAYLOAD_TYPE &&\n object.payload.type !== MILESTONE_PAYLOAD_TYPE &&\n object.payload.type !== TAGGED_DATA_PAYLOAD_TYPE) {\n throw new Error(\"Blocks can only contain transaction, milestone or tagged data payloads\");\n }\n serializePayload(writeStream, object.payload);\n writeStream.writeUInt64(\"block.nonce\", bigInt((_d = object.nonce) !== null && _d !== void 0 ? _d : \"0\"));\n}\n","/**\n * The default protocol version.\n */\nexport const DEFAULT_PROTOCOL_VERSION = 2;\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Class to represent errors from Client.\n */\nexport class ClientError extends Error {\n /**\n * Create a new instance of ClientError.\n * @param message The message for the error.\n * @param route The route the request was made to.\n * @param httpStatus The http status code.\n * @param code The code in the payload.\n */\n constructor(message, route, httpStatus, code) {\n super(message);\n this.route = route;\n this.httpStatus = httpStatus;\n this.code = code;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { ArrayHelper, Blake2b } from \"@iota/crypto.js\";\nimport { BigIntHelper, Converter, ReadStream, WriteStream } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport { deserializeBlock, MAX_BLOCK_LENGTH, MAX_NUMBER_PARENTS, serializeBlock } from \"../binary/block.mjs\";\nimport { DEFAULT_PROTOCOL_VERSION } from \"../models/IBlock.mjs\";\nimport { ClientError } from \"./clientError.mjs\";\n/**\n * Client for API communication.\n */\nexport class SingleNodeClient {\n /**\n * Create a new instance of client.\n * @param endpoint The endpoint.\n * @param options Options for the client.\n */\n constructor(endpoint, options) {\n var _a, _b, _c, _d;\n if (!endpoint) {\n throw new Error(\"The endpoint can not be empty\");\n }\n this._endpoint = endpoint.replace(/\\/+$/, \"\");\n this._basePath = (_a = options === null || options === void 0 ? void 0 : options.basePath) !== null && _a !== void 0 ? _a : \"/api/\";\n this._coreApiPath = `${this._basePath}core/v2/`;\n this._powProvider = options === null || options === void 0 ? void 0 : options.powProvider;\n this._timeout = options === null || options === void 0 ? void 0 : options.timeout;\n this._userName = options === null || options === void 0 ? void 0 : options.userName;\n this._password = options === null || options === void 0 ? void 0 : options.password;\n this._headers = options === null || options === void 0 ? void 0 : options.headers;\n this._protocolVersion = (_b = options === null || options === void 0 ? void 0 : options.protocolVersion) !== null && _b !== void 0 ? _b : DEFAULT_PROTOCOL_VERSION;\n if (this._userName && this._password && !this._endpoint.startsWith(\"https\")) {\n throw new Error(\"Basic authentication requires the endpoint to be https\");\n }\n if (this._userName && this._password && (((_c = this._headers) === null || _c === void 0 ? void 0 : _c.authorization) || ((_d = this._headers) === null || _d === void 0 ? void 0 : _d.Authorization))) {\n throw new Error(\"You can not supply both user/pass and authorization header\");\n }\n }\n /**\n * Get the health of the node.\n * @returns True if the node is healthy.\n */\n async health() {\n const status = await this.fetchStatus(\"/health\");\n if (status === 200) {\n return true;\n }\n else if (status === 503) {\n return false;\n }\n throw new ClientError(\"Unexpected response code\", \"/health\", status);\n }\n /**\n * Get the routes the node exposes.\n * @returns The routes.\n */\n async routes() {\n return this.fetchJson(this._basePath, \"get\", \"routes\");\n }\n /**\n * Get the info about the node.\n * @returns The node information.\n */\n async info() {\n return this.fetchJson(this._coreApiPath, \"get\", \"info\");\n }\n /**\n * Get the tips from the node.\n * @returns The tips.\n */\n async tips() {\n return this.fetchJson(this._coreApiPath, \"get\", \"tips\");\n }\n /**\n * Get the block data by id.\n * @param blockId The block to get the data for.\n * @returns The block data.\n */\n async block(blockId) {\n return this.fetchJson(this._coreApiPath, \"get\", `blocks/${blockId}`);\n }\n /**\n * Get the block metadata by id.\n * @param blockId The block to get the metadata for.\n * @returns The block metadata.\n */\n async blockMetadata(blockId) {\n return this.fetchJson(this._coreApiPath, \"get\", `blocks/${blockId}/metadata`);\n }\n /**\n * Get the block raw data by id.\n * @param blockId The block to get the data for.\n * @returns The block raw data.\n */\n async blockRaw(blockId) {\n return this.fetchBinary(this._coreApiPath, \"get\", `blocks/${blockId}`);\n }\n /**\n * Submit block.\n * @param blockPartial The block to submit (possibly contains only partial block data).\n * @param blockPartial.protocolVersion The protocol version under which this block operates.\n * @param blockPartial.parents The parent block ids.\n * @param blockPartial.payload The payload contents.\n * @param blockPartial.nonce The nonce for the block.\n * @param powInterval The time in seconds that pow should work before aborting.\n * @param maxPowAttempts The number of times the pow should be attempted.\n * @returns The blockId.\n */\n async blockSubmit(blockPartial, powInterval, maxPowAttempts = 40) {\n var _a, _b, _c, _d, _e;\n blockPartial.protocolVersion = this._protocolVersion;\n let minPowScore = 0;\n if (this._powProvider) {\n // If there is a local pow provider and no networkId or parent block ids\n // we must populate them, so that the they are not filled in by the\n // node causing invalid pow calculation\n if (this._protocol === undefined) {\n await this.populateProtocolInfoCache();\n }\n minPowScore = (_b = (_a = this._protocol) === null || _a === void 0 ? void 0 : _a.minPowScore) !== null && _b !== void 0 ? _b : 0;\n if (!blockPartial.parents || blockPartial.parents.length === 0) {\n const tips = await this.tips();\n blockPartial.parents = tips.tips.slice(0, MAX_NUMBER_PARENTS);\n }\n }\n const block = {\n protocolVersion: (_c = blockPartial.protocolVersion) !== null && _c !== void 0 ? _c : DEFAULT_PROTOCOL_VERSION,\n parents: (_d = blockPartial.parents) !== null && _d !== void 0 ? _d : [],\n payload: blockPartial.payload,\n nonce: (_e = blockPartial.nonce) !== null && _e !== void 0 ? _e : \"0\"\n };\n const writeStream = new WriteStream();\n serializeBlock(writeStream, block);\n let blockBytes = writeStream.finalBytes();\n if (blockBytes.length > MAX_BLOCK_LENGTH) {\n throw new Error(`The block length is ${blockBytes.length}, which exceeds the maximum size of ${MAX_BLOCK_LENGTH}`);\n }\n if (this._powProvider) {\n let nonce = \"0\";\n for (let i = 0; i <= maxPowAttempts; i++) {\n // for last attempt let the pow run without interval\n nonce = (i === maxPowAttempts)\n ? await this._powProvider.pow(blockBytes, minPowScore)\n : await this._powProvider.pow(blockBytes, minPowScore, powInterval);\n if (nonce === \"0\") {\n const tips = await this.tips();\n block.parents = tips.tips.slice(0, MAX_NUMBER_PARENTS);\n const ws = new WriteStream();\n serializeBlock(ws, block);\n blockBytes = ws.finalBytes();\n }\n else {\n break;\n }\n }\n block.nonce = nonce.toString();\n }\n const response = await this.fetchJson(this._coreApiPath, \"post\", \"blocks\", block);\n return response.blockId;\n }\n /**\n * Submit block in raw format.\n * @param block The block to submit.\n * @param powInterval The time in seconds that pow should work before aborting.\n * @param maxPowAttempts The number of times the pow should be attempted.\n * @returns The blockId.\n */\n async blockSubmitRaw(block, powInterval, maxPowAttempts = 40) {\n var _a, _b, _c, _d;\n if (block.length > MAX_BLOCK_LENGTH) {\n throw new Error(`The block length is ${block.length}, which exceeds the maximum size of ${MAX_BLOCK_LENGTH}`);\n }\n block[0] = this._protocolVersion;\n if (this._powProvider && ArrayHelper.equal(block.slice(-8), SingleNodeClient.NONCE_ZERO)) {\n if (this._protocol === undefined) {\n await this.populateProtocolInfoCache();\n }\n let nonce = \"0\";\n for (let i = 0; i <= maxPowAttempts; i++) {\n // for last attempt let the pow run without interval\n nonce = (i === maxPowAttempts)\n ? await this._powProvider.pow(block, (_b = (_a = this._protocol) === null || _a === void 0 ? void 0 : _a.minPowScore) !== null && _b !== void 0 ? _b : 0)\n : await this._powProvider.pow(block, (_d = (_c = this._protocol) === null || _c === void 0 ? void 0 : _c.minPowScore) !== null && _d !== void 0 ? _d : 0, powInterval);\n if (nonce === \"0\") {\n const rs = new ReadStream(block);\n const blockObject = deserializeBlock(rs);\n const tips = await this.tips();\n blockObject.parents = tips.tips.slice(0, MAX_NUMBER_PARENTS);\n const ws = new WriteStream();\n serializeBlock(ws, blockObject);\n block = ws.finalBytes();\n }\n else {\n break;\n }\n }\n BigIntHelper.write8(bigInt(nonce), block, block.length - 8);\n }\n const response = await this.fetchBinary(this._coreApiPath, \"post\", \"blocks\", block);\n return response.blockId;\n }\n /**\n * Get the block that was included in the ledger for a transaction.\n * @param transactionId The id of the transaction to get the included block for.\n * @returns The block.\n */\n async transactionIncludedBlock(transactionId) {\n return this.fetchJson(this._coreApiPath, \"get\", `transactions/${transactionId}/included-block`);\n }\n /**\n * Get raw block that was included in the ledger for a transaction.\n * @param transactionId The id of the transaction to get the included block for.\n * @returns The block.\n */\n async transactionIncludedBlockRaw(transactionId) {\n return this.fetchBinary(this._coreApiPath, \"get\", `transactions/${transactionId}/included-block`);\n }\n /**\n * Get an output by its identifier.\n * @param outputId The id of the output to get.\n * @returns The output details.\n */\n async output(outputId) {\n return this.fetchJson(this._coreApiPath, \"get\", `outputs/${outputId}`);\n }\n /**\n * Get an outputs metadata by its identifier.\n * @param outputId The id of the output to get the metadata for.\n * @returns The output metadata.\n */\n async outputMetadata(outputId) {\n return this.fetchJson(this._coreApiPath, \"get\", `outputs/${outputId}/metadata`);\n }\n /**\n * Get an outputs raw data.\n * @param outputId The id of the output to get the raw data for.\n * @returns The output raw bytes.\n */\n async outputRaw(outputId) {\n return this.fetchBinary(this._coreApiPath, \"get\", `outputs/${outputId}`);\n }\n /**\n * Get the requested milestone.\n * @param index The index of the milestone to look up.\n * @returns The milestone payload.\n */\n async milestoneByIndex(index) {\n return this.fetchJson(this._coreApiPath, \"get\", `milestones/by-index/${index}`);\n }\n /**\n * Get the requested milestone raw.\n * @param index The index of the milestone to look up.\n * @returns The milestone payload raw.\n */\n async milestoneByIndexRaw(index) {\n return this.fetchBinary(this._coreApiPath, \"get\", `milestones/by-index/${index}`);\n }\n /**\n * Get the requested milestone utxo changes.\n * @param index The index of the milestone to request the changes for.\n * @returns The milestone utxo changes details.\n */\n async milestoneUtxoChangesByIndex(index) {\n return this.fetchJson(this._coreApiPath, \"get\", `milestones/by-index/${index}/utxo-changes`);\n }\n /**\n * Get the requested milestone.\n * @param milestoneId The id of the milestone to look up.\n * @returns The milestone payload.\n */\n async milestoneById(milestoneId) {\n return this.fetchJson(this._coreApiPath, \"get\", `milestones/${milestoneId}`);\n }\n /**\n * Get the requested milestone raw.\n * @param milestoneId The id of the milestone to look up.\n * @returns The milestone payload raw.\n */\n async milestoneByIdRaw(milestoneId) {\n return this.fetchBinary(this._coreApiPath, \"get\", `milestones/${milestoneId}`);\n }\n /**\n * Get the requested milestone utxo changes.\n * @param milestoneId The id of the milestone to request the changes for.\n * @returns The milestone utxo changes details.\n */\n async milestoneUtxoChangesById(milestoneId) {\n return this.fetchJson(this._coreApiPath, \"get\", `milestones/${milestoneId}/utxo-changes`);\n }\n /**\n * Get the current treasury output.\n * @returns The details for the treasury.\n */\n async treasury() {\n return this.fetchJson(this._coreApiPath, \"get\", \"treasury\");\n }\n /**\n * Get all the stored receipts or those for a given migrated at index.\n * @param migratedAt The index the receipts were migrated at, if not supplied returns all stored receipts.\n * @returns The stored receipts.\n */\n async receipts(migratedAt) {\n return this.fetchJson(this._coreApiPath, \"get\", `receipts${migratedAt !== undefined ? `/${migratedAt}` : \"\"}`);\n }\n /**\n * Get the list of peers.\n * @returns The list of peers.\n */\n async peers() {\n return this.fetchJson(this._coreApiPath, \"get\", \"peers\");\n }\n /**\n * Add a new peer.\n * @param multiAddress The address of the peer to add.\n * @param alias An optional alias for the peer.\n * @returns The details for the created peer.\n */\n async peerAdd(multiAddress, alias) {\n return this.fetchJson(this._coreApiPath, \"post\", \"peers\", {\n multiAddress,\n alias\n });\n }\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n * @returns Nothing.\n */\n async peerDelete(peerId) {\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n return this.fetchJson(this._coreApiPath, \"delete\", `peers/${peerId}`);\n }\n /**\n * Get a peer.\n * @param peerId The peer to delete.\n * @returns The details for the created peer.\n */\n async peer(peerId) {\n return this.fetchJson(this._coreApiPath, \"get\", `peers/${peerId}`);\n }\n /**\n * Get the protocol info from the node.\n * @returns The protocol info.\n */\n async protocolInfo() {\n if (this._protocol === undefined) {\n await this.populateProtocolInfoCache();\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._protocol;\n }\n /**\n * Extension method which provides request methods for plugins.\n * @param basePluginPath The base path for the plugin eg indexer/v1/ .\n * @param method The http method.\n * @param methodPath The path for the plugin request.\n * @param queryParams Additional query params for the request.\n * @param request The request object.\n * @returns The response object.\n */\n async pluginFetch(basePluginPath, method, methodPath, queryParams, request) {\n return this.fetchJson(this._basePath, method, `${basePluginPath}${methodPath}${this.combineQueryParams(queryParams)}`, request);\n }\n /**\n * Perform a request and just return the status.\n * @param route The route of the request.\n * @returns The response.\n * @internal\n */\n async fetchStatus(route) {\n const response = await this.fetchWithTimeout(\"get\", route);\n return response.status;\n }\n /**\n * Populate the info cached fields.\n * @internal\n */\n async populateProtocolInfoCache() {\n if (this._protocol === undefined) {\n const info = await this.info();\n const networkIdBytes = Blake2b.sum256(Converter.utf8ToBytes(info.protocol.networkName));\n this._protocol = {\n networkName: info.protocol.networkName,\n networkId: BigIntHelper.read8(networkIdBytes, 0).toString(),\n bech32Hrp: info.protocol.bech32Hrp,\n minPowScore: info.protocol.minPowScore\n };\n }\n }\n /**\n * Perform a request in json format.\n * @param basePath The base path for the request.\n * @param method The http method.\n * @param route The route of the request.\n * @param requestData Request to send to the endpoint.\n * @returns The response.\n * @internal\n */\n async fetchJson(basePath, method, route, requestData) {\n const response = await this.fetchWithTimeout(method, `${basePath}${route}`, { \"Content-Type\": \"application/json\" }, requestData ? JSON.stringify(requestData) : undefined);\n let errorMessage;\n let errorCode;\n if (response.ok) {\n if (response.status === 204) {\n // No content\n return {};\n }\n try {\n const responseData = await response.json();\n if (responseData.error) {\n errorMessage = responseData.error.message;\n errorCode = responseData.error.code;\n }\n else {\n return responseData;\n }\n }\n catch { }\n }\n if (!errorMessage) {\n try {\n const json = await response.json();\n if (json.error) {\n errorMessage = json.error.message;\n errorCode = json.error.code;\n }\n }\n catch { }\n }\n if (!errorMessage) {\n try {\n const text = await response.text();\n if (text.length > 0) {\n const match = /code=(\\d+), message=(.*)/.exec(text);\n if ((match === null || match === void 0 ? void 0 : match.length) === 3) {\n errorCode = match[1];\n errorMessage = match[2];\n }\n else {\n errorMessage = text;\n }\n }\n }\n catch { }\n }\n throw new ClientError(errorMessage !== null && errorMessage !== void 0 ? errorMessage : response.statusText, route, response.status, errorCode !== null && errorCode !== void 0 ? errorCode : response.status.toString());\n }\n /**\n * Perform a request for binary data.\n * @param basePath The base path for the request.\n * @param method The http method.\n * @param route The route of the request.\n * @param requestData Request to send to the endpoint.\n * @returns The response.\n * @internal\n */\n async fetchBinary(basePath, method, route, requestData) {\n var _a, _b, _c;\n const response = await this.fetchWithTimeout(method, `${basePath}${route}`, {\n \"Content-Type\": \"application/vnd.iota.serializer-v1\",\n \"Accept\": \"application/vnd.iota.serializer-v1\"\n }, requestData);\n let responseData;\n if (response.ok) {\n if (method === \"get\") {\n return new Uint8Array(await response.arrayBuffer());\n }\n responseData = await response.json();\n if (!(responseData === null || responseData === void 0 ? void 0 : responseData.error)) {\n return responseData;\n }\n }\n if (!responseData) {\n responseData = await response.json();\n }\n throw new ClientError((_b = (_a = responseData === null || responseData === void 0 ? void 0 : responseData.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : response.statusText, route, response.status, (_c = responseData === null || responseData === void 0 ? void 0 : responseData.error) === null || _c === void 0 ? void 0 : _c.code);\n }\n /**\n * Perform a fetch request.\n * @param method The http method.\n * @param route The route of the request.\n * @param headers The headers for the request.\n * @param body The request body.\n * @returns The response.\n * @internal\n */\n async fetchWithTimeout(method, route, headers, body) {\n let controller;\n let timerId;\n if (this._timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(() => {\n if (controller) {\n controller.abort();\n }\n }, this._timeout);\n }\n const finalHeaders = {};\n if (this._headers) {\n for (const header in this._headers) {\n finalHeaders[header] = this._headers[header];\n }\n }\n if (headers) {\n for (const header in headers) {\n finalHeaders[header] = headers[header];\n }\n }\n if (this._userName && this._password) {\n const userPass = Converter.bytesToBase64(Converter.utf8ToBytes(`${this._userName}:${this._password}`));\n finalHeaders.Authorization = `Basic ${userPass}`;\n }\n try {\n const response = await fetch(`${this._endpoint}${route}`, {\n method,\n headers: finalHeaders,\n body,\n signal: controller ? controller.signal : undefined\n });\n return response;\n }\n catch (err) {\n throw err instanceof Error && err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n }\n finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n /**\n * Combine the query params.\n * @param queryParams The quer params to combine.\n * @returns The combined query params.\n */\n combineQueryParams(queryParams) {\n return queryParams && queryParams.length > 0 ? `?${queryParams.join(\"&\")}` : \"\";\n }\n}\n/**\n * A zero nonce.\n * @internal\n */\nSingleNodeClient.NONCE_ZERO = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Converter } from \"@iota/util.js\";\nimport { SingleNodeClient } from \"../singleNodeClient.mjs\";\n/**\n * Indexer plugin which provides access to the indexer plugin API.\n */\nexport class IndexerPluginClient {\n /**\n * Create a new instance of IndexerPluginClient.\n * @param client The client for communications.\n * @param options Options for the plugin.\n * @param options.basePluginPath Base path for the plugin routes,\n * relative to client basePluginPath, defaults to indexer/v1/ .\n */\n constructor(client, options) {\n var _a;\n this._client = typeof client === \"string\" ? new SingleNodeClient(client) : client;\n this._basePluginPath = (_a = options === null || options === void 0 ? void 0 : options.basePluginPath) !== null && _a !== void 0 ? _a : \"indexer/v1/\";\n }\n /**\n * Find basic outputs using filter options.\n * @param filterOptions The options for filtering.\n * @param filterOptions.addressBech32 Filter outputs that are unlockable by the address.\n * @param filterOptions.hasStorageDepositReturn Filter for outputs having a storage deposit return unlock condition.\n * @param filterOptions.storageDepositReturnAddressBech32 Filter for outputs with storage deposit return address.\n * @param filterOptions.hasExpiration Filter for outputs having an expiration unlock condition.\n * @param filterOptions.expirationReturnAddressBech32 Filter for outputs with a certain expiration return address.\n * @param filterOptions.expiresBefore Filter for outputs that expire before a certain unix time.\n * @param filterOptions.expiresAfter Filter for outputs that expire after a certain unix time.\n * @param filterOptions.hasTimelock Filter for outputs having a timelock unlock condition.\n * @param filterOptions.timelockedBefore Filter for outputs that are timelocked before a certain unix time.\n * @param filterOptions.timelockedAfter Filter for outputs that are timelocked after a certain unix time.\n * @param filterOptions.hasNativeTokens Filter for outputs having native tokens.\n * @param filterOptions.minNativeTokenCount Filter for outputs that have at least an amount of native tokens.\n * @param filterOptions.maxNativeTokenCount Filter for outputs that have at the most an amount of native tokens.\n * @param filterOptions.senderBech32 Filter outputs by the sender.\n * @param filterOptions.tagHex Filter outputs by the tag in hex format.\n * @param filterOptions.createdBefore Filter for outputs that were created before the given time.\n * @param filterOptions.createdAfter Filter for outputs that were created after the given time.\n * @param filterOptions.pageSize Set the page size for the response.\n * @param filterOptions.cursor Request the items from the given cursor, returned from a previous request.\n * @returns The outputs with the requested filters.\n */\n async basicOutputs(filterOptions) {\n const queryParams = [];\n if (filterOptions) {\n if (filterOptions.addressBech32 !== undefined) {\n queryParams.push(`address=${filterOptions.addressBech32}`);\n }\n if (filterOptions.hasStorageDepositReturn !== undefined) {\n queryParams.push(`hasStorageDepositReturn=${filterOptions.hasStorageDepositReturn}`);\n }\n if (filterOptions.storageDepositReturnAddressBech32 !== undefined) {\n queryParams.push(`storageDepositReturnAddress=${filterOptions.storageDepositReturnAddressBech32}`);\n }\n if (filterOptions.hasExpiration !== undefined) {\n queryParams.push(`hasExpiration=${filterOptions.hasExpiration}`);\n }\n if (filterOptions.expirationReturnAddressBech32 !== undefined) {\n queryParams.push(`expirationReturnAddress=${filterOptions.expirationReturnAddressBech32}`);\n }\n if (filterOptions.expiresBefore !== undefined) {\n queryParams.push(`expiresBefore=${filterOptions.expiresBefore}`);\n }\n if (filterOptions.expiresAfter !== undefined) {\n queryParams.push(`expiresAfter=${filterOptions.expiresAfter}`);\n }\n if (filterOptions.hasTimelock !== undefined) {\n queryParams.push(`hasTimelock=${filterOptions.hasTimelock}`);\n }\n if (filterOptions.timelockedBefore !== undefined) {\n queryParams.push(`timelockedBefore=${filterOptions.timelockedBefore}`);\n }\n if (filterOptions.timelockedAfter !== undefined) {\n queryParams.push(`timelockedAfter=${filterOptions.timelockedAfter}`);\n }\n if (filterOptions.hasNativeTokens !== undefined) {\n queryParams.push(`hasNativeTokens=${filterOptions.hasNativeTokens}`);\n }\n if (filterOptions.minNativeTokenCount !== undefined) {\n queryParams.push(`minNativeTokenCount=${filterOptions.minNativeTokenCount}`);\n }\n if (filterOptions.maxNativeTokenCount !== undefined) {\n queryParams.push(`maxNativeTokenCount=${filterOptions.maxNativeTokenCount}`);\n }\n if (filterOptions.senderBech32 !== undefined) {\n queryParams.push(`sender=${filterOptions.senderBech32}`);\n }\n if (filterOptions.tagHex !== undefined) {\n queryParams.push(`tag=${filterOptions.tagHex}`);\n }\n if (filterOptions.createdBefore !== undefined) {\n queryParams.push(`createdBefore=${filterOptions.createdBefore}`);\n }\n if (filterOptions.createdAfter !== undefined) {\n queryParams.push(`createdAfter=${filterOptions.createdAfter}`);\n }\n if (filterOptions.pageSize !== undefined) {\n queryParams.push(`pageSize=${filterOptions.pageSize}`);\n }\n if (filterOptions.cursor !== undefined) {\n queryParams.push(`cursor=${filterOptions.cursor}`);\n }\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", \"outputs/basic\", queryParams);\n }\n /**\n * Find alias outputs using filter options.\n * @param filterOptions The options for filtering.\n * @param filterOptions.stateControllerBech32 Filter for a certain state controller address.\n * @param filterOptions.governorBech32 Filter for a certain governance controller address.\n * @param filterOptions.hasNativeTokens Filter for outputs having native tokens.\n * @param filterOptions.minNativeTokenCount Filter for outputs that have at least an amount of native tokens.\n * @param filterOptions.maxNativeTokenCount Filter for outputs that have at the most an amount of native tokens.\n * @param filterOptions.issuerBech32 Filter for a certain issuer.\n * @param filterOptions.senderBech32 Filter outputs by the sender.\n * @param filterOptions.createdBefore Filter for outputs that were created before the given time.\n * @param filterOptions.createdAfter Filter for outputs that were created after the given time.\n * @param filterOptions.pageSize Set the page size for the response.\n * @param filterOptions.cursor Request the items from the given cursor, returned from a previous request.\n * @returns The outputs with the requested filters.\n */\n async aliases(filterOptions) {\n const queryParams = [];\n if (filterOptions) {\n if (filterOptions.stateControllerBech32 !== undefined) {\n queryParams.push(`stateController=${filterOptions.stateControllerBech32}`);\n }\n if (filterOptions.governorBech32 !== undefined) {\n queryParams.push(`governor=${filterOptions.governorBech32}`);\n }\n if (filterOptions.hasNativeTokens !== undefined) {\n queryParams.push(`hasNativeTokens=${filterOptions.hasNativeTokens}`);\n }\n if (filterOptions.minNativeTokenCount !== undefined) {\n queryParams.push(`minNativeTokenCount=${filterOptions.minNativeTokenCount}`);\n }\n if (filterOptions.maxNativeTokenCount !== undefined) {\n queryParams.push(`maxNativeTokenCount=${filterOptions.maxNativeTokenCount}`);\n }\n if (filterOptions.issuerBech32 !== undefined) {\n queryParams.push(`issuer=${filterOptions.issuerBech32}`);\n }\n if (filterOptions.senderBech32 !== undefined) {\n queryParams.push(`sender=${filterOptions.senderBech32}`);\n }\n if (filterOptions.createdBefore !== undefined) {\n queryParams.push(`createdBefore=${filterOptions.createdBefore}`);\n }\n if (filterOptions.createdAfter !== undefined) {\n queryParams.push(`createdAfter=${filterOptions.createdAfter}`);\n }\n if (filterOptions.pageSize !== undefined) {\n queryParams.push(`pageSize=${filterOptions.pageSize}`);\n }\n if (filterOptions.cursor !== undefined) {\n queryParams.push(`cursor=${filterOptions.cursor}`);\n }\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", \"outputs/alias\", queryParams);\n }\n /**\n * Get the output for an alias.\n * @param aliasId The alias to get the output for.\n * @returns The output.\n */\n async alias(aliasId) {\n if (!Converter.isHex(aliasId, true)) {\n throw new Error(\"The alias id does not appear to be hex format\");\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", `outputs/alias/${aliasId}`);\n }\n /**\n * Find nft outputs using filter options.\n * @param filterOptions The options for filtering.\n * @param filterOptions.addressBech32 Filter outputs that are unlockable by the address.\n * @param filterOptions.hasStorageDepositReturn Filter for outputs having a storage deposit return unlock condition.\n * @param filterOptions.storageDepositReturnAddressBech32 Filter for outputs with storage deposit return address.\n * @param filterOptions.hasExpiration Filter for outputs having an expiration unlock condition.\n * @param filterOptions.expirationReturnAddressBech32 Filter for outputs with a certain expiration return address.\n * @param filterOptions.expiresBefore Filter for outputs that expire before a certain unix time.\n * @param filterOptions.expiresAfter Filter for outputs that expire after a certain unix time.\n * @param filterOptions.hasTimelock Filter for outputs having a timelock unlock condition.\n * @param filterOptions.timelockedBefore Filter for outputs that are timelocked before a certain unix time.\n * @param filterOptions.timelockedAfter Filter for outputs that are timelocked after a certain unix time.\n * @param filterOptions.hasNativeTokens Filter for outputs having native tokens.\n * @param filterOptions.minNativeTokenCount Filter for outputs that have at least an amount of native tokens.\n * @param filterOptions.maxNativeTokenCount Filter for outputs that have at the most an amount of native tokens.\n * @param filterOptions.issuerBech32 Filter outputs by the issuer.\n * @param filterOptions.senderBech32 Filter outputs by the sender.\n * @param filterOptions.tagHex Filter outputs by the tag in hex format.\n * @param filterOptions.createdBefore Filter for outputs that were created before the given time.\n * @param filterOptions.createdAfter Filter for outputs that were created after the given time.\n * @param filterOptions.pageSize Set the page size for the response.\n * @param filterOptions.cursor Request the items from the given cursor, returned from a previous request.\n * @returns The outputs with the requested filters.\n */\n async nfts(filterOptions) {\n const queryParams = [];\n if (filterOptions) {\n if (filterOptions.addressBech32 !== undefined) {\n queryParams.push(`address=${filterOptions.addressBech32}`);\n }\n if (filterOptions.hasStorageDepositReturn !== undefined) {\n queryParams.push(`hasStorageDepositReturn=${filterOptions.hasStorageDepositReturn}`);\n }\n if (filterOptions.storageDepositReturnAddressBech32 !== undefined) {\n queryParams.push(`storageDepositReturnAddress=${filterOptions.storageDepositReturnAddressBech32}`);\n }\n if (filterOptions.hasExpiration !== undefined) {\n queryParams.push(`hasExpiration=${filterOptions.hasExpiration}`);\n }\n if (filterOptions.expirationReturnAddressBech32 !== undefined) {\n queryParams.push(`expirationReturnAddress=${filterOptions.expirationReturnAddressBech32}`);\n }\n if (filterOptions.expiresBefore !== undefined) {\n queryParams.push(`expiresBefore=${filterOptions.expiresBefore}`);\n }\n if (filterOptions.expiresAfter !== undefined) {\n queryParams.push(`expiresAfter=${filterOptions.expiresAfter}`);\n }\n if (filterOptions.hasTimelock !== undefined) {\n queryParams.push(`hasTimelock=${filterOptions.hasTimelock}`);\n }\n if (filterOptions.timelockedBefore !== undefined) {\n queryParams.push(`timelockedBefore=${filterOptions.timelockedBefore}`);\n }\n if (filterOptions.timelockedAfter !== undefined) {\n queryParams.push(`timelockedAfter=${filterOptions.timelockedAfter}`);\n }\n if (filterOptions.hasNativeTokens !== undefined) {\n queryParams.push(`hasNativeTokens=${filterOptions.hasNativeTokens}`);\n }\n if (filterOptions.minNativeTokenCount !== undefined) {\n queryParams.push(`minNativeTokenCount=${filterOptions.minNativeTokenCount}`);\n }\n if (filterOptions.maxNativeTokenCount !== undefined) {\n queryParams.push(`maxNativeTokenCount=${filterOptions.maxNativeTokenCount}`);\n }\n if (filterOptions.issuerBech32 !== undefined) {\n queryParams.push(`issuer=${filterOptions.issuerBech32}`);\n }\n if (filterOptions.senderBech32 !== undefined) {\n queryParams.push(`sender=${filterOptions.senderBech32}`);\n }\n if (filterOptions.tagHex !== undefined) {\n queryParams.push(`tag=${filterOptions.tagHex}`);\n }\n if (filterOptions.createdBefore !== undefined) {\n queryParams.push(`createdBefore=${filterOptions.createdBefore}`);\n }\n if (filterOptions.createdAfter !== undefined) {\n queryParams.push(`createdAfter=${filterOptions.createdAfter}`);\n }\n if (filterOptions.pageSize !== undefined) {\n queryParams.push(`pageSize=${filterOptions.pageSize}`);\n }\n if (filterOptions.cursor !== undefined) {\n queryParams.push(`cursor=${filterOptions.cursor}`);\n }\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", \"outputs/nft\", queryParams);\n }\n /**\n * Get the output for a nft.\n * @param nftId The nft to get the output for.\n * @returns The output.\n */\n async nft(nftId) {\n if (!Converter.isHex(nftId, true)) {\n throw new Error(\"The nft id does not appear to be hex format\");\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", `outputs/nft/${nftId}`);\n }\n /**\n * Find foundry outputs using filter options.\n * @param filterOptions The options for filtering.\n * @param filterOptions.aliasAddressBech32 Filter outputs that are unlockable by the address.\n * @param filterOptions.hasNativeTokens Filter for outputs having native tokens.\n * @param filterOptions.minNativeTokenCount Filter for outputs that have at least an amount of native tokens.\n * @param filterOptions.maxNativeTokenCount Filter for outputs that have at the most an amount of native tokens.\n * @param filterOptions.createdBefore Filter for outputs that were created before the given time.\n * @param filterOptions.createdAfter Filter for outputs that were created after the given time.\n * @param filterOptions.pageSize Set the page size for the response.\n * @param filterOptions.cursor Request the items from the given cursor, returned from a previous request.\n * @returns The outputs with the requested filters.\n */\n async foundries(filterOptions) {\n const queryParams = [];\n if (filterOptions) {\n if (filterOptions.aliasAddressBech32 !== undefined) {\n queryParams.push(`aliasAddress=${filterOptions.aliasAddressBech32}`);\n }\n if (filterOptions.hasNativeTokens !== undefined) {\n queryParams.push(`hasNativeTokens=${filterOptions.hasNativeTokens}`);\n }\n if (filterOptions.minNativeTokenCount !== undefined) {\n queryParams.push(`minNativeTokenCount=${filterOptions.minNativeTokenCount}`);\n }\n if (filterOptions.maxNativeTokenCount !== undefined) {\n queryParams.push(`maxNativeTokenCount=${filterOptions.maxNativeTokenCount}`);\n }\n if (filterOptions.createdBefore !== undefined) {\n queryParams.push(`createdBefore=${filterOptions.createdBefore}`);\n }\n if (filterOptions.createdAfter !== undefined) {\n queryParams.push(`createdAfter=${filterOptions.createdAfter}`);\n }\n if (filterOptions.pageSize !== undefined) {\n queryParams.push(`pageSize=${filterOptions.pageSize}`);\n }\n if (filterOptions.cursor !== undefined) {\n queryParams.push(`cursor=${filterOptions.cursor}`);\n }\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", \"outputs/foundry\", queryParams);\n }\n /**\n * Get the output for a foundry.\n * @param foundryId The foundry to get the output for.\n * @returns The output.\n */\n async foundry(foundryId) {\n if (!Converter.isHex(foundryId, true)) {\n throw new Error(\"The foundry id does not appear to be hex format\");\n }\n return this._client.pluginFetch(this._basePluginPath, \"get\", `outputs/foundry/${foundryId}`);\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable no-bitwise */\nimport { Bech32 } from \"@iota/crypto.js\";\nimport { Converter } from \"@iota/util.js\";\nimport { ALIAS_ADDRESS_TYPE } from \"../models/addresses/IAliasAddress.mjs\";\nimport { ED25519_ADDRESS_TYPE } from \"../models/addresses/IEd25519Address.mjs\";\nimport { NFT_ADDRESS_TYPE } from \"../models/addresses/INftAddress.mjs\";\n/**\n * Convert address to bech32.\n */\nexport class Bech32Helper {\n /**\n * Encode an address to bech32.\n * @param addressType The address type to encode.\n * @param addressBytes The address bytes to encode.\n * @param humanReadablePart The human readable part to use.\n * @returns The array formated as hex.\n */\n static toBech32(addressType, addressBytes, humanReadablePart) {\n const addressData = new Uint8Array(1 + addressBytes.length);\n addressData[0] = addressType;\n addressData.set(addressBytes, 1);\n return Bech32.encode(humanReadablePart, addressData);\n }\n /**\n * Decode an address from bech32.\n * @param bech32Text The bech32 text to decode.\n * @param humanReadablePart The human readable part to use.\n * @returns The address type and address bytes or undefined if it cannot be decoded.\n */\n static fromBech32(bech32Text, humanReadablePart) {\n const decoded = Bech32.decode(bech32Text);\n if (decoded) {\n if (decoded.humanReadablePart !== humanReadablePart) {\n throw new Error(`The hrp part of the address should be ${humanReadablePart}, it is ${decoded.humanReadablePart}`);\n }\n if (decoded.data.length === 0) {\n throw new Error(\"The data part of the address should be at least length 1, it is 0\");\n }\n const addressType = decoded.data[0];\n const addressBytes = decoded.data.slice(1);\n return {\n addressType,\n addressBytes\n };\n }\n }\n /**\n * Decode an address from bech32.\n * @param bech32Address The bech32 address to decode.\n * @param humanReadablePart The human readable part to use.\n * @returns The address type.\n */\n static addressFromBech32(bech32Address, humanReadablePart) {\n const parsed = Bech32Helper.fromBech32(bech32Address, humanReadablePart);\n if (!parsed) {\n throw new Error(\"Can't decode address\");\n }\n switch (parsed.addressType) {\n case ED25519_ADDRESS_TYPE: {\n return {\n type: ED25519_ADDRESS_TYPE,\n pubKeyHash: Converter.bytesToHex(parsed.addressBytes, true)\n };\n }\n case ALIAS_ADDRESS_TYPE: {\n return {\n type: ALIAS_ADDRESS_TYPE,\n aliasId: Converter.bytesToHex(parsed.addressBytes, true)\n };\n }\n case NFT_ADDRESS_TYPE: {\n return {\n type: NFT_ADDRESS_TYPE,\n nftId: Converter.bytesToHex(parsed.addressBytes, true)\n };\n }\n default: {\n throw new Error(\"Unexpected address type\");\n }\n }\n }\n /**\n * Does the provided string look like it might be an bech32 address with matching hrp.\n * @param bech32Text The bech32 text to text.\n * @param humanReadablePart The human readable part to match.\n * @returns True if the passed address matches the pattern for a bech32 address.\n */\n static matches(bech32Text, humanReadablePart) {\n return Bech32.matches(humanReadablePart, bech32Text);\n }\n}\n/**\n * The default human readable part of the bech32 addresses for mainnet, currently 'iota'.\n */\nBech32Helper.BECH32_DEFAULT_HRP_MAIN = \"iota\";\n/**\n * The default human readable part of the bech32 addresses for devnet, currently 'atoi'.\n */\nBech32Helper.BECH32_DEFAULT_HRP_DEV = \"atoi\";\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Reason for block conflicts.\n */\n// eslint-disable-next-line no-shadow\nexport var ConflictReason;\n(function (ConflictReason) {\n /**\n * The block has no conflict.\n */\n ConflictReason[ConflictReason[\"none\"] = 0] = \"none\";\n /**\n * The referenced UTXO was already spent.\n */\n ConflictReason[ConflictReason[\"inputUTXOAlreadySpent\"] = 1] = \"inputUTXOAlreadySpent\";\n /**\n * The referenced UTXO was already spent while confirming this milestone.\n */\n ConflictReason[ConflictReason[\"inputUTXOAlreadySpentInThisMilestone\"] = 2] = \"inputUTXOAlreadySpentInThisMilestone\";\n /**\n * The referenced UTXO cannot be found.\n */\n ConflictReason[ConflictReason[\"inputUTXONotFound\"] = 3] = \"inputUTXONotFound\";\n /**\n * The sum of the inputs and output values does not match.\n */\n ConflictReason[ConflictReason[\"inputOutputSumMismatch\"] = 4] = \"inputOutputSumMismatch\";\n /**\n * The unlock signature is invalid.\n */\n ConflictReason[ConflictReason[\"invalidSignature\"] = 5] = \"invalidSignature\";\n /**\n * The configured timelock is not yet expired.\n */\n ConflictReason[ConflictReason[\"invalidTimelock\"] = 6] = \"invalidTimelock\";\n /**\n * The native tokens are invalid.\n */\n ConflictReason[ConflictReason[\"invalidNativeTokens\"] = 7] = \"invalidNativeTokens\";\n /**\n * The return amount in a transaction is not fulfilled by the output side.\n */\n ConflictReason[ConflictReason[\"returnAmountMismatch\"] = 8] = \"returnAmountMismatch\";\n /**\n * The input unlock is invalid.\n */\n ConflictReason[ConflictReason[\"invalidInputUnlock\"] = 9] = \"invalidInputUnlock\";\n /**\n * The inputs commitment is invalid.\n */\n ConflictReason[ConflictReason[\"invalidInputsCommitment\"] = 10] = \"invalidInputsCommitment\";\n /**\n * The output contains a Sender with an ident (address) which is not unlocked.\n */\n ConflictReason[ConflictReason[\"invalidSender\"] = 11] = \"invalidSender\";\n /**\n * The chain state transition is invalid.\n */\n ConflictReason[ConflictReason[\"invalidChainState\"] = 12] = \"invalidChainState\";\n /**\n * The semantic validation failed.\n */\n ConflictReason[ConflictReason[\"semanticValidationFailed\"] = 255] = \"semanticValidationFailed\";\n})(ConflictReason || (ConflictReason = {}));\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { ConflictReason } from \"../models/conflictReason.mjs\";\n/**\n * Conflict reason strings.\n */\nexport const CONFLICT_REASON_STRINGS = {\n [ConflictReason.none]: \"Not conflicting\",\n [ConflictReason.inputUTXOAlreadySpent]: \"The referenced UTXO was already spent\",\n [ConflictReason.inputUTXOAlreadySpentInThisMilestone]: \"The referenced UTXO was already spent while confirming this milestone\",\n [ConflictReason.inputUTXONotFound]: \"The referenced UTXO cannot be found\",\n [ConflictReason.inputOutputSumMismatch]: \"The sum of the inputs and output values does not match\",\n [ConflictReason.invalidSignature]: \"The unlock signature is invalid\",\n [ConflictReason.invalidTimelock]: \"The configured timelock is not yet expired\",\n [ConflictReason.invalidNativeTokens]: \"The native tokens are invalid\",\n [ConflictReason.returnAmountMismatch]: \"The return amount in a transaction is not fulfilled by the output side\",\n [ConflictReason.invalidInputUnlock]: \"The input unlock is invalid\",\n [ConflictReason.invalidInputsCommitment]: \"The inputs commitment is invalid\",\n [ConflictReason.invalidSender]: \"The output contains a Sender with an ident (address) which is not unlocked\",\n [ConflictReason.invalidChainState]: \"The chain state transition is invalid\",\n [ConflictReason.semanticValidationFailed]: \"The semantic validation failed\"\n};\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Blake2b } from \"@iota/crypto.js\";\nimport { Converter, WriteStream } from \"@iota/util.js\";\nimport { serializeBlock } from \"../binary/block.mjs\";\nimport { serializeMilestoneEssence } from \"../binary/payloads/milestonePayload.mjs\";\n/**\n * Compute a milestoneId from a milestone payload.\n * @param payload The milestone payload.\n * @returns The milestone id hex prefixed string.\n */\nexport function milestoneIdFromMilestonePayload(payload) {\n const writeStream = new WriteStream();\n serializeMilestoneEssence(writeStream, payload);\n const essenceFinal = writeStream.finalBytes();\n const essenceHash = Blake2b.sum256(essenceFinal);\n return Converter.bytesToHex(essenceHash, true);\n}\n/**\n * Compute a blockId from a milestone payload.\n * @param protocolVersion The protocol version to use.\n * @param payload The milestone payload.\n * @returns The blockId of the block with the milestone payload.\n */\nexport function blockIdFromMilestonePayload(protocolVersion, payload) {\n const writeStream = new WriteStream();\n const block = {\n protocolVersion,\n parents: payload.parents,\n payload,\n nonce: \"0\"\n };\n serializeBlock(writeStream, block);\n const blockFinal = writeStream.finalBytes();\n const blockHash = Blake2b.sum256(blockFinal);\n return Converter.bytesToHex(blockHash, true);\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}","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Blake2b } from \"@iota/crypto.js\";\nimport { BigIntHelper, Converter, ReadStream, WriteStream } from \"@iota/util.js\";\nimport { serializeAliasAddress } from \"../binary/addresses/aliasAddress.mjs\";\nimport { serializeBlock } from \"../binary/block.mjs\";\nimport { BLOCK_ID_LENGTH, TRANSACTION_ID_LENGTH } from \"../binary/commonDataTypes.mjs\";\nimport { serializeOutput } from \"../binary/outputs/outputs.mjs\";\nimport { serializeTransactionPayload } from \"../binary/payloads/transactionPayload.mjs\";\nimport { serializeTransactionEssence } from \"../binary/transactionEssence.mjs\";\nimport { ALIAS_ADDRESS_TYPE } from \"../models/addresses/IAliasAddress.mjs\";\nimport { UTXO_INPUT_TYPE } from \"../models/inputs/IUTXOInput.mjs\";\n/**\n * Helper methods for Transactions.\n */\nexport class TransactionHelper {\n /**\n * Calculate blockId from a block.\n * @param block The block.\n * @returns The blockId.\n */\n static calculateBlockId(block) {\n const writeStream = new WriteStream();\n serializeBlock(writeStream, block);\n const blockBytes = writeStream.finalBytes();\n return Converter.bytesToHex(Blake2b.sum256(blockBytes), true);\n }\n /**\n * Returns the outputId from transation id and output index.\n * @param transactionId The id of the transaction.\n * @param outputIndex The index of the output.\n * @returns The output id.\n */\n static outputIdFromTransactionData(transactionId, outputIndex) {\n const writeStream = new WriteStream();\n writeStream.writeFixedHex(\"transactionId\", TRANSACTION_ID_LENGTH, transactionId);\n writeStream.writeUInt16(\"outputIndex\", outputIndex);\n const outputIdBytes = writeStream.finalBytes();\n return Converter.bytesToHex(outputIdBytes, true);\n }\n /**\n * Calculate the Transaction Essence hash.\n * @param essence The transaction essence.\n * @returns The transaction essence hash.\n */\n static getTransactionEssenceHash(essence) {\n const writeStream = new WriteStream();\n serializeTransactionEssence(writeStream, essence);\n const essenceFinal = writeStream.finalBytes();\n return Blake2b.sum256(essenceFinal);\n }\n /**\n * Calculate the Transaction hash.\n * @param transactionPayload The payload of the transaction.\n * @returns The transaction hash.\n */\n static getTransactionPayloadHash(transactionPayload) {\n const writeStream = new WriteStream();\n serializeTransactionPayload(writeStream, transactionPayload);\n const txBytes = writeStream.finalBytes();\n return Blake2b.sum256(txBytes);\n }\n /**\n * Calculate the UTXO input from an output Id.\n * @param outputId The id of the output.\n * @returns The UTXO Input.\n */\n static inputFromOutputId(outputId) {\n const readStream = new ReadStream(Converter.hexToBytes(outputId));\n const input = {\n type: UTXO_INPUT_TYPE,\n transactionId: readStream.readFixedHex(\"transactionId\", TRANSACTION_ID_LENGTH),\n transactionOutputIndex: readStream.readUInt16(\"outputIndex\")\n };\n return input;\n }\n /**\n * Calculate the inputCommitment from the output objects that are used as inputs to fund the transaction.\n * @param inputs The output objects used as inputs for the transaction.\n * @returns The inputs commitment.\n */\n static getInputsCommitment(inputs) {\n const inputsCommitmentHasher = new Blake2b(Blake2b.SIZE_256); // blake2b hasher\n for (let i = 0; i < inputs.length; i++) {\n const writeStream = new WriteStream();\n serializeOutput(writeStream, inputs[i]);\n inputsCommitmentHasher.update(Blake2b.sum256(writeStream.finalBytes()));\n }\n return Converter.bytesToHex(inputsCommitmentHasher.final(), true);\n }\n /**\n * Calculates the required storage deposit of an output.\n * @param output The output.\n * @param rentStructure Rent cost of objects which take node resources.\n * @returns The required storage deposit.\n */\n static getStorageDeposit(output, rentStructure) {\n const writeStream = new WriteStream();\n serializeOutput(writeStream, output);\n const outputBytes = writeStream.finalBytes();\n const offset = (rentStructure.vByteFactorKey * TransactionHelper.OUTPUT_ID_LENGTH) +\n (rentStructure.vByteFactorData *\n (BLOCK_ID_LENGTH +\n TransactionHelper.CONFIRMED_MILESTONE_INDEX_LENGTH +\n TransactionHelper.CONFIRMED_UINIX_TIMESTAMP_LENGTH));\n const vByteSize = (rentStructure.vByteFactorData * outputBytes.length) + offset;\n return rentStructure.vByteCost * vByteSize;\n }\n /**\n * Returns the nftId/aliasId from an outputId.\n * NftId/aliasId is Blake2b-256 hash of the outputId that created it.\n * @param outputId The id of the output.\n * @returns The resolved Nft id or Alias id.\n */\n static resolveIdFromOutputId(outputId) {\n return Converter.bytesToHex(Blake2b.sum256(Converter.hexToBytes(outputId)), true);\n }\n /**\n * Constructs a tokenId from the aliasId, serial number and token scheme type.\n * @param aliasId The alias Id of the alias that controls the foundry.\n * @param serialNumber The serial number of the foundry.\n * @param tokenSchemeType The tokenSchemeType of the foundry.\n * @returns The tokenId.\n */\n static constructTokenId(aliasId, serialNumber, tokenSchemeType) {\n const wsAddress = new WriteStream();\n serializeAliasAddress(wsAddress, {\n type: ALIAS_ADDRESS_TYPE,\n aliasId\n });\n const aliasAddressBytes = wsAddress.finalBytes();\n const wsSerialNumber = new WriteStream();\n wsSerialNumber.writeUInt32(\"serialNumber\", serialNumber);\n const serialNumberBytes = wsSerialNumber.finalBytes();\n const wsToken = new WriteStream();\n wsToken.writeUInt8(\"tokenSchemeType\", tokenSchemeType);\n const tokenSchemeTypeBytes = wsToken.finalBytes();\n const tokenIdBytes = [...aliasAddressBytes, ...serialNumberBytes, ...tokenSchemeTypeBytes];\n return Converter.bytesToHex(new Uint8Array(tokenIdBytes), true);\n }\n /**\n * Calculates the networkId value from the network name.\n * @param networkName The name of the network.\n * @returns The networkId.\n */\n static networkIdFromNetworkName(networkName) {\n const networkIdBytes = Blake2b.sum256(Converter.utf8ToBytes(networkName));\n return BigIntHelper.read8(networkIdBytes, 0).toString();\n }\n}\n/**\n * The confirmed milestone index length.\n */\nTransactionHelper.CONFIRMED_MILESTONE_INDEX_LENGTH = 4;\n/**\n * The confirmed unix timestamp length.\n */\nTransactionHelper.CONFIRMED_UINIX_TIMESTAMP_LENGTH = 4;\n/**\n * The output Id length.\n */\nTransactionHelper.OUTPUT_ID_LENGTH = 34;\n","/**\n * Class to help with units formatting.\n */\nexport class UnitsHelper {\n /**\n * Format the value in the best units.\n * @param value The value to format.\n * @param decimalPlaces The number of decimal places to display.\n * @returns The formated value.\n */\n static formatBest(value, decimalPlaces = 2) {\n return UnitsHelper.formatUnits(value, UnitsHelper.calculateBest(value), decimalPlaces);\n }\n /**\n * Format the value in the best units.\n * @param value The value to format.\n * @param magnitude The magnitude to format with.\n * @param decimalPlaces The number of decimal places to display.\n * @returns The formated value.\n */\n static formatUnits(value, magnitude, decimalPlaces = 2) {\n if (!UnitsHelper.MAGNITUDE_MAP[magnitude]) {\n throw new Error(`Unrecognized magnitude ${magnitude}`);\n }\n if (!value) {\n return \"0\";\n }\n return magnitude === \"\"\n ? `${value}`\n : `${UnitsHelper.convertUnits(value, \"\", magnitude).toFixed(decimalPlaces)} ${magnitude}`;\n }\n /**\n * Format the value in the best units.\n * @param value The value to format.\n * @returns The best units for the value.\n */\n static calculateBest(value) {\n let bestUnits = \"\";\n if (!value) {\n return bestUnits;\n }\n const checkLength = Math.abs(value).toString().length;\n if (checkLength > UnitsHelper.MAGNITUDE_MAP.P.dp) {\n bestUnits = \"P\";\n }\n else if (checkLength > UnitsHelper.MAGNITUDE_MAP.T.dp) {\n bestUnits = \"T\";\n }\n else if (checkLength > UnitsHelper.MAGNITUDE_MAP.G.dp) {\n bestUnits = \"G\";\n }\n else if (checkLength > UnitsHelper.MAGNITUDE_MAP.M.dp) {\n bestUnits = \"M\";\n }\n else if (checkLength > UnitsHelper.MAGNITUDE_MAP.K.dp) {\n bestUnits = \"K\";\n }\n return bestUnits;\n }\n /**\n * Convert the value to different units.\n * @param value The value to convert.\n * @param from The from magnitude.\n * @param to The to magnitude.\n * @returns The formatted unit.\n */\n static convertUnits(value, from, to) {\n if (!value) {\n return 0;\n }\n if (!UnitsHelper.MAGNITUDE_MAP[from]) {\n throw new Error(`Unrecognized fromUnit ${from}`);\n }\n if (!UnitsHelper.MAGNITUDE_MAP[to]) {\n throw new Error(`Unrecognized toUnit ${to}`);\n }\n if (from === to) {\n return Number(value);\n }\n const multiplier = value < 0 ? -1 : 1;\n const scaledValue = (Math.abs(Number(value)) * UnitsHelper.MAGNITUDE_MAP[from].val) / UnitsHelper.MAGNITUDE_MAP[to].val;\n const numDecimals = UnitsHelper.MAGNITUDE_MAP[to].dp;\n // We cant use toFixed to just convert the new value to a string with\n // fixed decimal places as it will round, which we don't want\n // instead we want to convert the value to a string and manually\n // truncate the number of digits after the decimal\n // Unfortunately large numbers end up in scientific notation with\n // the regular toString() so we use a custom conversion.\n let fixed = scaledValue.toString();\n if (fixed.includes(\"e\")) {\n fixed = scaledValue.toFixed(Number.parseInt(fixed.split(\"-\")[1], 10));\n }\n // Now we have the number as a full string we can split it into\n // whole and decimals parts\n const parts = fixed.split(\".\");\n if (parts.length === 1) {\n parts.push(\"0\");\n }\n // Now truncate the decimals by the number allowed on the toUnit\n parts[1] = parts[1].slice(0, numDecimals);\n // Finally join the parts and convert back to a real number\n return Number.parseFloat(`${parts[0]}.${parts[1]}`) * multiplier;\n }\n}\n/**\n * Map units.\n */\nUnitsHelper.MAGNITUDE_MAP = {\n \"\": { val: 1, dp: 0 },\n K: { val: 1000, dp: 3 },\n M: { val: 1000000, dp: 6 },\n G: { val: 1000000000, dp: 9 },\n T: { val: 1000000000000, dp: 12 },\n P: { val: 1000000000000000, dp: 15 }\n};\n","import { INodeInfoBaseToken, TransactionHelper, UnitsHelper } from \"@iota/iota.js\";\nimport { HexHelper } from \"@iota/util.js\";\nimport bigInt from \"big-integer\";\nimport humanize from \"humanize-duration\";\nimport moment from \"moment\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { NodeConfigService } from \"../services/nodeConfigService\";\n\n/**\n * Class to help formatting values.\n */\nexport class FormatHelper {\n /**\n * The singleton instance.\n */\n private static instance: FormatHelper;\n\n /**\n * The base token of the node.\n */\n private readonly _baseToken: INodeInfoBaseToken;\n\n /**\n * Create a new instance FormatHelper.\n */\n private constructor() {\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._baseToken = nodeConfigService.getBaseToken();\n }\n\n /**\n * Get the FormatHelper singleton instance.\n * @returns The FormatHelper instance.\n */\n public static getInstance(): FormatHelper {\n if (!FormatHelper.instance) {\n FormatHelper.instance = new FormatHelper();\n }\n\n return FormatHelper.instance;\n }\n\n /**\n * Format the duration as human readable.\n * @param milliseconds The milliseconds total for the duration.\n * @returns The formatted duration.\n */\n public static duration(milliseconds: number): string {\n if (milliseconds < 3600000) {\n return humanize(milliseconds, { largest: 1, round: true });\n }\n\n return humanize(milliseconds, { largest: 2, round: true });\n }\n\n /**\n * Format the bytes to a human readable size. (SI standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static size(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1000));\n const units = [\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n const value = Number((bytes / Math.pow(1000, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the bytes to a human readable size. (IEC standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static iSize(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1024));\n const units = [\"bytes\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\n const value = Number((bytes / Math.pow(1024, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the date.\n * @param valueInMs The value to format in milliseconds.\n * @param human Humanize the date.\n * @returns The formated value.\n */\n public static date(valueInMs: number, human: boolean = true): string {\n valueInMs = FormatHelper.milliseconds(valueInMs);\n\n const timeMoment = moment(valueInMs);\n let formatted = timeMoment.format(\"LLLL\");\n\n if (human) {\n const postDate = valueInMs > Date.now() ? \"in the future\" : \"ago\";\n\n formatted += ` - ${moment.duration(moment().diff(timeMoment)).humanize()} ${postDate}`;\n }\n return formatted;\n }\n\n /**\n * Format the date in short format.\n * @param valueInMs The value to format in milliseconds.\n * @returns The formated value.\n */\n public static dateShort(valueInMs: number): string {\n return moment(FormatHelper.milliseconds(valueInMs)).format(\"YYYY-MM-DD HH:mm\");\n }\n\n /**\n * Check the value is in ms if not scale accordingly.\n * @param valueInMs The value to format in milliseconds.\n * @returns The updated value.\n */\n public static milliseconds(valueInMs: number): number {\n const asStringLength = valueInMs.toString().length;\n\n // If there are less than 13 digits this must be in seconds\n // https://stackoverflow.com/questions/23929145/how-to-test-if-a-given-time-stamp-is-in-seconds-or-milliseconds\n if (asStringLength < 13) {\n return valueInMs * 1000;\n }\n return valueInMs;\n }\n\n /**\n * Check if id is all 0 because it hasn't moved and compute it as a hash of the outputId.\n * @param id The id to resolve.\n * @param outputId The output id to hash if nft/alias id is all 0.\n * @returns The correct id.\n */\n public static resolveId(id: string, outputId: string): string {\n return !HexHelper.toBigInt256(id).eq(bigInt.zero)\n ? id\n : TransactionHelper.resolveIdFromOutputId(outputId);\n }\n\n /**\n * Format amount.\n * @param value The value to format.\n * @param formatFull Return full format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted amount.\n */\n public amount(value: number, formatFull: boolean, decimalPlaces: number = 2): string {\n if (formatFull) {\n return `${value} ${this._baseToken.subunit ?? this._baseToken.unit}`;\n }\n const baseTokeValue = value / Math.pow(10, this._baseToken.decimals);\n const amount = this._baseToken.useMetricPrefix\n ? UnitsHelper.formatBest(baseTokeValue)\n : `${Number.parseFloat(baseTokeValue.toFixed(decimalPlaces))} `;\n\n return `${amount}${this._baseToken.unit}`;\n }\n}\n","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthBad = function SvgHealthBad(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#FF6755\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#FF6755\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthBad);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-bad.f6b3a99f588b20aef147dd8cada3356f.svg\";","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthGood = function SvgHealthGood(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#61E884\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#61E884\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthGood);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-good.c06d31b2b699112b161f07c13711dc20.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgSearch = function SvgSearch(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 19,\n height: 19,\n viewBox: \"0 0 19 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.0005 14.0005C8.78843 14.0005 9.56865 13.8453 10.2966 13.5438C11.0246 13.2423 11.686 12.8003 12.2431 12.2431C12.8003 11.686 13.2423 11.0246 13.5438 10.2966C13.8453 9.56865 14.0005 8.78843 14.0005 8.0005C14.0005 7.21257 13.8453 6.43236 13.5438 5.7044C13.2423 4.97645 12.8003 4.31501 12.2431 3.75786C11.686 3.20071 11.0246 2.75875 10.2966 2.45723C9.56865 2.1557 8.78843 2.0005 8.0005 2.0005C6.4092 2.0005 4.88308 2.63264 3.75786 3.75786C2.63264 4.88308 2.0005 6.4092 2.0005 8.0005C2.0005 9.5918 2.63264 11.1179 3.75786 12.2431C4.88308 13.3684 6.4092 14.0005 8.0005 14.0005ZM14.3205 12.9065L17.9005 16.4865C17.9959 16.5788 18.072 16.6892 18.1244 16.8113C18.1767 16.9333 18.2042 17.0645 18.2052 17.1973C18.2063 17.3301 18.1809 17.4618 18.1305 17.5846C18.0802 17.7075 18.0058 17.8191 17.9119 17.9129C17.8179 18.0067 17.7062 18.0809 17.5833 18.1311C17.4604 18.1813 17.3287 18.2065 17.1959 18.2052C17.0631 18.204 16.9319 18.1763 16.8099 18.1238C16.688 18.0713 16.5777 17.9951 16.4855 17.8995L12.9055 14.3195C11.298 15.5674 9.2753 16.1557 7.24926 15.9647C5.22322 15.7737 3.34611 14.8178 2.00005 13.2916C0.654 11.7653 -0.0598121 9.78345 0.00392902 7.74943C0.0676701 5.7154 0.904173 3.78213 2.34315 2.34315C3.78213 0.904173 5.7154 0.0676701 7.74943 0.00392902C9.78345 -0.0598121 11.7653 0.654 13.2916 2.00005C14.8178 3.34611 15.7737 5.22322 15.9647 7.24926C16.1557 9.2753 15.5674 11.298 14.3195 12.9055L14.3205 12.9065Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgSearch);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/search.806d14fa934791e3eda0a3c0ef3ad6dd.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport \"./HealthIndicator.scss\";\nimport { HealthIndicatorProps } from \"./HealthIndicatorProps\";\n\n/**\n * Health Indicator.\n */\nclass HealthIndicator extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n

\n {this.props.healthy ? : }\n {this.props.label}\n
\n );\n }\n}\n\nexport default HealthIndicator;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./MicroGraph.scss\";\nimport { MicroGraphProps } from \"./MicroGraphProps\";\nimport { MicroGraphState } from \"./MicroGraphState\";\n\n/**\n * Micro Graph.\n */\nclass MicroGraph extends Component {\n /**\n * The graph width.\n */\n private readonly _graphWidth: number;\n\n /**\n * The graph height.\n */\n private readonly _graphHeight: number;\n\n /**\n * Create a new instance of MicroGraph.\n * @param props The props.\n */\n constructor(props: MicroGraphProps) {\n super(props);\n\n this._graphWidth = this.props.graphWidth ?? 80;\n this._graphHeight = this.props.graphHeight ?? 10;\n\n this.state = {\n ...this.calculateGraph()\n };\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: MicroGraphProps): void {\n if (this.props.values !== prevProps.values) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n {this.props.label}\n {this.props.value}\n \n \n {this.state.graphPoints && this.state.graphPoints.length > 0 && (\n `${g.type} ${g.x} ${g.y}`).join(\" \")}\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n )}\n {this.state.circle && this.state.circle.x >= 0 && (\n \n )}\n \n \n
\n );\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n graphPoints: {\n type: string;\n x: number;\n y: number;\n }[];\n circle: {\n x: number;\n y: number;\n };\n } {\n const graphPointCount = this._graphWidth / 2;\n\n const lastItems = this.props.values.slice(-graphPointCount);\n let min;\n let max;\n let circleX = -1;\n let circleY = -1;\n\n for (let i = 0; i < lastItems.length; i++) {\n if (min === undefined || lastItems[i] < min) {\n min = lastItems[i];\n }\n if (max === undefined || lastItems[i] > max) {\n max = lastItems[i];\n }\n }\n\n const graphPoints = [];\n if (max !== undefined && min !== undefined) {\n const range = max - min;\n const scale = range === 0 ? 1 : range / this._graphHeight;\n\n let lastY = (lastItems[0] - min) / scale;\n graphPoints.push({\n type: \"M\",\n x: 0,\n y: this._graphHeight - lastY\n });\n\n const xIncrement = (graphPointCount / lastItems.length) * 2;\n for (let i = 1; i < lastItems.length; i++) {\n const y = (lastItems[i] - min) / scale;\n graphPoints.push({\n type: \"l\",\n x: xIncrement,\n y: (y - lastY) * -1\n });\n lastY = y;\n }\n\n circleX = (lastItems.length - 1) * xIncrement;\n circleY = 10 - lastY;\n }\n\n return {\n graphPoints,\n circle: { x: circleX, y: circleY }\n };\n }\n}\n\nexport default MicroGraph;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgConfirmation = function SvgConfirmation(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgConfirmation);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/confirmation.111458925d5e48ea4edcd8448e4c034a.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as SearchIcon } from \"../../../assets/search.svg\";\nimport \"./SearchInput.scss\";\nimport { SearchInputProps } from \"./SearchInputProps\";\nimport { SearchInputState } from \"./SearchInputState\";\n\n/**\n * Search Input panel.\n */\nclass SearchInput extends Component {\n /**\n * Create a new instance of SearchInput.\n * @param props The properties.\n */\n constructor(props: SearchInputProps) {\n super(props);\n\n this.state = {\n query: \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n this.props.onSearch(this.state.query)}\n >\n \n \n this.setState({ query: e.target.value })}\n onKeyDown={e => {\n if (e.key === \"Enter\") {\n this.props.onSearch(this.state.query);\n }\n }}\n placeholder={\n this.props.compact\n ? \"Search the Tangle\"\n : \"Search blocks, addresses, outputs, milestones, indexes\"\n }\n />\n \n );\n }\n}\n\nexport default SearchInput;\n","import React, { ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IBpsMetrics } from \"../../../models/websocket/IBpsMetrics\";\nimport { IDBSizeMetric } from \"../../../models/websocket/IDBSizeMetric\";\nimport { INodeStatus } from \"../../../models/websocket/INodeStatus\";\nimport { IPublicNodeStatus } from \"../../../models/websocket/IPublicNodeStatus\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../../../services/authService\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport Breakpoint from \"./Breakpoint\";\nimport \"./Header.scss\";\nimport { HeaderProps } from \"./HeaderProps\";\nimport { HeaderState } from \"./HeaderState\";\nimport HealthIndicator from \"./HealthIndicator\";\nimport MicroGraph from \"./MicroGraph\";\nimport SearchInput from \"./SearchInput\";\n\n/**\n * Header panel.\n */\nclass Header extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The node status subscription id.\n */\n private _nodeStatusSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeSubscription?: string;\n\n /**\n * The bps metrics subscription id.\n */\n private _bpsMetricsSubscription?: string;\n\n /**\n * Create a new instance of Header.\n * @param props The props.\n */\n constructor(props: RouteComponentProps & HeaderProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n syncHealth: false,\n nodeHealth: false,\n bps: \"-\",\n bpsValues: [],\n memorySizeFormatted: \"-\",\n memorySize: [],\n dbLedgerSizeFormatted: \"-\",\n dbLedgerSize: [],\n dbTangleSizeFormatted: \"-\",\n dbTangleSize: [],\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n online: false\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"header\", isLoggedIn => {\n this.setState({\n isLoggedIn\n });\n });\n\n EventAggregator.subscribe(\"online\", \"header\", online => {\n if (online !== this.state.online) {\n this.setState({\n online\n });\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n if (!this.state.online) {\n this.setState({\n online: true\n });\n }\n if (data.isHealthy !== this.state.nodeHealth) {\n this.setState({ nodeHealth: data.isHealthy });\n }\n if (data.isSynced !== this.state.syncHealth) {\n this.setState({ syncHealth: data.isSynced });\n }\n }\n });\n\n this._nodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeStatus,\n data => {\n if (data) {\n const memorySizeFormatted = FormatHelper.iSize(data.memUsage, 1);\n\n if (memorySizeFormatted !== this.state.memorySizeFormatted) {\n this.setState({ memorySizeFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n this.setState({\n memorySize: nonNull\n .map(d => d.memUsage)\n });\n });\n\n this._databaseSizeSubscription = this._metricsService.subscribe(\n WebSocketTopic.DBSizeMetric,\n data => {\n if (data) {\n const dbLedgerSizeFormatted = FormatHelper.size(data.utxo);\n\n if (dbLedgerSizeFormatted !== this.state.dbLedgerSizeFormatted) {\n this.setState({ dbLedgerSizeFormatted });\n }\n\n const dbTangleSizeFormatted = FormatHelper.size(data.tangle);\n\n if (dbTangleSizeFormatted !== this.state.dbTangleSizeFormatted) {\n this.setState({ dbTangleSizeFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n\n const dbLedgerSizeValues = nonNull\n .map(d => d.utxo);\n\n this.setState({ dbLedgerSize: dbLedgerSizeValues });\n\n const dbTangleSizeValues = nonNull\n .map(d => d.tangle);\n\n this.setState({ dbTangleSize: dbTangleSizeValues });\n });\n\n this._bpsMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.BPSMetrics,\n data => {\n if (data) {\n const bpsValues = this.state.bpsValues.slice(-40);\n bpsValues.push(data.new);\n\n const bpsFormatted = bpsValues[bpsValues.length - 1].toString();\n\n if (bpsFormatted !== this.state.bps) {\n this.setState({ bps: bpsFormatted });\n }\n this.setState({ bpsValues });\n }\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"header\");\n EventAggregator.unsubscribe(\"online\", \"header\");\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._nodeStatusSubscription) {\n this._metricsService.unsubscribe(this._nodeStatusSubscription);\n this._nodeStatusSubscription = undefined;\n }\n\n if (this._databaseSizeSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeSubscription);\n this._databaseSizeSubscription = undefined;\n }\n\n if (this._bpsMetricsSubscription) {\n this._metricsService.unsubscribe(this._bpsMetricsSubscription);\n this._bpsMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n {this.state.online && (\n \n {this.props.children}\n this.props.history.push(`/explorer/search/${query}`)}\n className=\"child child-fill\"\n />\n \n \n \n \n \n \n {this.state.isLoggedIn && (\n \n \n \n \n \n )}\n \n \n )}\n
\n
\n );\n }\n}\n\nexport default withRouter(Header);\n","import React, { Component, ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavMenu.scss\";\nimport { NavMenuProps } from \"./NavMenuProps\";\nimport { NavMenuState } from \"./NavMenuState\";\n\n/**\n * Navigation menu.\n */\nclass NavMenu extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavMenu;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavMenuProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\",\n isOpen: false\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navmenu\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navmenu\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n this.state.isOpen && this.setState({ isOpen: false })}\n >\n this.setState({ isOpen: !this.state.isOpen })}\n >\n \n \n {this.state.isOpen && (\n
\n {this.props.children}\n
\n )}\n \n );\n }\n}\n\nexport default withRouter(NavMenu);\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavPanel.scss\";\nimport { NavPanelProps } from \"./NavPanelProps\";\nimport { NavPanelState } from \"./NavPanelState\";\n\n/**\n * Navigation panel.\n */\nclass NavPanel extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavPanel;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavPanelProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\"\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navpanel\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navpanel\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n \n \n \n\n
\n {this.props.middle.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n\n
\n {this.props.end.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n
\n );\n }\n}\n\nexport default withRouter(NavPanel);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMilestone = function SvgMilestone(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 26,\n viewBox: \"0 0 22 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 0C0.671573 0 0 0.671572 0 1.5V24.5C0 25.3284 0.671573 26 1.5 26C2.32843 26 3 25.3284 3 24.5V17H19C20.6569 17 22 15.6569 22 14V5C22 3.34315 20.6569 2 19 2H3V1.5C3 0.671573 2.32843 0 1.5 0Z\",\n fill: \"#16E1D5\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMilestone);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/milestone.cc04134a7d188f0909d9f23c87a360b2.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgUptime = function SvgUptime(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26ZM12 5C12 4.44772 12.4477 4 13 4C13.5523 4 14 4.44772 14 5V12H19C19.5523 12 20 12.4477 20 13C20 13.5523 19.5523 14 19 14H13C12.4477 14 12 13.5523 12 13V5Z\",\n fill: \"#4CAAFF\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgUptime);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/uptime.a9b43f0965de14ce059205f56a3eb6da.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronLeft = function SvgChevronLeft(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.51794 6.98708L7.68154 12.1921C7.78117 12.2891 7.86064 12.4052 7.91531 12.5334C7.96998 12.6617 7.99876 12.7997 7.99996 12.9393C8.00116 13.079 7.97477 13.2174 7.92232 13.3467C7.86987 13.4759 7.79241 13.5933 7.69447 13.692C7.59652 13.7907 7.48005 13.8688 7.35185 13.9217C7.22365 13.9746 7.08629 14.0012 6.94778 14C6.80928 13.9987 6.67239 13.9697 6.54513 13.9146C6.41786 13.8595 6.30275 13.7794 6.20652 13.679L0.30542 7.73051C0.10986 7.53332 0 7.26591 0 6.98708C0 6.70825 0.10986 6.44084 0.30542 6.24365L6.20652 0.295175C6.40326 0.103632 6.66677 -0.00235606 6.94028 3.97504e-05C7.21379 0.00243556 7.47542 0.113023 7.66883 0.307985C7.86224 0.502946 7.97195 0.766681 7.97432 1.04239C7.9767 1.31809 7.87156 1.58371 7.68154 1.78203L2.51794 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronLeft);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-left.ab1f7871604e78b85cd9b06fc83d5121.svg\";","/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\nimport React, { useRef } from \"react\";\nimport \"./Tooltip.scss\";\n\ninterface TooltipProps {\n tooltipContent: string | React.ReactNode;\n children: React.ReactNode;\n}\n\n/**\n * Component to display a tooltip on hover.\n */\nconst Tooltip: React.FC = ({ children, tooltipContent }) => {\n const tooltip = useRef(null);\n\n const onEnter = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"visible\";\n tooltip.current.style.opacity = \"1\";\n }\n };\n\n const onLeave = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"hidden\";\n tooltip.current.style.opacity = \"0\";\n }\n };\n\n return (\n
\n
\n
\n {tooltipContent}\n
\n
\n {children}\n
\n
\n );\n};\n\nexport default Tooltip;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./InfoPanel.scss\";\nimport { InfoPanelProps } from \"./InfoPanelProps\";\nimport Tooltip from \"./Tooltip\";\n\nconst MILESTONE_CAPTION = \"CMI / LMI\";\n\n/**\n * Info panel.\n */\nclass InfoPanel extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n let cmi = \"\";\n let lmi = \"\";\n if (this.props.caption === MILESTONE_CAPTION && this.props.value) {\n const milestone = this.props.value.split(\"/\");\n cmi = milestone[0];\n lmi = milestone[1];\n }\n return (\n
\n
\n
\n {this.props.icon}\n
\n
\n

{this.props.caption}

\n {\n this.props.caption === MILESTONE_CAPTION ?\n \n {\n this.props.value ?\n
\n {cmi} / {lmi}\n
:\n \"-\"\n }\n :\n
{this.props.value ?? \"-\"}
\n }\n
\n
\n );\n }\n}\n\nexport default InfoPanel;\n","import React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ConfirmationIcon } from \"../../assets/confirmation.svg\";\nimport { ReactComponent as MilestoneIcon } from \"../../assets/milestone.svg\";\nimport { ReactComponent as UptimeIcon } from \"../../assets/uptime.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IConfirmedMsMetrics } from \"../../models/websocket/IConfirmedMsMetrics\";\nimport { IMs } from \"../../models/websocket/IMs\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport InfoPanel from \"../components/layout/InfoPanel\";\nimport SearchInput from \"../components/layout/SearchInput\";\nimport \"./Explorer.scss\";\nimport { ExplorerState } from \"./ExplorerState\";\n\n/**\n * Explorer panel.\n */\nclass Peers extends AsyncComponent {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The milestones subscription id.\n */\n private _milestonesSubscription?: string;\n\n /**\n * The confirmed metrics subscription id.\n */\n private _confirmedMsMetricsSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n\n this.state = {\n milestones: [],\n bps: \"-\",\n rbps: \"-\",\n referencedRate: \"-\"\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._milestonesSubscription = this._metricsService.subscribe(\n WebSocketTopic.Milestone,\n undefined,\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n\n this.setState({\n milestones: nonNull\n .map(m => ({ index: m.index, milestoneId: m.milestoneId }))\n .sort((m1, m2) => m2.index - m1.index)\n .slice(0, 10)\n });\n }\n );\n\n this._confirmedMsMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.ConfirmedMsMetrics,\n data => {\n if (data) {\n this.setState({\n bps: data.blocksPerSecond.toFixed(1).toString(),\n rbps: data.referencedBlocksPerSecond.toFixed(1).toString(),\n referencedRate: `${data.referencedRate.toFixed(1).toString()}%`\n });\n }\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._milestonesSubscription) {\n this._metricsService.unsubscribe(this._milestonesSubscription);\n this._milestonesSubscription = undefined;\n }\n\n if (this._confirmedMsMetricsSubscription) {\n this._metricsService.unsubscribe(this._confirmedMsMetricsSubscription);\n this._confirmedMsMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n

Explorer

\n
\n this.props.history.push(`/explorer/search/${query}`)}\n />\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
\n
\n

Latest Milestones

\n {this.state.milestones.length === 0 && (\n

There are no milestones.

\n )}\n\n {this.state.milestones.map((ms, idx) => (\n
\n
{ms.index}
\n \n {ms.milestoneId}\n \n
\n ))}\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Peers);\n","import { IOutputResponse, OutputTypes } from \"@iota/iota.js\";\n\nexport enum AssociationType {\n BASIC_OUTPUT,\n BASIC_SENDER,\n BASIC_EXPIRATION_RETURN,\n BASIC_STORAGE_RETURN,\n ALIAS_STATE_CONTROLLER,\n ALIAS_GOVERNOR,\n ALIAS_ISSUER,\n ALIAS_SENDER,\n FOUNDRY_ALIAS,\n NFT_OUTPUT,\n NFT_STORAGE_RETURN,\n NFT_EXPIRATION_RETURN,\n NFT_SENDER,\n NFT_ISSUER,\n TAG\n}\n\nexport interface IAssociatedOutput {\n association?: AssociationType;\n outputId: string;\n outputDetails?: IOutputResponse;\n outputType?: OutputTypes;\n}\n\nexport interface IAssociatedOutputsResponse {\n /**\n * The associated outputs.\n */\n outputs?: IAssociatedOutput[];\n}\n","import { Bech32Helper, ALIAS_ADDRESS_TYPE, ED25519_ADDRESS_TYPE, NFT_ADDRESS_TYPE } from \"@iota/iota.js\";\nimport { Converter, HexHelper } from \"@iota/util.js\";\nimport { IBech32AddressDetails } from \"../models/IBech32AddressDetails\";\n\nexport class Bech32AddressHelper {\n /**\n * Build the address details.\n * @param address The address to source the data from.\n * @param hrp The human readable part of the address.\n * @param addressType The address type\n * @returns The parts of the address.\n */\n public static buildAddress(address: string, hrp: string, addressType?: number): IBech32AddressDetails {\n let bech32;\n let hex;\n let hexNoPrefix;\n let type;\n\n if (Bech32Helper.matches(address, hrp)) {\n try {\n const result = Bech32Helper.fromBech32(address, hrp);\n if (result) {\n bech32 = address;\n type = result.addressType;\n hex = Converter.bytesToHex(result.addressBytes, true);\n hexNoPrefix = HexHelper.stripPrefix(hex);\n }\n } catch {}\n }\n\n if (!bech32) {\n hex = HexHelper.addPrefix(address);\n hexNoPrefix = HexHelper.stripPrefix(address);\n type = addressType !== undefined ? addressType : ED25519_ADDRESS_TYPE;\n bech32 = Bech32Helper.toBech32(type, Converter.hexToBytes(hex), hrp);\n }\n\n return {\n bech32,\n hex,\n hexNoPrefix,\n type,\n typeLabel: Bech32AddressHelper.typeLabel(type)\n };\n }\n\n /**\n * Convert the address type number to a label.\n * @param addressType The address type to get the label for.\n * @returns The label.\n */\n public static typeLabel(addressType?: number): string | undefined {\n if (addressType === ED25519_ADDRESS_TYPE) {\n return \"Ed25519\";\n } else if (addressType === ALIAS_ADDRESS_TYPE) {\n return \"Alias\";\n } else if (addressType === NFT_ADDRESS_TYPE) {\n return \"Nft\";\n }\n return \"Unknown address type\";\n }\n}\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgCopy = function SvgCopy(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 9 1 L 16 1 C 16.552 1 17 1.448 17 2 L 17 9 C 17 9.552 16.552 10 16 10 L 9 10 C 8.448 10 8 9.552 8 9 L 8 2 C 8 1.448 8.448 1 9 1 Z\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 5.125 6 L 4 6 C 2.895 6 2 6.895 2 8 L 2 14 C 2 15.105 2.895 16 4 16 L 10 16 C 11.105 16 12 15.105 12 14 L 12 12.875\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgCopy);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/copy.c627cf0b9bce73941709ff5324f011e6.svg\";","import { SIGNATURE_UNLOCK_TYPE, REFERENCE_UNLOCK_TYPE, ALIAS_UNLOCK_TYPE, NFT_UNLOCK_TYPE,\n UTXO_INPUT_TYPE, TREASURY_INPUT_TYPE,\n BASIC_OUTPUT_TYPE, ALIAS_OUTPUT_TYPE, NFT_OUTPUT_TYPE, FOUNDRY_OUTPUT_TYPE, TREASURY_OUTPUT_TYPE,\n ADDRESS_UNLOCK_CONDITION_TYPE, STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE,\n TIMELOCK_UNLOCK_CONDITION_TYPE, EXPIRATION_UNLOCK_CONDITION_TYPE,\n STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE, GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE,\n IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE,\n ED25519_ADDRESS_TYPE, ALIAS_ADDRESS_TYPE, NFT_ADDRESS_TYPE,\n ISSUER_FEATURE_TYPE, METADATA_FEATURE_TYPE,\n SENDER_FEATURE_TYPE, TAG_FEATURE_TYPE } from \"@iota/iota.js\";\n\nexport class NameHelper {\n /**\n * Get the name for the address type.\n * @param type The type to get the name for.\n * @returns The address type name.\n */\n public static getAddressTypeName(type: number): string {\n if (type === ED25519_ADDRESS_TYPE) {\n return \"Address\";\n } else if (type === ALIAS_ADDRESS_TYPE) {\n return \"Alias address\";\n } else if (type === NFT_ADDRESS_TYPE) {\n return \"NFT address\";\n }\n return \"Unknown Address Type\";\n }\n\n /**\n * Get the name for the input type.\n * @param type The type to get the name for.\n * @returns The input type name.\n */\n public static getInputTypeName(type: number): string {\n if (type === UTXO_INPUT_TYPE) {\n return \"UTXO Input\";\n } else if (type === TREASURY_INPUT_TYPE) {\n return \"Treasury Input\";\n }\n return \"Unknown Input\";\n }\n\n /**\n * Get the name for the output type.\n * @param type The type to get the name for.\n * @returns The output type name.\n */\n public static getOutputTypeName(type: number): string {\n if (type === BASIC_OUTPUT_TYPE) {\n return \"Basic Output\";\n } else if (type === ALIAS_OUTPUT_TYPE) {\n return \"Alias Output\";\n } else if (type === NFT_OUTPUT_TYPE) {\n return \"Nft Output\";\n } else if (type === FOUNDRY_OUTPUT_TYPE) {\n return \"Foundry Output\";\n } else if (type === TREASURY_OUTPUT_TYPE) {\n return \"Treasury Output\";\n }\n return \"Unknown Output\";\n }\n\n /**\n * Get the name for the unlock block type.\n * @param type The type to get the name for.\n * @returns The unlock block type name.\n */\n public static getUnlockBlockTypeName(type: number): string {\n if (type === SIGNATURE_UNLOCK_TYPE) {\n return \"Signature Unlock Block\";\n } else if (type === REFERENCE_UNLOCK_TYPE) {\n return \"Reference Unlock Block\";\n } else if (type === ALIAS_UNLOCK_TYPE) {\n return \"Alias Unlock Block\";\n } else if (type === NFT_UNLOCK_TYPE) {\n return \"Nft Unlock Block\";\n }\n return \"Unknown Unlock Block\";\n }\n\n /**\n * Get the name for the unlock condition type.\n * @param type The type to get the name for.\n * @returns The unlock condition type name.\n */\n public static getUnlockConditionTypeName(type: number): string {\n if (type === ADDRESS_UNLOCK_CONDITION_TYPE) {\n return \"Address Unlock Condition\";\n } else if (type === STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE) {\n return \"Storage Desposit Return Unlock Condition\";\n } else if (type === TIMELOCK_UNLOCK_CONDITION_TYPE) {\n return \"Timelock Unlock Condition\";\n } else if (type === EXPIRATION_UNLOCK_CONDITION_TYPE) {\n return \"Expiration Unlock Condition\";\n } else if (type === STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE) {\n return \"State Controller Address Unlock Condition\";\n } else if (type === GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE) {\n return \"Governor Unlock Condition\";\n } else if (type === IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) {\n return \"Immutable Alias Unlock Condition\";\n }\n return \"Unknown Unlock Condition\";\n }\n\n /**\n * Get the name for the feature block type.\n * @param type The type to get the name for.\n * @returns The feature block type name.\n */\n public static getFeatureBlockTypeName(type: number): string {\n if (type === SENDER_FEATURE_TYPE) {\n return \"Sender Feature\";\n } else if (type === ISSUER_FEATURE_TYPE) {\n return \"Issuer Feature\";\n } else if (type === METADATA_FEATURE_TYPE) {\n return \"Metadata Feature\";\n } else if (type === TAG_FEATURE_TYPE) {\n return \"Tag Feature\";\n }\n return \"Unknown Feature\";\n }\n}\n","/**\n * Helper methods for clipboard.\n */\nexport class ClipboardHelper {\n /**\n * Copy the text to the clipboard.\n * @param text The text to copy.\n * @returns True id the text was copied.\n */\n public static copy(text: string | undefined): boolean {\n if (text !== undefined && text !== null) {\n try {\n const textArea = document.createElement(\"textarea\");\n\n // Prevent zooming on iOS\n textArea.style.fontSize = \"12pt\";\n // Reset box model\n textArea.style.border = \"0\";\n textArea.style.padding = \"0\";\n textArea.style.margin = \"0\";\n // Move element out of screen horizontally\n textArea.style.position = \"absolute\";\n textArea.style.left = \"-9999px\";\n // Move element to the same position vertically\n const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n textArea.style.top = `${yPosition}px`;\n\n textArea.setAttribute(\"readonly\", \"\");\n textArea.value = text;\n\n document.body.append(textArea);\n\n textArea.select();\n document.execCommand(\"Copy\");\n textArea.remove();\n\n return true;\n } catch {\n // Not much we can do\n return false;\n }\n } else {\n return false;\n }\n }\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgDropdownArrow = function SvgDropdownArrow(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 5,\n height: 10,\n viewBox: \"0 0 5 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 10L5 5L0 0V10Z\",\n fill: \"#485776\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgDropdownArrow);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/dropdown-arrow.dc7cfa60f6881f83fa082f655b0ed1d7.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as CopyIcon } from \"../../../assets/copy.svg\";\nimport \"./BlockButton.scss\";\nimport { BlockButtonProps } from \"./BlockButtonProps\";\nimport { BlockButtonState } from \"./BlockButtonState\";\n\n/**\n * Component which will display a block button.\n */\nclass BlockButton extends Component {\n /**\n * Create a new instance of BlockButton.\n * @param props The props.\n */\n constructor(props: BlockButtonProps) {\n super(props);\n\n this.state = {\n active: false,\n message: props.buttonType === \"copy\" ? \"Copied\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.activate()}\n >\n {this.props.buttonType === \"copy\" && (\n \n )}\n \n {this.state.active && this.state.message && (\n \n {this.state.message}\n \n )}\n
\n );\n }\n\n /**\n * Activate the button.\n */\n private activate(): void {\n this.props.onClick();\n\n this.setState({ active: true });\n setTimeout(\n () => {\n this.setState({ active: false });\n },\n 2000);\n }\n}\n\nexport default BlockButton;\n","import { ALIAS_ADDRESS_TYPE, ED25519_ADDRESS_TYPE } from \"@iota/iota.js\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { NodeConfigService } from \"../../../services/nodeConfigService\";\nimport { Bech32AddressHelper } from \"../../../utils/bech32AddressHelper\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { NameHelper } from \"../../../utils/nameHelper\";\nimport BlockButton from \"../layout/BlockButton\";\nimport { Bech32AddressProps } from \"./Bech32AddressProps\";\nimport { Bech32AddressState } from \"./Bech32AddressState\";\n\n/**\n * Component which will display an Bech32Address.\n */\nclass Bech32Address extends Component {\n /**\n * Create a new instance of Bech 32 Address\n * @param props The props.\n */\n constructor(props: Bech32AddressProps) {\n super(props);\n\n if (this.props.address) {\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n\n const hash = this.props.address.type === ED25519_ADDRESS_TYPE\n ? this.props.address?.pubKeyHash\n : (this.props.address.type === ALIAS_ADDRESS_TYPE\n ? this.props.address?.aliasId\n : this.props.address?.nftId);\n\n this.state = {\n addressDetails: Bech32AddressHelper.buildAddress(\n hash,\n nodeConfigService.getBech32Hrp(),\n this.props.address.type\n )\n };\n } else if (this.props.addressDetails) {\n this.state = {\n addressDetails: this.props.addressDetails\n };\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n {this.state.addressDetails.bech32 && (\n \n
\n {this.state.addressDetails.type\n ? NameHelper.getAddressTypeName(this.state.addressDetails.type)\n : \"Address\"}\n
\n
\n {this.props.activeLinks && (\n \n {this.state.addressDetails.bech32}\n \n )}\n {!this.props.activeLinks && (\n {this.state.addressDetails.bech32}\n )}\n ClipboardHelper.copy(this.props.addressDetails?.bech32)}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
\n
\n )}\n {this.props.showHexAddress &&\n this.state.addressDetails?.hex && (\n \n
\n {this.state.addressDetails.typeLabel} Address\n
\n
\n {this.props.activeLinks && (\n \n {this.state.addressDetails?.hex}\n \n )}\n {!this.props.activeLinks && (\n {this.state.addressDetails?.hex}\n )}\n ClipboardHelper.copy(this.props.addressDetails?.hex)}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
\n
\n )}\n
\n );\n }\n}\n\nexport default Bech32Address;\n","import { ISSUER_FEATURE_TYPE, METADATA_FEATURE_TYPE, SENDER_FEATURE_TYPE, TAG_FEATURE_TYPE } from \"@iota/iota.js\";\nimport { Converter } from \"@iota/util.js\";\nimport classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { NameHelper } from \"../../../utils/nameHelper\";\nimport BlockButton from \"../layout/BlockButton\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport Bech32Address from \"./Bech32Address\";\nimport { FeatureProps } from \"./FeatureProps\";\nimport { FeatureState } from \"./FeatureState\";\n\n/**\n * Component which will display an Feature.\n */\nclass FeatureBlock extends Component {\n /**\n * Create a new instance of Feature.\n * @param props The props.\n */\n constructor(props: FeatureProps) {\n super(props);\n\n let hexData;\n let utf8Data;\n let jsonData;\n let dataLabel;\n\n if (this.props.feature.type === METADATA_FEATURE_TYPE || this.props.feature.type === TAG_FEATURE_TYPE) {\n const data = this.props.feature.type === TAG_FEATURE_TYPE\n ? this.props.feature.tag : this.props.feature.data;\n const matchHexData = data.match(/.{1,2}/g);\n\n dataLabel = this.props.feature.type === METADATA_FEATURE_TYPE ? \"Data\" : \"Tag\";\n hexData = matchHexData ? matchHexData.join(\" \") : data;\n utf8Data = Converter.hexToUtf8(data);\n\n try {\n jsonData = JSON.stringify(JSON.parse(utf8Data), undefined, \" \");\n } catch {}\n }\n\n\n this.state = {\n showDetails: false,\n utf8Data,\n hexData,\n jsonData,\n dataLabel\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.setState({ showDetails: !this.state.showDetails })}\n >\n\n
\n \n
\n

\n {NameHelper.getFeatureBlockTypeName(this.props.feature.type)}\n

\n
\n\n {this.state.showDetails && (\n
\n {(this.props.feature.type === SENDER_FEATURE_TYPE ||\n this.props.feature.type === ISSUER_FEATURE_TYPE) && (\n \n )}\n {(this.props.feature.type === METADATA_FEATURE_TYPE ||\n this.props.feature.type === TAG_FEATURE_TYPE) && (\n \n {!this.state.jsonData && this.state.utf8Data && (\n \n
\n {this.state.dataLabel} UTF8\n ClipboardHelper.copy(\n this.state.utf8Data\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
\n
\n {this.state.utf8Data}\n
\n
\n )}\n {this.state.jsonData && (\n \n
\n {this.state.dataLabel} JSON\n ClipboardHelper.copy(\n this.state.jsonData\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
\n
\n {this.state.jsonData}\n
\n
\n )}\n {this.state.hexData && (\n \n
\n {this.state.dataLabel} Hex\n ClipboardHelper.copy(\n this.state.hexData?.replace(/ /g, \"\")\n )}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
\n
\n {this.state.hexData}\n
\n
\n )}\n
\n )}\n
\n )}\n\n
\n );\n }\n}\n\nexport default FeatureBlock;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport { TokenProps } from \"./TokenProps\";\nimport { TokenState } from \"./TokenState\";\n\n\n/**\n * Component which will display an Token.\n */\nclass Token extends Component {\n /**\n * Create a new instance of Token.\n * @param props The props.\n */\n constructor(props: TokenProps) {\n super(props);\n\n this.state = {\n showDetails: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.setState({ showDetails: !this.state.showDetails })}\n >\n
\n \n
\n

\n Token {this.props.index}\n

\n
\n {this.state.showDetails && (\n
\n
\n Token Id\n
\n
\n {this.props.token.id}\n
\n
\n Amount\n
\n
\n {Number.parseInt(this.props.token.amount, 16)}\n
\n
\n )}\n
\n );\n }\n}\n\nexport default Token;\n","import { ADDRESS_UNLOCK_CONDITION_TYPE, EXPIRATION_UNLOCK_CONDITION_TYPE, STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE, GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE, IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE, STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE, TIMELOCK_UNLOCK_CONDITION_TYPE } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport { NameHelper } from \"../../../utils/nameHelper\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport Bech32Address from \"./Bech32Address\";\nimport { UnlockConditionProps } from \"./UnlockConditionProps\";\nimport { UnlockCondtionState } from \"./UnlockConditionState\";\n\n/**\n * Component which will display an unlock condition.\n */\nclass UnlockCondition extends Component {\n /**\n * Create a new instance of Output.\n * @param props The props.\n */\n constructor(props: UnlockConditionProps) {\n super(props);\n\n this.state = {\n showDetails: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.setState({ showDetails: !this.state.showDetails })}\n >\n\n\n
\n \n
\n

\n {NameHelper.getUnlockConditionTypeName(this.props.unlockCondition.type)}\n

\n
\n\n {this.state.showDetails && (\n
\n {(this.props.unlockCondition.type === ADDRESS_UNLOCK_CONDITION_TYPE ||\n this.props.unlockCondition.type === STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_TYPE ||\n this.props.unlockCondition.type === GOVERNOR_ADDRESS_UNLOCK_CONDITION_TYPE ||\n this.props.unlockCondition.type === IMMUTABLE_ALIAS_UNLOCK_CONDITION_TYPE) && (\n \n )}\n {this.props.unlockCondition.type === STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_TYPE && (\n \n \n
\n Amount:\n
\n
\n {this.props.unlockCondition.amount}\n
\n
\n )}\n {(this.props.unlockCondition.type === TIMELOCK_UNLOCK_CONDITION_TYPE ||\n this.props.unlockCondition.type === EXPIRATION_UNLOCK_CONDITION_TYPE) && (\n \n {this.props.unlockCondition.type === EXPIRATION_UNLOCK_CONDITION_TYPE && (\n \n )}\n {this.props.unlockCondition.unixTime && (\n \n
\n Unix time\n
\n
\n {FormatHelper.date(this.props.unlockCondition.unixTime * 1000)}\n
\n
\n )}\n
\n )}\n
\n Type:\n
\n
\n {this.props.unlockCondition.type}\n
\n
\n )}\n \n );\n }\n}\n\nexport default UnlockCondition;\n","import { BASIC_OUTPUT_TYPE, ALIAS_OUTPUT_TYPE, FOUNDRY_OUTPUT_TYPE, NFT_OUTPUT_TYPE, TREASURY_OUTPUT_TYPE, SIMPLE_TOKEN_SCHEME_TYPE, ALIAS_ADDRESS_TYPE, NFT_ADDRESS_TYPE, IImmutableAliasUnlockCondition, IAliasAddress, TransactionHelper } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport { NameHelper } from \"../../../utils/nameHelper\";\nimport BlockButton from \"../layout/BlockButton\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport Bech32Address from \"./Bech32Address\";\nimport Feature from \"./Feature\";\nimport { OutputProps } from \"./OutputProps\";\nimport { OutputState } from \"./OutputState\";\nimport Token from \"./Token\";\nimport UnlockCondition from \"./UnlockCondition\";\n\n/**\n * Component which will display an output.\n */\nclass Output extends Component {\n /**\n * Create a new instance of Output.\n * @param props The props.\n */\n constructor(props: OutputProps) {\n super(props);\n\n this.state = {\n formatFull: false,\n isGenesis: props.metadata?.blockId === \"0\".repeat(64),\n showDetails: this.props.showDetails ?? false,\n showTokens: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n this.setState({ showDetails: !this.state.showDetails })}\n >\n
\n \n
\n

\n {NameHelper.getOutputTypeName(this.props.output.type)} {this.props.index}\n \n \n {this.props.outputId}\n \n \n

\n
\n
\n this.setState(\n {\n formatFull: !this.state.formatFull\n }\n )}\n >\n {FormatHelper.getInstance().amount(\n Number(this.props.output.amount),\n this.state.formatFull\n )}\n \n
\n
\n\n {this.state.showDetails && (\n
\n {/* Diplay metadata for Output Response */}\n {this.props.metadata && (\n \n
\n Block Id\n
\n
\n {this.state.isGenesis && (\n Genesis\n )}\n {!this.state.isGenesis && (\n \n \n {this.props.metadata.blockId}\n \n {\n ClipboardHelper.copy(this.props.metadata?.blockId);\n }}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n \n )}\n
\n
\n Transaction Id\n
\n
\n {this.state.isGenesis && (\n Genesis\n )}\n {!this.state.isGenesis && (\n \n \n {this.props.metadata.transactionId}\n \n {\n ClipboardHelper.copy(this.props.metadata?.transactionId);\n }}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n \n )}\n
\n
\n Index\n
\n
\n {this.props.metadata.outputIndex}\n
\n
\n Is Spent\n
\n
\n {this.props.metadata.isSpent ? \"Yes\" : \"No\"}\n
\n
\n )}\n\n {this.props.output.type === ALIAS_OUTPUT_TYPE && (\n \n \n
\n State index:\n
\n
\n {this.props.output.stateIndex}\n
\n
\n State metadata:\n
\n
\n {this.props.output.stateMetadata}\n
\n
\n Foundry counter:\n
\n
\n {this.props.output.foundryCounter}\n
\n
\n )}\n\n {this.props.output.type === NFT_OUTPUT_TYPE && (\n \n )}\n\n {this.props.output.type === FOUNDRY_OUTPUT_TYPE && (\n \n
\n Foundry id:\n
\n
\n {TransactionHelper.constructTokenId(\n ((this.props.output.unlockConditions[0] as IImmutableAliasUnlockCondition)\n .address as IAliasAddress).aliasId,\n this.props.output.serialNumber,\n this.props.output.tokenScheme.type)}\n
\n
\n Serial number:\n
\n
\n {this.props.output.serialNumber}\n
\n
\n Token scheme type:\n
\n
\n {this.props.output.tokenScheme.type}\n
\n {this.props.output.tokenScheme.type === SIMPLE_TOKEN_SCHEME_TYPE && (\n \n
\n Minted tokens:\n
\n
\n {Number.parseInt(this.props.output.tokenScheme.mintedTokens, 16)}\n
\n
\n Melted tokens:\n
\n
\n {Number.parseInt(this.props.output.tokenScheme.meltedTokens, 16)}\n
\n
\n Maximum supply:\n
\n
\n {Number.parseInt(this.props.output.tokenScheme.maximumSupply, 16)}\n
\n
\n )}\n
\n )}\n\n {/* all output types except Treasury have common output conditions */}\n {this.props.output.type !== TREASURY_OUTPUT_TYPE && (\n \n {this.props.output.unlockConditions.map((unlockCondition, idx) => (\n \n ))}\n {this.props.output.features?.map((feature, idx) => (\n \n ))}\n {this.props.output.type !== BASIC_OUTPUT_TYPE &&\n this.props.output.immutableFeatures && (\n \n {this.props.output.immutableFeatures\n .map((immutableFeature, idx) => (\n \n ))}\n \n )}\n\n {this.props.output?.nativeTokens && (\n \n this.setState({ showTokens: !this.state.showTokens })}\n >\n
\n \n
\n

\n Native Tokens\n

\n
\n {this.state.showTokens && (\n
\n {this.props.output.nativeTokens?.map((token, idx: number) => (\n \n ))}\n
\n )}\n \n )}\n \n )}\n
\n )}\n \n \n );\n }\n}\n\nexport default Output;\n","import classNames from \"classnames\";\nimport React, { ReactNode, Component } from \"react\";\nimport \"./Pagination.scss\";\nimport { PaginationProps } from \"./PaginationProps\";\nimport { PaginationState } from \"./PaginationState\";\n\n/**\n * Component which will display pagination.\n */\nclass Pagination extends Component {\n /**\n * Dots for pagination.\n */\n private static readonly DOTS: string = \"...\";\n\n /**\n * Dots for pagination.\n */\n private readonly _resize;\n\n /**\n * Is the component mounted.\n */\n private _isMounted?: boolean;\n\n /**\n * Create a new instance of Pagination.\n * @param props The props.\n */\n constructor(props: PaginationProps) {\n super(props);\n this._resize = this.resize.bind(this);\n this.state = {\n paginationRange: [],\n lastPage: 0,\n isMobile: false\n };\n }\n\n /**\n * The component updated.\n * @param prevProps previous props\n */\n public componentDidUpdate(prevProps: PaginationProps): void {\n if (this.props !== prevProps) {\n const paginationRange = this.updatePaginationRange();\n this.setState(\n { paginationRange },\n () => this.setState(\n { lastPage: paginationRange[paginationRange.length - 1] as number }\n )\n );\n }\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._isMounted = true;\n window.addEventListener(\"resize\", this._resize);\n this.resize();\n }\n\n public resize() {\n const isMobileViewPort = window.innerWidth < 768;\n\n if (this.state.isMobile !== isMobileViewPort && this._isMounted) {\n this.setState(\n { isMobile: isMobileViewPort },\n () => this.setState({ paginationRange: this.updatePaginationRange() })\n );\n }\n }\n\n /**\n * The component will unmounted.\n */\n public async componentWillUnmount(): Promise {\n this._isMounted = false;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n {\n const page = this.props.currentPage < 11 ? 1 : this.props.currentPage - 10;\n this.props.onPageChange(page);\n }}\n >\n
\n
\n \n {\n this.props.onPageChange(this.props.currentPage - 1);\n }}\n >\n
\n \n {this.state.paginationRange.map((pageNumber: (number|string), idx: number) => {\n if (pageNumber === Pagination.DOTS) {\n return
  • {pageNumber}
  • ;\n }\n\n return (\n this.props.onPageChange(pageNumber as number)}\n >\n {pageNumber}\n \n );\n })}\n {\n this.props.onPageChange(this.props.currentPage + 1);\n }}\n >\n
    \n \n {\n const page = this.props.currentPage > this.state.lastPage - 10\n ? this.state.lastPage\n : this.props.currentPage + 10;\n this.props.onPageChange(page);\n }}\n >\n
    \n
    \n \n \n );\n }\n\n\n /**\n * Update pagination range.\n * @returns The range of available pages.\n */\n protected updatePaginationRange(): (string|number)[] {\n let paginationRange: (string|number)[] = [];\n\n const totalPageCount: number = Math.ceil(this.props.totalCount / this.props.pageSize);\n\n // Min page range is determined as siblingsCount + firstPage + lastPage + currentPage + 2*DOTS\n const minPageRangeCount: number = this.props.siblingsCount + 5;\n\n if (minPageRangeCount >= totalPageCount) {\n return this.range(1, totalPageCount);\n }\n\n const leftSiblingIndex = Math.max(this.props.currentPage - this.props.siblingsCount, 1);\n const rightSiblingIndex = Math.min(\n this.props.currentPage + this.props.siblingsCount,\n totalPageCount\n );\n\n /*\n * Do not show dots if there is only one position left\n * after/before the left/right page count.\n */\n const shouldShowLeftDots = leftSiblingIndex > 2;\n const shouldShowRightDots = rightSiblingIndex < totalPageCount - 2;\n\n const firstPageIndex = 1;\n const lastPageIndex = totalPageCount;\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + (2 * this.props.siblingsCount);\n const leftRange = this.range(1, leftItemCount);\n\n paginationRange = [...leftRange, Pagination.DOTS, totalPageCount];\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + (2 * this.props.siblingsCount);\n const rightRange = this.range(\n totalPageCount - rightItemCount + 1,\n totalPageCount\n );\n\n paginationRange = [firstPageIndex, Pagination.DOTS, ...rightRange];\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = this.range(leftSiblingIndex, rightSiblingIndex);\n\n paginationRange = [firstPageIndex, Pagination.DOTS, ...middleRange, Pagination.DOTS, lastPageIndex];\n }\n\n /*\n * Add extra range for large number of pages\n */\n const rightRemainingPages = totalPageCount - (this.props.currentPage + this.props.siblingsCount);\n const leftRemainingPages = this.props.currentPage - this.props.siblingsCount;\n\n if (!this.state.isMobile &&\n this.props.extraPageRangeLimit &&\n rightRemainingPages > this.props.extraPageRangeLimit) {\n const remainderMidPoint = Math.floor((rightRemainingPages) / 2) + this.props.currentPage;\n const rMiddleRange: (string|number)[] = this.range(remainderMidPoint - 1, remainderMidPoint + 1);\n rMiddleRange.push(Pagination.DOTS);\n const lastItemIndex = paginationRange.length - 1;\n paginationRange.splice(lastItemIndex, 0, ...rMiddleRange);\n }\n\n if (!this.state.isMobile &&\n this.props.extraPageRangeLimit &&\n leftRemainingPages > this.props.extraPageRangeLimit) {\n const remainderMidPoint = Math.floor(leftRemainingPages / 2);\n const lMiddleRange: (string|number)[] = this.range(remainderMidPoint - 1, remainderMidPoint + 1);\n lMiddleRange.unshift(Pagination.DOTS);\n paginationRange.splice(1, 0, ...lMiddleRange);\n }\n\n return paginationRange;\n }\n\n /**\n * Creates an array of elements from start value to end value.\n * @param start Start value.\n * @param end End value.\n * @returns Array of elements from start to end value.\n */\n private range(start: number, end: number): number[] {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n }\n}\n\nexport default Pagination;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronDown = function SvgChevronDown(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 8,\n viewBox: \"0 0 12 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 1L6 6L11 1\",\n stroke: \"currentColor\",\n strokeWidth: 1.72854\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronDown);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-down.7aa5319377ac93c7c5191d47d7a9bf3c.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./Spinner.scss\";\nimport { SpinnerProps } from \"./SpinnerProps\";\n\n/**\n * Component which will display a spinner.\n */\nclass Spinner extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n );\n }\n}\n\nexport default Spinner;\n","import { OutputTypes } from \"@iota/iota.js\";\nimport React, { Component, ReactNode } from \"react\";\nimport Pagination from \"../layout/Pagination\";\nimport Spinner from \"../layout/Spinner\";\nimport Output from \"./Output\";\nimport { OutputsProps } from \"./OutputsProps\";\nimport { OutputsState } from \"./OutputsState\";\n\n/**\n * Component which will display outputs.\n */\nclass Outputs extends Component {\n /**\n * Create a new instance of Outputs.\n * @param props The props.\n */\n constructor(props: OutputsProps) {\n super(props);\n\n this.state = {\n currentPage: this.props.currentPage\n };\n }\n\n /**\n * The outputs on current page.\n * @returns The outputs\n */\n private get currentPageOutputs() {\n if (this.props.outputs.length > 0) {\n return this.props.outputs.slice(...this.getPageIndexes());\n }\n return [];\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n if (this.props.onPageChange) {\n this.props.onPageChange(this.state.currentPage, ...this.getPageIndexes());\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    \n
    \n

    {this.props.title}

    \n \n {this.props.outputs.length}\n \n
    \n {this.props.statusBusy && (\n
    \n \n

    \n Loading outputs...\n

    \n
    \n )}\n
    \n\n {this.currentPageOutputs.map((output, idx) => (\n \n ))}\n\n \n this.setState({ currentPage: page },\n () => {\n if (this.props.onPageChange) {\n this.props.onPageChange(this.state.currentPage, ...this.getPageIndexes());\n }\n }\n )}\n />\n
    \n {this.props.outputs.length === 0 && (\n
    \n

    {this.props.title}

    \n {this.props.outputs && (\n
    \n There are no outputs for this address.\n
    \n )}\n
    \n )}\n
    \n );\n }\n\n /**\n * Get first and last item index.\n * @returns The first and last item index on the current page.\n */\n private getPageIndexes() {\n const firstPageIndex = (this.state.currentPage - 1) * this.props.pageSize;\n const lastPageIndex =\n (this.state.currentPage === Math.ceil(this.props.outputs.length / this.props.pageSize))\n ? this.props.outputs.length\n : firstPageIndex + this.props.pageSize;\n return [firstPageIndex, lastPageIndex] as const;\n }\n}\n\nexport default Outputs;\n","import { ALIAS_ADDRESS_TYPE, Bech32Helper, NFT_ADDRESS_TYPE, TransactionHelper } from \"@iota/iota.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../../assets/chevron-left.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { AssociationType, IAssociatedOutput } from \"../../../models/tangle/IAssociatedOutputsResponse\";\nimport { NodeConfigService } from \"../../../services/nodeConfigService\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { Bech32AddressHelper } from \"../../../utils/bech32AddressHelper\";\nimport { NameHelper } from \"../../../utils/nameHelper\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport Bech32Address from \"../../components/tangle/Bech32Address\";\nimport Output from \"../../components/tangle/Output\";\nimport Outputs from \"../../components/tangle/Outputs\";\nimport \"./Address.scss\";\nimport { AddressProps } from \"./AddressProps\";\nimport { AddressState } from \"./AddressState\";\n\n/**\n * Component which will show the address page.\n */\nclass Address extends AsyncComponent, AddressState> {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * The bech32 hrp from the node.\n */\n private readonly _bech32Hrp: string;\n\n /**\n * Create a new instance of Address.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._bech32Hrp = nodeConfigService.getBech32Hrp();\n\n if (!Bech32Helper.matches(this.props.match.params.address, this._bech32Hrp)) {\n this.props.history.push(`/explorer/search/${this.props.match.params.address}`);\n }\n\n this.state = {\n address: { ...Bech32AddressHelper.buildAddress(props.match.params.address, this._bech32Hrp) },\n outputs: [],\n basicOutputs: [],\n nftOutputs: [],\n aliasOutputs: [],\n statusBusyBasic: false,\n statusBusyNft: false,\n statusBusyAlias: false\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n if (this.state.address?.type === NFT_ADDRESS_TYPE && this.state.address.hex) {\n const nft = await this._tangleService.nftDetails(this.state.address.hex);\n this.setState({ nft });\n }\n\n if (this.state.address?.type === ALIAS_ADDRESS_TYPE && this.state.address.hex) {\n const alias = await this._tangleService.aliasDetails(this.state.address.hex);\n this.setState({ alias });\n }\n\n const associatedOutputs = await this._tangleService.getOutputsForAddress(this.props.match.params.address);\n\n if (associatedOutputs.length > 0) {\n const sortedResults = associatedOutputs.sort((a, b) => (\n ((a.association || a.association === 0) && (b.association || b.association === 0))\n ? a.association - b.association\n : -1\n ));\n\n const outputs: IAssociatedOutput[] = [\n /* eslint-disable-next-line unicorn/no-array-reduce */\n ...sortedResults.reduce((outputsMap, output) =>\n (outputsMap.has(output.outputId) ? outputsMap : outputsMap.set(output.outputId, output)),\n new Map()).values()\n ];\n\n const basicOutputs = outputs.filter(output =>\n ((output.association || output.association === 0)\n ? [\n AssociationType.BASIC_OUTPUT,\n AssociationType.BASIC_SENDER,\n AssociationType.BASIC_EXPIRATION_RETURN,\n AssociationType.BASIC_STORAGE_RETURN\n ].includes(output.association)\n : false));\n\n const nftOutputs = outputs.filter(output => (output.association\n ? [\n AssociationType.NFT_OUTPUT,\n AssociationType.NFT_STORAGE_RETURN,\n AssociationType.NFT_EXPIRATION_RETURN,\n AssociationType.NFT_SENDER\n ].includes(output.association)\n : false));\n\n const aliasOutputs = outputs.filter(output => (output.association\n ? [\n AssociationType.ALIAS_STATE_CONTROLLER,\n AssociationType.ALIAS_GOVERNOR,\n AssociationType.ALIAS_ISSUER,\n AssociationType.ALIAS_SENDER,\n AssociationType.FOUNDRY_ALIAS\n ].includes(output.association)\n : false));\n\n this.setState({\n outputs,\n basicOutputs,\n nftOutputs,\n aliasOutputs\n });\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n
    \n
    \n

    {this.state.address?.type\n ? NameHelper.getAddressTypeName(this.state.address.type)\n : \"Address\"}\n

    \n {this.state.address?.bech32 && (\n \n )}\n {this.state.nft && (\n \n )}\n {this.state.alias && (\n \n )}\n
    \n
    \n {this.state.basicOutputs.length > 0 && (\n {\n if (this.state.outputs.length > 0) {\n this.updateOutputDetails(\n \"basicOutputs\",\n \"statusBusyBasic\",\n firstPageIndex,\n lastPageIndex\n ).catch(err => console.error(err));\n }\n }}\n />\n )}\n {this.state.nftOutputs.length > 0 && (\n {\n if (this.state.outputs.length > 0) {\n this.updateOutputDetails(\n \"nftOutputs\",\n \"statusBusyNft\",\n firstPageIndex,\n lastPageIndex\n ).catch(err => console.error(err));\n }\n }}\n />\n )}\n {this.state.aliasOutputs.length > 0 && (\n {\n if (this.state.outputs.length > 0) {\n this.updateOutputDetails(\n \"aliasOutputs\",\n \"statusBusyAlias\",\n firstPageIndex,\n lastPageIndex\n ).catch(err => console.error(err));\n }\n }}\n />\n )}\n
    \n
    \n );\n }\n\n /**\n * Update output details from start to end index.\n * @param outputsKey The key the outputs array to update.\n * @param busyKey The Keyof the status busy boolean variable.\n * @param startIndex The start index of the output.\n * @param endIndex The end index of the output.\n */\n private async updateOutputDetails(\n outputsKey: keyof AddressState,\n busyKey: keyof AddressState,\n startIndex: number,\n endIndex: number) {\n const outputs = this.state[outputsKey] as IAssociatedOutput[];\n if (outputs.length > 0) {\n this.setState(prevState => ({\n ...prevState,\n [busyKey]: true\n }));\n for (let i = startIndex; i < endIndex; i++) {\n const outputResult = await this._tangleService.outputDetails(outputs[i].outputId);\n\n if (outputResult) {\n outputs[i].outputDetails = outputResult;\n this.setState(prevState => ({\n ...prevState,\n [outputsKey]: outputs\n }));\n }\n }\n\n this.setState(prevState => ({\n ...prevState,\n [busyKey]: false\n }));\n }\n }\n}\n\nexport default Address;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgDownload = function SvgDownload(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"-5 -5 24 24\",\n width: 40,\n fill: \"currentColor\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 6.641l1.121-1.12a1 1 0 0 1 1.415 1.413L7.707 9.763a.997.997 0 0 1-1.414 0L3.464 6.934A1 1 0 1 1 4.88 5.52L6 6.641V1a1 1 0 1 1 2 0v5.641zM1 12h12a1 1 0 0 1 0 2H1a1 1 0 0 1 0-2z\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgDownload);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/download.f22c6e0565e6331d115dee17e5e91049.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronRight = function SvgChevronRight(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.48206 6.98708L0.318462 12.1921C0.218831 12.2891 0.139361 12.4052 0.0846907 12.5334C0.0300203 12.6617 0.00124313 12.7997 3.95234e-05 12.9393C-0.00116408 13.079 0.0252297 13.2174 0.0776802 13.3467C0.130131 13.4759 0.207588 13.5933 0.305532 13.692C0.403476 13.7907 0.519946 13.8688 0.648146 13.9217C0.776345 13.9746 0.913707 14.0012 1.05222 14C1.19072 13.9987 1.32761 13.9697 1.45487 13.9146C1.58214 13.8595 1.69725 13.7794 1.79348 13.679L7.69458 7.73051C7.89014 7.53332 8 7.26591 8 6.98708C8 6.70825 7.89014 6.44084 7.69458 6.24365L1.79348 0.295175C1.59674 0.103632 1.33323 -0.00235606 1.05972 3.97504e-05C0.786213 0.00243556 0.524578 0.113023 0.331169 0.307985C0.137761 0.502946 0.0280534 0.766681 0.0256767 1.04239C0.0232999 1.31809 0.128444 1.58371 0.318462 1.78203L5.48206 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronRight);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-right.ee38b69009bb3d676c31944fd31791aa.svg\";","import { Converter } from \"@iota/util.js\";\n\n/**\n * Class to help with downloading.\n */\nexport class DownloadHelper {\n /**\n * Get a filename base on the type.\n * @param id The id of the item.\n * @param type The type of the file.\n * @returns The filename.\n */\n public static filename(id: string, type: string): string {\n return `${id}.${type}`;\n }\n\n /**\n * Create a data url for an object.\n * @param object The object to create the url for.\n * @returns The data url.\n */\n public static createJsonDataUrl(object: unknown): string {\n const b64 = Converter.bytesToBase64(Converter.utf8ToBytes((JSON.stringify(object, undefined, \"\\t\"))));\n return `data:application/json;base64,${b64}`;\n }\n\n /**\n * Create a data url for binary data.\n * @param data The data to create the url for.\n * @returns The data url.\n */\n public static createBinaryDataUrl(data: Uint8Array): string {\n const b64 = Converter.bytesToBase64(data);\n return `data:application/octet;base64,${b64}`;\n }\n\n /**\n * Create a data url for hex data.\n * @param data The data to create the url for.\n * @returns The data url.\n */\n public static createHexDataUrl(data: Uint8Array): string {\n const b64 = Converter.bytesToBase64(Converter.utf8ToBytes(Converter.bytesToHex(data)));\n return `data:plain/text;base64,${b64}`;\n }\n\n /**\n * Create a data url for base64 data.\n * @param data The data to create the url for.\n * @returns The data url.\n */\n public static createBase64DataUrl(data: Uint8Array): string {\n const b64 = Converter.bytesToBase64(Converter.utf8ToBytes(Converter.bytesToBase64(data)));\n return `data:plain/text;base64,${b64}`;\n }\n\n /**\n * Trigger a file download.\n * @param dataUrl The data url to download.\n * @param filename The filename.\n * @returns true if downloaded.\n */\n public static downloadFile(dataUrl: string, filename: string): boolean {\n try {\n const link = document.createElement(\"a\");\n link.href = dataUrl;\n link.download = filename;\n\n link.click();\n link.remove();\n\n return true;\n } catch {\n return false;\n }\n }\n}\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport AsyncComponent from \"../layout/AsyncComponent\";\nimport \"./BlockTangleState.scss\";\nimport { BlockTangleStateProps } from \"./BlockTangleStateProps\";\nimport { BlockTangleStateState } from \"./BlockTangleStateState\";\n\n/**\n * Component which will display a block tangle state.\n */\nclass BlockTangleState extends AsyncComponent {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Create a new instance of Milestone.\n * @param props The props.\n */\n constructor(props: BlockTangleStateProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n\n this.state = {};\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n await this.updateMilestone();\n }\n\n /**\n * The component was updated.\n * @param prevProps The previous properties.\n */\n public async componentDidUpdate(prevProps: BlockTangleStateProps): Promise {\n if (this.props.milestoneIndex !== prevProps.milestoneIndex) {\n await this.updateMilestone();\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n {this.props.status === \"unknown\" && (\"Unknown\")}\n {this.props.status === \"referenced\" &&\n (`Referenced${this.props.milestoneIndex !== undefined && this.props.milestoneIndex > 1\n ? ` by MS ${this.props.milestoneIndex}` : \"\"}`)}\n {this.props.status === \"milestone\" &&\n (`MS${this.props.milestoneIndex !== undefined ? ` ${this.props.milestoneIndex}` : \"\"}`)}\n {this.props.status === \"pending\" && (\"Pending\")}\n\n {this.state.timestamp}\n
    \n );\n }\n\n /**\n * Update the milestone info.\n */\n private async updateMilestone(): Promise {\n if (this.props.milestoneIndex) {\n const result = await this._tangleService.milestoneDetails(this.props.milestoneIndex);\n if (result) {\n this.setState({\n timestamp: result.timestamp\n ? ` at ${FormatHelper.dateShort(result.timestamp)}`\n : undefined\n });\n }\n }\n }\n}\n\nexport default BlockTangleState;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./InclusionState.scss\";\nimport { InclusionStateProps } from \"./InclusionStateProps\";\n\n/**\n * Component which will display the inclusion state.\n */\nclass InclusionState extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n \n {this.props.state === undefined && (\"Not included\")}\n {this.props.state === \"included\" && (\"Included\")}\n {this.props.state === \"noTransaction\" && (\"No Transaction\")}\n {this.props.state === \"conflicting\" && (\"Conflicting\")}\n
    \n {this.props.state === undefined && (\"The block is not yet referenced by a milestone.\")}\n {this.props.state === \"included\" && (\n \"The block is referenced by a milestone, the transaction is included in the ledger.\"\n )}\n {this.props.state === \"noTransaction\" && (\n \"The block is referenced by a milestone, the data is included in the ledger\" +\n \", but there is no value transfer.\"\n )}\n {this.props.state === \"conflicting\" && (\n \"The block has a conflict and will not be included in the ledger.\"\n )}\n
    \n );\n }\n}\n\nexport default InclusionState;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport { ProtocolParamsMilestonOptionProps } from \"./ProtocolParamsMilestonOptionProps\";\nimport { ProtocoParamsMilestoneOptionState } from \"./ProtocolParamsMilestonOptionState\";\n\n/**\n * Component which will display a Protocol parameters milestone option.\n */\nclass ProtocolParamsMilestonOption\n extends Component {\n /**\n * Create a new instance of Protocol params milestone option.\n * @param props The props.\n */\n constructor(props: ProtocolParamsMilestonOptionProps) {\n super(props);\n\n this.state = {\n showDetails: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n this.setState({ showDetails: !this.state.showDetails })}\n >\n\n
    \n \n
    \n

    \n Protocol Params\n

    \n
    \n {this.state.showDetails && (\n
    \n
    \n Target Milestone Index\n
    \n
    \n {this.props.option.targetMilestoneIndex}\n
    \n
    \n Protocol version\n
    \n
    \n {this.props.option.protocolVersion}\n
    \n
    \n Params\n
    \n
    \n {this.props.option.params}\n
    \n
    \n )}\n
    \n );\n }\n}\n\nexport default ProtocolParamsMilestonOption;\n","import { ED25519_ADDRESS_TYPE } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { NodeConfigService } from \"../../../services/nodeConfigService\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport Bech32Address from \"./Bech32Address\";\nimport { MigratedFundProps } from \"./MigratedFundProps\";\nimport { MigratedFundState } from \"./MigratedFundState\";\n\n/**\n * Component which will display a Migrated fund.\n */\nclass MigratedFund extends Component {\n /**\n * The bech32 hrp from the node.\n */\n private readonly _bech32Hrp: string;\n\n /**\n * Create a new instance of Migrated fund.\n * @param props The props.\n */\n constructor(props: MigratedFundProps) {\n super(props);\n\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._bech32Hrp = nodeConfigService.getBech32Hrp();\n\n this.state = {\n formatFull: false,\n showDetails: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n this.setState({ showDetails: !this.state.showDetails })}\n >\n\n
    \n \n
    \n

    \n Migrated Fund {this.props.index}\n

    \n
    \n {this.state.showDetails && (\n
    \n
    \n Tail Transaction Hash\n
    \n
    \n {this.props.fund.tailTransactionHash}\n
    \n
    \n {this.props.fund.address.type === ED25519_ADDRESS_TYPE && (\n \n )}\n
    \n
    \n Deposit\n
    \n
    \n this.setState(\n {\n formatFull: !this.state.formatFull\n }\n )}\n >\n {FormatHelper.getInstance().amount(\n Number(this.props.fund.deposit),\n this.state.formatFull\n )}\n \n
    \n
    \n )}\n
    \n );\n }\n}\n\nexport default MigratedFund;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport MigratedFund from \"./MigratedFund\";\nimport { ReceiptMilestoneOptionProps } from \"./ReceiptMilestoneOptionProps\";\nimport { ReceiptMilestoneOptionState } from \"./ReceiptMilestoneOptionState\";\n\n/**\n * Component which will display a receipt milestone option.\n */\nclass ReceiptMilestoneOption extends Component {\n /**\n * Create a new instance of Receipt milestone option.\n * @param props The props.\n */\n constructor(props: ReceiptMilestoneOptionProps) {\n super(props);\n\n this.state = {\n formatFull: false,\n showReceiptDetails: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n this.setState({ showReceiptDetails: !this.state.showReceiptDetails })}\n >\n\n
    \n \n
    \n

    \n Receipt\n

    \n
    \n {this.state.showReceiptDetails && (\n
    \n
    \n Migrated At\n
    \n
    \n {this.props.option.migratedAt}\n
    \n
    \n Final\n
    \n
    \n {this.props.option.final ? \"Yes\" : \"No\"}\n
    \n {this.props.option.funds.map((fund, idx) => (\n \n ))}\n
    \n Input Transaction Milestone Id\n
    \n
    \n {this.props.option.transaction.input.milestoneId}\n
    \n
    \n Output Transaction Amount to Treasury\n
    \n
    \n this.setState(\n {\n formatFull: !this.state.formatFull\n }\n )}\n >\n {FormatHelper.getInstance().amount(\n Number(this.props.option.transaction.output.amount),\n this.state.formatFull\n )}\n \n
    \n
    \n )}\n
    \n );\n }\n}\n\nexport default ReceiptMilestoneOption;\n","/* eslint-disable max-len */\nimport { RECEIPT_MILESTONE_OPTION_TYPE, PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport BlockButton from \"../layout/BlockButton\";\nimport { ReactComponent as DropdownIcon } from \"./../../../assets/dropdown-arrow.svg\";\nimport { MilestonePayloadProps } from \"./MilestonePayloadProps\";\nimport { MilestonePayloadState } from \"./MilestonePayloadState\";\nimport ProtocolParamsMilestonOption from \"./ProtocolParamsMilestonOption\";\nimport ReceiptMilestoneOption from \"./ReceiptMilestoneOption\";\n\n/**\n * Component which will display a milestone payload.\n */\nclass MilestonePayload extends Component {\n /**\n * Create a new instance of Milestone payload.\n * @param props The props.\n */\n constructor(props: MilestonePayloadProps) {\n super(props);\n\n this.state = {\n showSignatures: false,\n showOptions: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n

    Milestone Payload

    \n
    \n Index\n
    \n
    \n {this.props.payload.index}\n
    \n
    \n Date\n
    \n
    \n {this.props.payload.timestamp && FormatHelper.date(\n this.props.payload.timestamp\n )}\n
    \n
    \n Previous Milestone Id\n
    \n
    \n {this.props.payload.previousMilestoneId}\n
    \n {this.props.payload.parents?.map((parent, idx) => (\n \n
    \n Parent Block {idx + 1}\n
    \n
    \n {parent !== \"0\".repeat(64) && (\n \n \n {parent}\n \n ClipboardHelper.copy(\n parent\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n \n )}\n {parent === \"0\".repeat(64) && (\n Genesis\n )}\n
    \n
    \n ))}\n
    \n Confirmed Merkle Proof\n
    \n
    \n {this.props.payload.inclusionMerkleRoot}\n
    \n
    \n Applied Merkle Proof\n
    \n
    \n {this.props.payload.appliedMerkleRoot}\n
    \n {this.props.payload.metadata && (\n \n
    \n Metadata\n
    \n
    \n {this.props.payload.metadata}\n
    \n
    \n )}\n\n {this.props.payload.options && (\n \n
    \n this.setState({ showOptions: !this.state.showOptions })}\n >\n
    \n \n
    \n

    \n Options\n

    \n
    \n
    \n {this.state.showOptions && (\n
    \n {this.props.payload.options.map((option, idx) => (\n \n { option.type === RECEIPT_MILESTONE_OPTION_TYPE && (\n \n )}\n { option.type === PROTOCOL_PARAMETERS_MILESTONE_OPTION_TYPE && (\n \n )}\n \n ))}\n
    \n )}\n \n )}\n
    \n this.setState({ showSignatures: !this.state.showSignatures })}\n >\n
    \n \n
    \n

    \n Signatures\n

    \n
    \n
    \n {this.state.showSignatures && (\n
    \n {this.props.payload.signatures.map((sig, i) => (\n
    \n
    \n Public Key\n
    \n
    \n {sig.publicKey}\n
    \n
    \n Signature\n
    \n
    \n {sig.signature}\n
    \n
    \n ))}\n
    \n )}\n
    \n );\n }\n}\n\nexport default MilestonePayload;\n","import { Converter } from \"@iota/util.js\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport BlockButton from \"../layout/BlockButton\";\nimport { TaggedDataPayloadProps } from \"./TaggedDataPayloadProps\";\nimport { TaggedDataPayloadState } from \"./TaggedDataPayloadState\";\n\n/**\n * Component which will display a Tagged data payload.\n */\nclass TaggedDataPayload extends Component {\n /**\n * Create a new instance of TaggedDataPayload.\n * @param props The props.\n */\n constructor(props: TaggedDataPayloadProps) {\n super(props);\n\n const utf8Index = props.payload.tag ? Converter.hexToUtf8(props.payload.tag) : \"\";\n const matchHexIndex = props.payload.tag ? props.payload.tag.match(/.{1,2}/g) : \"\";\n const hexIndex = matchHexIndex ? matchHexIndex.join(\" \") : (props.payload.tag ?? \"\");\n\n let hexData;\n let utf8Data;\n let jsonData;\n\n if (props.payload.data) {\n const matchHexData = props.payload.data.match(/.{1,2}/g);\n\n hexData = matchHexData ? matchHexData.join(\" \") : props.payload.data;\n utf8Data = Converter.hexToUtf8(props.payload.data);\n\n try {\n jsonData = JSON.stringify(JSON.parse(utf8Data), undefined, \" \");\n } catch {}\n }\n\n this.state = {\n utf8Index,\n hexIndex,\n indexLengthBytes: props.payload.tag ? props.payload.tag.length / 2 : 0,\n utf8Data,\n hexData,\n jsonData,\n dataLengthBytes: props.payload.data ? props.payload.data.length / 2 : 0\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n

    Tagged Data Payload

    \n
    \n Tag UTF8 [{this.state.indexLengthBytes}]\n ClipboardHelper.copy(\n this.state.utf8Index\n )}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n
    \n {this.state.utf8Index}\n
    \n
    \n Tag Hex [{this.state.indexLengthBytes}]\n ClipboardHelper.copy(\n this.state.hexIndex.replace(/ /g, \"\")\n )}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n
    \n {this.state.hexIndex}\n
    \n {!this.state.jsonData && this.state.utf8Data && (\n \n
    \n Data UTF8 [{this.state.dataLengthBytes}]\n ClipboardHelper.copy(\n this.state.utf8Data\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
    \n
    \n {this.state.utf8Data}\n
    \n
    \n )}\n {this.state.jsonData && (\n \n
    \n Data JSON\n ClipboardHelper.copy(\n this.state.jsonData\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
    \n
    \n {this.state.jsonData}\n
    \n
    \n )}\n {this.state.hexData && (\n \n
    \n Data Hex [{this.state.dataLengthBytes}]\n ClipboardHelper.copy(\n this.state.hexData?.replace(/ /g, \"\")\n )}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n
    \n {this.state.hexData}\n
    \n
    \n )}\n
    \n );\n }\n}\n\nexport default TaggedDataPayload;\n","/* eslint-disable max-len */\nimport { TransactionHelper } from \"@iota/iota.js\";\nimport { Converter } from \"@iota/util.js\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IAssociatedOutput } from \"../../../models/tangle/IAssociatedOutputsResponse\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport Outputs from \"./Outputs\";\nimport { TransactionPayloadProps } from \"./TransactionPayloadProps\";\nimport { TransactionPayloadState } from \"./TransactionPayloadState\";\n\n/**\n * Component which will display a transaction payload.\n */\nclass TransactionPayload extends Component {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Create a new instance of TransactionPayload.\n * @param props The props.\n */\n constructor(props: TransactionPayloadProps) {\n super(props);\n this._tangleService = ServiceFactory.get(\"tangle\");\n\n const inputs = this.props.payload.essence.inputs\n .map((input, idx) => {\n const output: IAssociatedOutput = {\n outputId: TransactionHelper.outputIdFromTransactionData(input.transactionId, input.transactionOutputIndex)\n };\n return output;\n });\n\n const outputs = this.props.payload.essence.outputs\n .map((output, idx) => {\n const transactionId = Converter.bytesToHex(TransactionHelper.getTransactionPayloadHash(this.props.payload), true);\n\n const associatedOutput: IAssociatedOutput = {\n outputId: TransactionHelper.outputIdFromTransactionData(transactionId, idx),\n outputType: output\n };\n return associatedOutput;\n });\n\n this.state = {\n outputs,\n currentOutputsPage: 1,\n outputsPageSize: 20,\n inputs,\n statusInputsBusy: false\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n {this.state.inputs.length > 0 && (\n {\n if (this.state.inputs.length > 0) {\n this.updateOutputDetails(\n firstPageIndex,\n lastPageIndex\n ).catch(err => console.error(err));\n }\n }}\n />\n )}\n {this.state.outputs.length > 0 && (\n \n )}\n
    \n );\n }\n\n /**\n * Update output details from start to end index.\n * @param startIndex The start index of the output.\n * @param endIndex The end index of the output.\n */\n private async updateOutputDetails(\n startIndex: number,\n endIndex: number) {\n const outputs = [...this.state.inputs];\n if (outputs.length > 0) {\n this.setState({ statusInputsBusy: true });\n\n for (let i = startIndex; i < endIndex; i++) {\n const outputResult = await this._tangleService.outputDetails(outputs[i].outputId);\n\n if (outputResult) {\n outputs[i].outputDetails = outputResult;\n this.setState(prevState => ({\n ...prevState,\n inputs: outputs\n }));\n }\n }\n\n this.setState({ statusInputsBusy: false });\n }\n }\n}\n\nexport default TransactionPayload;\n","import { serializeBlock, CONFLICT_REASON_STRINGS, IBlockMetadata, TAGGED_DATA_PAYLOAD_TYPE, MILESTONE_PAYLOAD_TYPE, TRANSACTION_PAYLOAD_TYPE } from \"@iota/iota.js\";\nimport { WriteStream } from \"@iota/util.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronDownIcon } from \"../../../assets/chevron-down.svg\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../../assets/chevron-left.svg\";\nimport { ReactComponent as DownloadIcon } from \"../../../assets/download.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { BlockTangleStatus } from \"../../../models/blockTangleStatus\";\nimport { PluginService } from \"../../../services/pluginService\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { DownloadHelper } from \"../../../utils/downloadHelper\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport BlockButton from \"../../components/layout/BlockButton\";\nimport Spinner from \"../../components/layout/Spinner\";\nimport BlockTangleState from \"../../components/tangle/BlockTangleState\";\nimport InclusionState from \"../../components/tangle/InclusionState\";\nimport MilestonePayload from \"../../components/tangle/MilestonePayload\";\nimport TaggedDataPayload from \"../../components/tangle/TaggedDataPayload\";\nimport TransactionPayload from \"../../components/tangle/TransactionPayload\";\nimport \"./Block.scss\";\nimport { BlockProps } from \"./BlockProps\";\nimport { BlockState } from \"./BlockState\";\n\n/**\n * Component which will show the block page.\n */\nclass Block extends AsyncComponent, BlockState> {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Service for tangle requests.\n */\n private readonly _pluginService: PluginService;\n\n /**\n * Timer to check to state update.\n */\n private _timerId?: NodeJS.Timer;\n\n /**\n * Create a new instance of Block.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n this._pluginService = ServiceFactory.get(\"plugin\");\n\n this.state = {\n dataUrls: {},\n selectedDataUrl: \"json\"\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n const result = await this._tangleService.search({ query: this.props.match.params.blockId });\n\n if (result?.block) {\n const writeStream = new WriteStream();\n serializeBlock(writeStream, result.block);\n const finalBytes = writeStream.finalBytes();\n\n const dataUrls = {\n json: DownloadHelper.createJsonDataUrl(result.block),\n bin: DownloadHelper.createBinaryDataUrl(finalBytes),\n base64: DownloadHelper.createBase64DataUrl(finalBytes),\n hex: DownloadHelper.createHexDataUrl(finalBytes)\n };\n\n this.setState({\n block: result.block,\n dataUrls\n }, async () => {\n await this.updateBlockDetails();\n });\n } else if (result?.unavailable) {\n this.props.history.replace(\"/explorer/unavailable\");\n } else {\n this.props.history.replace(`/explorer/search/${this.props.match.params.blockId}`);\n }\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n if (this._timerId) {\n clearTimeout(this._timerId);\n this._timerId = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n );\n }\n\n /**\n * Update the block details.\n */\n private async updateBlockDetails(): Promise {\n const details = await this._tangleService.blockDetails(this.props.match.params.blockId);\n\n this.setState({\n metadata: details?.metadata,\n conflictReason: this.calculateConflictReason(details?.metadata),\n blockTangleStatus: this.calculateStatus(details?.metadata),\n metadataStatus: details?.unavailable ? \"The node is currently unavailable or is not synced\" : undefined\n });\n\n if (!details?.unavailable &&\n (!details?.metadata?.referencedByMilestoneIndex || !details?.metadata?.milestoneIndex)) {\n this._timerId = setTimeout(async () => {\n await this.updateBlockDetails();\n }, 10000);\n }\n }\n\n /**\n * Calculate the status for the block.\n * @param metadata The metadata to calculate the status from.\n * @returns The block status.\n */\n private calculateStatus(metadata?: IBlockMetadata): BlockTangleStatus {\n let blockTangleStatus: BlockTangleStatus = \"unknown\";\n\n if (metadata) {\n if (metadata.milestoneIndex) {\n blockTangleStatus = \"milestone\";\n } else if (metadata.referencedByMilestoneIndex) {\n blockTangleStatus = \"referenced\";\n } else {\n blockTangleStatus = \"pending\";\n }\n }\n\n return blockTangleStatus;\n }\n\n /**\n * Calculate the conflict reason for the block.\n * @param metadata The metadata to calculate the conflict reason from.\n * @returns The conflict reason.\n */\n private calculateConflictReason(metadata?: IBlockMetadata): string {\n let conflictReason: string = \"\";\n\n if (metadata?.ledgerInclusionState === \"conflicting\") {\n conflictReason = metadata.conflictReason && CONFLICT_REASON_STRINGS[metadata.conflictReason]\n ? CONFLICT_REASON_STRINGS[metadata.conflictReason]\n : \"The reason for the conflict is unknown\";\n }\n\n return conflictReason;\n }\n\n /**\n * Download poi for the block.\n */\n private async dowloadPoi(): Promise {\n try {\n const response = await this._pluginService.fetchPoi(this.props.match.params.blockId);\n if (response) {\n const url = DownloadHelper.createJsonDataUrl(response);\n const filename = DownloadHelper.filename(\n this.props.match.params.blockId, \"json\");\n\n DownloadHelper.downloadFile(url, filename);\n }\n } catch (err) {\n console.log(err);\n }\n }\n}\n\nexport default Block;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgBannerCurve = function SvgBannerCurve(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n style: {\n isolation: \"isolate\"\n },\n viewBox: \"0 0 34 140\",\n width: \"34px\",\n height: \"140px\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 34 140 L 0.02 140 L 0.02 140 C 0.007 138.835 0 137.668 0 136.5 L 0 136.5 C 0 87.365 11.818 40.968 32.765 0 L 34 0 L 34 140 Z \",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgBannerCurve);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/banner-curve.abe8a24f8be162bfc9ff259fbfdaa7d8.svg\";","import { blockIdFromMilestonePayload } from \"@iota/iota.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../../assets/chevron-left.svg\";\nimport { ReactComponent as ChevronRightIcon } from \"../../../assets/chevron-right.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport BlockButton from \"../../components/layout/BlockButton\";\nimport \"./Milestone.scss\";\nimport { MilestoneProps } from \"./MilestoneProps\";\nimport { MilestoneState } from \"./MilestoneState\";\n\n/**\n * Component which will show the milestone page.\n */\nclass Milestone extends AsyncComponent, MilestoneState> {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Create a new instance of Milestone.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n\n this.state = {\n nextIndex: -1,\n previousIndex: -1,\n hasPrevious: false,\n hasNext: false\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n await this.loadIndex(this.props.match.params.milestoneIndex, false);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n
    \n

    Milestone

    \n
    \n Index\n
    \n
    \n {this.state.milestone?.index}\n
    \n
    \n Block Id\n
    \n
    \n \n \n {this.state.blockId}\n \n\n \n ClipboardHelper.copy(\n this.state.blockId\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
    \n
    \n Date\n
    \n
    \n {this.state.milestone?.timestamp && FormatHelper.date(\n this.state.milestone?.timestamp\n )}\n
    \n {(this.state.hasPrevious || this.state.hasNext) && (\n \n
    \n
    \n \n this.loadIndex(this.state.previousIndex.toString(), true)}\n className=\"card--action margin-r-t\"\n >\n \n Previous Milestone\n \n \n this.loadIndex(this.state.nextIndex.toString(), true)}\n className=\"card--action margin-r-t\"\n >\n Next Milestone\n \n \n
    \n
    \n )}\n
    \n
    \n
    \n );\n }\n\n /**\n * Load the milestone with the given index.\n * @param index The index to load.\n * @param updateUrl Update the url.\n */\n private async loadIndex(index: string, updateUrl: boolean): Promise {\n const result = await this._tangleService.milestoneDetails(Number.parseInt(index, 10));\n\n if (result) {\n try {\n const tangleService = ServiceFactory.get(\"tangle\");\n const info = await tangleService.info();\n\n this.setState({\n blockId: blockIdFromMilestonePayload(info.protocol.version, result)\n });\n } catch (error) {\n if (error instanceof Error) {\n console.log(error.message);\n }\n }\n\n this.setState({\n milestone: result\n }, async () => this.checkForAdjacentMilestones());\n\n if (updateUrl) {\n window.history.replaceState(\n undefined,\n window.document.title,\n `/explorer/milestone/${index}`);\n }\n } else {\n this.props.history.replace(`/explorer/search/${index}`);\n }\n }\n\n /**\n * Check for the previous and next milestones.\n */\n private async checkForAdjacentMilestones(): Promise {\n if (this.state.milestone) {\n const nextIndex = this.state.milestone.index + 1;\n const previousIndex = this.state.milestone.index - 1;\n let hasNext = false;\n let hasPrevious = false;\n\n if (previousIndex > 0) {\n const resultPrevious = await this._tangleService.milestoneDetails(previousIndex);\n if (resultPrevious) {\n hasPrevious = true;\n }\n }\n\n const resultNext = await this._tangleService.milestoneDetails(nextIndex);\n if (resultNext) {\n hasNext = true;\n }\n\n this.setState({\n previousIndex,\n nextIndex,\n hasPrevious,\n hasNext\n });\n\n if (!hasNext) {\n setTimeout(async () => this.checkForAdjacentMilestones(), 5000);\n }\n }\n }\n}\n\nexport default Milestone;\n","import { TransactionHelper } from \"@iota/iota.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../../assets/chevron-left.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport Output from \"../../components/tangle/Output\";\nimport \"./Block.scss\";\nimport { OutputRouteProps } from \"./OutputRouteProps\";\nimport { OutputRouteState } from \"./OutputRouteState\";\n\n/**\n * Component which will show the Output page.\n */\nclass OutputRoute extends AsyncComponent, OutputRouteState> {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Timer to check to state update.\n */\n private _timerId?: NodeJS.Timer;\n\n /**\n * Create a new instance of Output route.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n this.state = {};\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n const outputResponse = await this._tangleService.outputDetails(this.props.match.params.outputId);\n\n if (outputResponse) {\n this.setState({\n outputResponse\n }, async () => {\n await this.updateOutputDetails();\n });\n } else {\n this.props.history.replace(`/explorer/search/${this.props.match.params.outputId}`);\n }\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n if (this._timerId) {\n clearTimeout(this._timerId);\n this._timerId = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n
    \n
    \n

    \n Output\n

    \n
    \n {this.state.outputResponse && (\n \n )}\n\n
    \n
    \n
    \n );\n }\n\n /**\n * Update the block details.\n */\n private async updateOutputDetails(): Promise {\n const outputResponse = await this._tangleService.outputDetails(this.props.match.params.outputId);\n\n if (outputResponse) {\n this.setState({\n outputResponse\n });\n }\n this._timerId = setTimeout(async () => {\n await this.updateOutputDetails();\n }, 10000);\n }\n}\n\nexport default OutputRoute;\n","import React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../../assets/chevron-left.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport Outputs from \"../../components/tangle/Outputs\";\nimport \"./OutputsRoute.scss\";\nimport { OutputsRouteProps } from \"./OutputsRouteProps\";\nimport { OutputsRouteState } from \"./OutputsRouteState\";\n\n/**\n * Component which will show the outputs page.\n */\nclass OutputsRoute extends AsyncComponent, OutputsRouteState> {\n /**\n * Service for tangle requests.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * Create a new instance of Outputs.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._tangleService = ServiceFactory.get(\"tangle\");\n\n this.state = {\n statusBusy: true,\n currentPage: 1,\n pageSize: 10,\n outputs: []\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n const associatedOutputs = await this._tangleService.getOutputsByTag(this.props.match.params.tag);\n\n if (associatedOutputs.length > 0) {\n const sortedResults = associatedOutputs.sort((a, b) => (\n ((a.association || a.association === 0) && (b.association || b.association === 0))\n ? a.association - b.association\n : -1\n ));\n const outputs = [\n /* eslint-disable-next-line unicorn/no-array-reduce */\n ...sortedResults.reduce((outputsMap, output) =>\n (outputsMap.has(output.outputId) ? outputsMap : outputsMap.set(output.outputId, output)),\n new Map()).values()\n ];\n\n this.setState({\n outputs\n });\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n {this.state.outputs.length > 0 && (\n {\n if (this.state.outputs.length > 0) {\n this.updateOutputDetails(firstPageIndex, lastPageIndex)\n .catch(err => console.error(err));\n }\n }}\n />\n )}\n
    \n
    \n );\n }\n\n /**\n * Update output details from start to end index.\n * @param startIndex The start index of the output.\n * @param endIndex The end index of the output.\n */\n private async updateOutputDetails(startIndex: number, endIndex: number) {\n if (this.state.outputs && this.state.outputs.length > 0) {\n this.setState({\n statusBusy: true\n });\n const updatingPage = this.state.currentPage;\n for (let i = startIndex; i < endIndex; i++) {\n if (updatingPage !== this.state.currentPage) {\n break;\n }\n const associatedOutput = this.state.outputs[i];\n const outputResult = await this._tangleService.outputDetails(associatedOutput.outputId);\n if (outputResult) {\n const outputs = [...this.state.outputs];\n outputs[i].outputDetails = outputResult;\n\n this.setState({\n outputs\n });\n }\n }\n\n this.setState({\n statusBusy: false\n });\n }\n }\n}\n\nexport default OutputsRoute;\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgDbIcon = function SvgDbIcon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 10.667C22.6274 10.667 28 8.87613 28 6.66699C28 4.45785 22.6274 2.66699 16 2.66699C9.37258 2.66699 4 4.45785 4 6.66699C4 8.87613 9.37258 10.667 16 10.667Z\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 16C28 18.2133 22.6667 20 16 20C9.33333 20 4 18.2133 4 16\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 6.66699V25.3337C4 27.547 9.33333 29.3337 16 29.3337C22.6667 29.3337 28 27.547 28 25.3337V6.66699\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgDbIcon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/db-icon.0d2bef5e4b057ba24d916a7d190c914b.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMemory = function SvgMemory(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7 1C7 0.447715 7.44772 0 8 0C8.55229 0 9 0.447715 9 1V4H12V1C12 0.447715 12.4477 0 13 0C13.5523 0 14 0.447715 14 1V4H17V1C17 0.447715 17.4477 0 18 0C18.5523 0 19 0.447715 19 1V4.12602C20.4056 4.4878 21.5122 5.59439 21.874 7H25C25.5523 7 26 7.44772 26 8C26 8.55229 25.5523 9 25 9H22V12H25C25.5523 12 26 12.4477 26 13C26 13.5523 25.5523 14 25 14H22V17H25C25.5523 17 26 17.4477 26 18C26 18.5523 25.5523 19 25 19H21.874C21.5122 20.4056 20.4056 21.5122 19 21.874V25C19 25.5523 18.5523 26 18 26C17.4477 26 17 25.5523 17 25V22H14V25C14 25.5523 13.5523 26 13 26C12.4477 26 12 25.5523 12 25V22H9V25C9 25.5523 8.55229 26 8 26C7.44772 26 7 25.5523 7 25V21.874C5.59439 21.5122 4.4878 20.4056 4.12602 19H1C0.447715 19 0 18.5523 0 18C0 17.4477 0.447715 17 1 17H4V14H1C0.447715 14 0 13.5523 0 13C0 12.4477 0.447715 12 1 12H4V9H1C0.447715 9 0 8.55229 0 8C0 7.44772 0.447715 7 1 7H4.12602C4.4878 5.59439 5.59439 4.4878 7 4.12602V1ZM11 9C9.89543 9 9 9.89543 9 11V15C9 16.1046 9.89543 17 11 17H15C16.1046 17 17 16.1046 17 15V11C17 9.89543 16.1046 9 15 9H11Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMemory);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/memory.85492509c678bfd1d551db28872ea914.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPruning = function SvgPruning(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9999 12.8115L9.67454 15.5795C10.3612 16.5407 10.7088 17.703 10.6624 18.8833C10.6161 20.0637 10.1785 21.1951 9.41854 22.0995C8.50834 23.1815 7.20609 23.8582 5.79753 23.9812C4.38897 24.1042 2.98915 23.6634 1.90521 22.7555C1.36875 22.3064 0.926138 21.7558 0.602702 21.1354C0.279265 20.515 0.0813554 19.8368 0.0202999 19.1398C-0.0407557 18.4428 0.0362414 17.7406 0.246884 17.0734C0.457528 16.4062 0.797681 15.7871 1.24788 15.2515C2.0087 14.3467 3.04825 13.72 4.20357 13.4695C5.35889 13.219 6.56467 13.359 7.63188 13.8675L10.2585 10.7395L3.07454 2.18885C2.96202 2.05495 2.87699 1.90019 2.82433 1.7334C2.77166 1.56662 2.7524 1.39109 2.76763 1.21685C2.78286 1.04261 2.83229 0.873089 2.9131 0.717973C2.9939 0.562856 3.10449 0.42519 3.23854 0.31285C3.37266 0.200246 3.52764 0.115165 3.69464 0.0624652C3.86165 0.0097655 4.03739 -0.00952042 4.21185 0.00570882C4.3863 0.0209381 4.55605 0.0703841 4.71139 0.151223C4.86674 0.232062 5.00463 0.342711 5.11721 0.47685L11.9999 8.66885L18.8812 0.47685C18.9938 0.342517 19.1318 0.231703 19.2872 0.150745C19.4427 0.0697879 19.6126 0.0202768 19.7872 0.00504451C19.9618 -0.0101878 20.1377 0.00915768 20.3049 0.0619742C20.472 0.114791 20.6271 0.200042 20.7612 0.31285C20.8953 0.42519 21.0059 0.562856 21.0867 0.717973C21.1675 0.873089 21.2169 1.04261 21.2321 1.21685C21.2474 1.39109 21.2281 1.56662 21.1754 1.7334C21.1228 1.90019 21.0377 2.05495 20.9252 2.18885L13.7399 10.7395L16.3665 13.8662C17.4338 13.3577 18.6395 13.2177 19.7948 13.4682C20.9502 13.7186 21.9897 14.3454 22.7505 15.2502C23.2007 15.7858 23.5409 16.4049 23.7515 17.0721C23.9622 17.7393 24.0392 18.4415 23.9781 19.1385C23.9171 19.8355 23.7192 20.5136 23.3957 21.134C23.0723 21.7545 22.6297 22.305 22.0932 22.7542C21.0093 23.6621 19.6094 24.1029 18.2009 23.9799C16.7923 23.8569 15.4901 23.1802 14.5799 22.0982C13.8199 21.1938 13.3823 20.0624 13.336 18.882C13.2896 17.7016 13.6372 16.5394 14.3239 15.5782L11.9999 12.8115ZM3.61988 20.7142C4.16456 21.1353 4.85102 21.3295 5.53559 21.256C6.22017 21.1825 6.84979 20.8471 7.29269 20.32C7.73559 19.7928 7.95744 19.1148 7.91181 18.4278C7.86618 17.7408 7.55661 17.0981 7.04788 16.6342C6.50587 16.18 5.80581 15.9595 5.10137 16.021C4.39692 16.0825 3.74566 16.421 3.29054 16.9622C2.34388 18.0889 2.49054 19.7689 3.61988 20.7142ZM20.3799 20.7142C20.648 20.4895 20.8692 20.2142 21.0308 19.9039C21.1924 19.5937 21.2912 19.2547 21.3217 18.9062C21.3522 18.5577 21.3136 18.2066 21.2083 17.8731C21.103 17.5395 20.9329 17.23 20.7079 16.9622C20.2528 16.4214 19.6018 16.0832 18.8977 16.0217C18.1936 15.9602 17.4938 16.1805 16.9519 16.6342C16.6837 16.8588 16.4624 17.134 16.3007 17.4442C16.1389 17.7544 16.0399 18.0934 16.0093 18.4419C15.9788 18.7904 16.0172 19.1415 16.1224 19.4751C16.2276 19.8087 16.3976 20.1183 16.6225 20.3862C17.5692 21.5129 19.2519 21.6595 20.3799 20.7142Z\",\n fill: \"#FF8B5C\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPruning);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pruning.eef4ee1560b2a068145ffad5bbbf6250.svg\";","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEyeClosed = function SvgEyeClosed(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.7055,11.46295q-1.43475,-3.0227 -3.41479,-4.93035l-1.38442,1.38442c1.12892,1.07886 2.11227,2.49021 2.96257,4.24794c-2.26383,4.68547 -5.47726,6.9112 -9.86887,6.9112q-1.97731,0 -3.64253,-0.60895l-1.50006,1.50006q2.3128,1.06797 5.14259,1.06797q7.84449,0 11.70551,-8.171a1.64046,1.64046 0 0 0 0,-1.40129zm-1.72971,-8.72444l-1.15994,-1.1613a0.21768,0.21768 0 0 0 -0.30801,0l-2.9759,2.97454q-2.4611,-1.25708 -5.53196,-1.25708q-7.84449,0 -11.70551,8.171a1.64073,1.64073 0 0 0 0,1.40129q1.5425,3.24881 3.71409,5.20816l-2.8793,2.87849a0.21768,0.21768 0 0 0 0,0.30774l1.16157,1.16157a0.21768,0.21768 0 0 0 0.30774,0l19.37722,-19.3764a0.21768,0.21768 0 0 0 0,-0.30801zm-19.84468,9.42645c2.26655,-4.68547 5.47999,-6.9112 9.86887,-6.9112c1.484,0 2.83332,0.25468 4.05747,0.77248l-1.91282,1.91282a4.78886,4.78886 0 0 0 -6.47939,6.47939l-2.26981,2.26981c-1.25626,-1.10879 -2.3392,-2.61102 -3.26432,-4.5233zm6.71257,0a3.05045,3.05045 0 0 1 3.97802,-2.90298l-3.83354,3.83354a3.04746,3.04746 0 0 1 -0.14448,-0.93056z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.89115,15.21242c-0.09414,0 -0.18693,-0.00435 -0.2789,-0.01279l-1.4372,1.4372a4.79131,4.79131 0 0 0 6.18798,-6.18798l-1.4372,1.4372c0.00843,0.09197 0.01279,0.18475 0.01279,0.2789a3.04583,3.04583 0 0 1 -3.04746,3.04746z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEyeClosed);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye-closed.6e736a4ac2ce0ee321ba3b737b3cc912.svg\";","import { ArrayHelper } from \"@iota/crypto.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport \"./Graph.scss\";\nimport { GraphProps } from \"./GraphProps\";\nimport { GraphState } from \"./GraphState\";\n\n/**\n * Graph.\n */\nclass Graph extends AsyncComponent {\n /**\n * The graph element.\n */\n private _graphElement: SVGSVGElement | null;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Graph.\n * @param props The props.\n */\n constructor(props: GraphProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n\n this.state = {};\n }\n\n /**\n * The component did mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: GraphProps): void {\n let dataEqual = this.props.series.length === prevProps.series.length;\n if (dataEqual) {\n for (let i = 0; i < this.props.series.length; i++) {\n dataEqual = ArrayHelper.equal(this.props.series[i].values, prevProps.series[i].values);\n if (!dataEqual) {\n break;\n }\n }\n }\n if (!dataEqual) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    {this.props.caption}
    \n
    \n {this.props.series.length > 1 && this.props.series.map((s, idx) => (\n \n
    \n \n {s.label}\n \n \n ))}\n
    \n
    \n \n this.setElement(r)}\n >\n {this.state.paths?.map((b, idx) => (\n \n ))}\n {this.state.text?.map((t, idx) => (\n \n {t.content}\n \n ))}\n \n \n
    \n );\n }\n\n /**\n * Set the graph element.\n * @param element The element.\n */\n private setElement(element: SVGSVGElement | null): void {\n setTimeout(() => {\n if (!this._graphElement && element) {\n this._graphElement = element;\n this.setState(this.calculateGraph());\n }\n }, 100);\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphElement) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n paths: {\n path: string;\n className: string;\n }[];\n text: {\n x: number;\n y: number;\n content: string;\n }[];\n } {\n const paths = [];\n const text = [];\n const axis = [];\n\n if (this._graphElement && this.props.series.length > 0) {\n const axisLabelHeight = 20;\n\n try {\n const graphWidth = this._graphElement.width.baseVal.value;\n const graphHeight = this._graphElement.height.baseVal.value - axisLabelHeight;\n\n let seriesMaxLength = this.props.seriesMaxLength;\n if (graphWidth < 500) {\n seriesMaxLength /= 2;\n }\n\n const actualSeriesValues: number[][] =\n this.props.series.map(s => s.values.slice(-seriesMaxLength));\n\n let maxY = 0;\n const maxItems = Math.min(seriesMaxLength, actualSeriesValues[0].length);\n\n for (let i = 0; i < actualSeriesValues.length; i++) {\n for (let j = 0; j < actualSeriesValues[i].length; j++) {\n if (actualSeriesValues[i][j] > maxY) {\n maxY = actualSeriesValues[i][j];\n }\n }\n }\n\n if (maxY === 0) {\n maxY = 4;\n }\n\n const yUsage = 0.9;\n const axisLabelWidth = 30;\n const marginLeft = 10;\n const marginRight = 10;\n const axisLineCount = 4;\n const decimalPlaces = maxY <= 2 ? 2 : 0;\n\n const yScale = (graphHeight * yUsage) / maxY;\n const barWidth = (graphWidth - axisLabelWidth - marginLeft - marginRight) /\n (seriesMaxLength * this.props.series.length);\n const axisSpacing = graphHeight / (axisLineCount - 1);\n\n for (let i = 0; i < axisLineCount; i++) {\n axis.push({\n path: `M ${axisLabelWidth} ${graphHeight - (i * axisSpacing)\n } L ${graphWidth} ${graphHeight - (i * axisSpacing)}`,\n className: \"axis-color\"\n });\n text.push({\n x: axisLabelWidth - 5,\n y: graphHeight - (i * axisSpacing) + 2,\n anchor: \"end\",\n content: (i * ((maxY / yUsage) / (axisLineCount - 1))).toFixed(decimalPlaces)\n });\n }\n\n if (this.props.timeInterval && this.props.endTime) {\n let numTimeEntries = this.props.timeMarkers ?? Math.floor(graphWidth / 100);\n if (graphWidth < 300) {\n numTimeEntries = 3;\n }\n const startTime = this.props.endTime - (maxItems * this.props.timeInterval);\n const timePerInterval = (seriesMaxLength * this.props.timeInterval) / numTimeEntries;\n for (let i = 0; i <= numTimeEntries; i++) {\n const dt = new Date(startTime + (i * timePerInterval));\n text.push({\n x: marginLeft + (axisLabelWidth / 2) +\n (((graphWidth - marginLeft - marginRight) / numTimeEntries) * i),\n y: graphHeight + axisLabelHeight,\n anchor: \"middle\",\n content: `${dt.getHours().toString()\n .padStart(2, \"0\")}:${dt.getMinutes().toString()\n .padStart(2, \"0\")}.${dt.getSeconds().toString()\n .padStart(2, \"0\")}`\n });\n }\n }\n\n for (let i = 0; i < maxItems; i++) {\n for (let j = 0; j < actualSeriesValues.length; j++) {\n const val = actualSeriesValues[j][i];\n paths.push({\n path: this.calculatePath(\n graphHeight,\n barWidth,\n axisLabelWidth + marginLeft,\n j + (i * actualSeriesValues.length),\n val * yScale),\n className: this.props.series[j].className\n });\n }\n }\n } catch {}\n }\n\n return {\n text,\n paths: [...axis, ...paths.reverse()]\n };\n }\n\n /**\n * Calculate the path for the bar.\n * @param graphHeight The height of the graph.\n * @param barWidth The width of bars.\n * @param marginLeft The left margin for axis.\n * @param index The bar index.\n * @param scaledVal The end value.\n * @returns The path.\n */\n private calculatePath(\n graphHeight: number, barWidth: number, marginLeft: number,\n index: number, scaledVal: number): string {\n const spacing = 2;\n let pathSegments = [`M ${marginLeft + (index * barWidth) + spacing} ${graphHeight}`];\n\n pathSegments = [\n ...pathSegments,\n ...(scaledVal <= 0 ? [\n `L ${marginLeft + ((index * barWidth) + spacing)} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ] : [\n `L ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal}`,\n `C ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ])\n ];\n\n return pathSegments.join(\" \");\n }\n}\n\nexport default Graph;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEye = function SvgEye(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.69284,11.29876c-2.57667,-5.42785 -6.47156,-8.15945 -11.69285,-8.15945c-5.224,0 -9.11619,2.73159 -11.69285,8.16217a1.63896,1.63896 0 0 0 0,1.39977c2.57667,5.42785 6.47156,8.15945 11.69285,8.15945c5.224,0 9.11619,-2.73159 11.69285,-8.16217c0.20929,-0.44032 0.20929,-0.9513 0,-1.39977zm-11.69285,7.60498c-4.38414,0 -7.5941,-2.22332 -9.8582,-6.90373c2.2641,-4.68041 5.47406,-6.90373 9.8582,-6.90373c4.38414,0 7.5941,2.22332 9.8582,6.90373c-2.26138,4.68041 -5.47134,6.90373 -9.8582,6.90373zm-0.10872,-11.68742c-2.6419,0 -4.78369,2.14179 -4.78369,4.78369s2.14179,4.78369 4.78369,4.78369s4.78369,-2.14179 4.78369,-4.78369s-2.14179,-4.78369 -4.78369,-4.78369zm0,7.82785c-1.68245,0 -3.04417,-1.36172 -3.04417,-3.04417s1.36172,-3.04417 3.04417,-3.04417s3.04417,1.36172 3.04417,3.04417s-1.36172,3.04417 -3.04417,3.04417z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEye);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye.8f64de3bdaad08c216b1df66468d4990.svg\";","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthWarning = function SvgHealthWarning(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#FF9800\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#FF9800\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthWarning);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-warning.47f112ef4093a598a33b1b3689b53140.svg\";","import { IPeer } from \"@iota/iota.js\";\n\n/**\n * Class to help with processing of data.\n */\nexport class DataHelper {\n /**\n * Format the address for the peer.\n * @param peer The peer.\n * @returns The formatted address.\n */\n public static formatPeerAddress(peer: IPeer): string | undefined {\n let address;\n\n if (peer.multiAddresses) {\n for (let i = 0; i < peer.multiAddresses.length && !address; i++) {\n address = this.extractAddress(peer.multiAddresses[i]);\n }\n }\n\n return address;\n }\n\n /**\n * Extract an an address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractAddress(address: string): string | undefined {\n let addr = DataHelper.extractIp4(address);\n\n if (!addr) {\n addr = DataHelper.extractIp6(address);\n }\n\n if (!addr) {\n addr = DataHelper.extractDns(address);\n }\n\n return addr;\n }\n\n /**\n * Extract and format an IPv4 address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractIp4(address: string): string | undefined {\n const parts = /\\/ip4\\/((?:\\d{1,3}.){3}\\d{1,3})\\/tcp\\/(\\d*)/.exec(address);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Extract and format an IPv6 address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractIp6(address: string): string | undefined {\n const parts = /\\/ip6\\/(.*?)\\/tcp\\/(\\d*)/.exec(address);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Extract and format a dns address.\n * @param addr The address to extract.\n * @returns The formatted address.\n */\n public static extractDns(addr: string): string | undefined {\n const parts = /\\/dns\\/(.*?)\\/tcp\\/(\\d*)/.exec(addr);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Sort a list of peers.\n * @param peers The peers to sort.\n * @returns The sorted peers.\n */\n public static sortPeers(peers: T[]): T[] {\n return peers.sort((a, b) => {\n if (a.health !== b.health) {\n return b.health - a.health;\n }\n\n return (a.alias ?? a.id).localeCompare(b.alias ?? b.id);\n });\n }\n\n /**\n * Calculate the health of the peer.\n * @param peer The peer to calculate the health of.\n * @param confirmedMilestoneIndex Confirmed milestone index of the node.\n * @param latestMilestoneIndex Latest milestone index of the node.\n * @returns The health.\n */\n public static calculateHealth(peer: IPeer, confirmedMilestoneIndex: number, latestMilestoneIndex: number): number {\n let health = 0;\n\n if (peer.connected) {\n health = (DataHelper.calculateIsSynced(peer, latestMilestoneIndex) &&\n peer.gossip?.heartbeat &&\n peer.gossip?.heartbeat?.prunedMilestoneIndex < confirmedMilestoneIndex) ? 2 : 1;\n }\n\n return health;\n }\n\n /**\n * Calculate the sync status of the peer.\n * @param peer The peer to calculate the sync status of.\n * @param latestMilestoneIndex Latest milestone index of the node.\n * @returns The sync status.\n */\n public static calculateIsSynced(peer: IPeer, latestMilestoneIndex: number): boolean {\n let isSynced = false;\n\n if (peer.gossip?.heartbeat) {\n const latestKnownMilestoneIndex = (latestMilestoneIndex < peer.gossip.heartbeat.latestMilestoneIndex)\n ? peer.gossip.heartbeat.latestMilestoneIndex : latestMilestoneIndex;\n\n if (peer.gossip.heartbeat.solidMilestoneIndex >= (latestKnownMilestoneIndex - 2)) {\n isSynced = true;\n }\n }\n\n return isSynced;\n }\n}\n","import { IPeer } from \"@iota/iota.js\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ReactComponent as EyeClosedIcon } from \"../../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport { ReactComponent as HealthWarningIcon } from \"../../../assets/health-warning.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { ISyncStatus } from \"../../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { SettingsService } from \"../../../services/settingsService\";\nimport { DataHelper } from \"../../../utils/dataHelper\";\nimport \"./PeersSummaryPanel.scss\";\nimport { PeersSummaryState } from \"./PeersSummaryState\";\n\n/**\n * Display a list of the peers.\n */\nclass PeersSummaryPanel extends Component {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer subscription id.\n */\n private _peerSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of PeersSummaryPanel.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._peerSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetric,\n data => {\n this.handleData(data);\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const cmi = data.cmi;\n const lmi = data.lmi;\n\n if (cmi && cmi !== this.state.cmi) {\n this.setState({ cmi });\n }\n\n if (lmi && lmi !== this.state.lmi) {\n this.setState({ lmi });\n }\n }\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n if (this._peerSubscription) {\n this._metricsService.unsubscribe(this._peerSubscription);\n this._peerSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n

    Peers

    \n this.toggleBlindMode()}\n className=\"peers-summary--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
    \n {!this.state.peers && (\n

    There are no peers.

    \n )}\n {this.state.peers?.map((p, idx) => (\n \n
    \n {p.health === 0 && }\n {p.health === 1 && }\n {p.health === 2 && }\n
    \n
    \n
    \n {this.state.blindMode && (\"*\".repeat((p.alias ?? p.id).length))}\n {!this.state.blindMode && (p.alias ?? p.id)}\n
    \n {p.address && (\n
    \n {this.state.blindMode ? \"*\".repeat(p.address.length) : p.address}\n
    \n )}\n
    \n \n ))}\n
    \n );\n }\n\n /**\n * Handle the peer data.\n * @param data The data to handle.\n */\n private handleData(data: IPeer[]): void {\n let sortedPeers;\n\n if (data) {\n sortedPeers = DataHelper.sortPeers(data.map(p => {\n const cmi = this.state.cmi ?? 0;\n const lmi = this.state.lmi ?? 0;\n\n return {\n id: p.id,\n alias: p.alias,\n health: DataHelper.calculateHealth(p, cmi, lmi),\n address: DataHelper.formatPeerAddress(p)\n };\n }));\n }\n\n this.setState({\n peers: sortedPeers\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default PeersSummaryPanel;\n","import React, { ReactNode } from \"react\";\nimport { ReactComponent as BannerCurve } from \"../../assets/banner-curve.svg\";\nimport { ReactComponent as DbIcon } from \"../../assets/db-icon.svg\";\nimport { ReactComponent as MemoryIcon } from \"../../assets/memory.svg\";\nimport { ReactComponent as MilestoneIcon } from \"../../assets/milestone.svg\";\nimport { ReactComponent as PruningIcon } from \"../../assets/pruning.svg\";\nimport { ReactComponent as UptimeIcon } from \"../../assets/uptime.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IBpsMetrics } from \"../../models/websocket/IBpsMetrics\";\nimport { IDBSizeMetric } from \"../../models/websocket/IDBSizeMetric\";\nimport { INodeStatus } from \"../../models/websocket/INodeStatus\";\nimport { IPublicNodeStatus } from \"../../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { NodeConfigService } from \"../../services/nodeConfigService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { BrandHelper } from \"../../utils/brandHelper\";\nimport { FormatHelper } from \"../../utils/formatHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Graph from \"../components/layout/Graph\";\nimport InfoPanel from \"../components/layout/InfoPanel\";\nimport PeersSummaryPanel from \"../components/tangle/PeersSummaryPanel\";\nimport \"./Home.scss\";\nimport { HomeState } from \"./HomeState\";\n\n/**\n * Home panel.\n */\nclass Home extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The status subscription id.\n */\n private _nodeStatusSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The bps metrics subscription id.\n */\n private _bpsMetricsSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeSubscription?: string;\n\n /**\n * The network id.\n */\n private readonly _networkId?: string;\n\n /**\n * Create a new instance of Home.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._themeService = ServiceFactory.get(\"theme\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._networkId = nodeConfigService.getNetworkId();\n\n this.state = {\n nodeName: \"\",\n nodeId: \"\",\n displayVersion: \"\",\n displayLatestVersion: \"\",\n lmi: \"-\",\n cmi: \"-\",\n pruningIndex: \"-\",\n memory: \"-\",\n dbLedgerSizeFormatted: \"-\",\n dbTangleSizeFormatted: \"-\",\n uptime: \"-\",\n lastReceivedBpsTime: 0,\n bpsIncoming: [],\n bpsOutgoing: [],\n bannerSrc: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n this.setState({\n bannerSrc: await BrandHelper.getBanner(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"home\", async (theme: string) => {\n this.setState({\n bannerSrc: await BrandHelper.getBanner(theme)\n });\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n const pruningIndex = data.pruningIndex.toString();\n\n if (pruningIndex !== this.state.pruningIndex) {\n this.setState({ pruningIndex });\n }\n }\n });\n\n this._nodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeStatus,\n data => {\n if (data) {\n const nodeName = data.nodeAlias ?? BrandHelper.getConfiguration().name;\n const nodeId = data.nodeId || \"No node Id.\";\n const uptime = FormatHelper.duration(data.uptime);\n const memory = FormatHelper.iSize(data.memUsage);\n\n if (nodeName !== this.state.nodeName) {\n this.setState({ nodeName });\n }\n\n if (nodeId !== this.state.nodeId) {\n this.setState({ nodeId });\n }\n\n if (uptime !== this.state.uptime) {\n this.setState({ uptime });\n }\n\n if (memory !== this.state.memory) {\n this.setState({ memory });\n }\n\n this.checkVersion(data.version, data.latestVersion);\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const lmi = data.lmi ? data.lmi.toString() : \"\";\n const cmi = data.cmi ? data.cmi.toString() : \"\";\n\n if (lmi !== this.state.lmi) {\n this.setState({ lmi });\n }\n\n if (cmi !== this.state.cmi) {\n this.setState({ cmi });\n }\n }\n });\n\n this._bpsMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.BPSMetrics,\n undefined,\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n\n const bpsIncoming = nonNull.map(m => m.incoming);\n const bpsOutgoing = nonNull.map(m => m.outgoing);\n\n this.setState({ bpsIncoming, bpsOutgoing, lastReceivedBpsTime: Date.now() });\n }\n );\n\n this._databaseSizeSubscription = this._metricsService.subscribe(\n WebSocketTopic.DBSizeMetric,\n data => {\n if (data) {\n const dbLedgerSizeFormatted = FormatHelper.size(data.utxo);\n\n if (dbLedgerSizeFormatted !== this.state.dbLedgerSizeFormatted) {\n this.setState({ dbLedgerSizeFormatted });\n }\n\n const dbTangleSizeFormatted = FormatHelper.size(data.tangle);\n\n if (dbTangleSizeFormatted !== this.state.dbTangleSizeFormatted) {\n this.setState({ dbTangleSizeFormatted });\n }\n }\n });\n\n EventAggregator.subscribe(\"settings.blindMode\", \"home\", blindMode => {\n this.setState({ blindMode });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"theme\", \"home\");\n\n if (this._nodeStatusSubscription) {\n this._metricsService.unsubscribe(this._nodeStatusSubscription);\n this._nodeStatusSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._bpsMetricsSubscription) {\n this._metricsService.unsubscribe(this._bpsMetricsSubscription);\n this._bpsMetricsSubscription = undefined;\n }\n\n if (this._databaseSizeSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeSubscription);\n this._databaseSizeSubscription = undefined;\n }\n\n EventAggregator.unsubscribe(\"settings.blindMode\", \"home\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n

    {this.state.blindMode ? \"**********\" : this.state.nodeName}

    \n {this.state.nodeId && (\n

    \n {this.state.blindMode ? \"*********\" : this.state.nodeId}\n

    \n )}\n
    \n

    \n {this._networkId}\n

    \n

    \n {this.state.displayVersion}{this.state.displayLatestVersion}\n

    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"orange\"\n />\n
    \n
    \n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
    \n
    \n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"green\"\n />\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n\n /**\n * Check to see if a new version is available.\n * @param currentVersion The current version.\n * @param latestVersion The latest resion.\n */\n private checkVersion(currentVersion: string, latestVersion: string): void {\n if (this.state.version !== currentVersion ||\n this.state.latestVersion !== latestVersion) {\n const comparison = this.compareVersions(currentVersion, latestVersion);\n\n this.setState({\n version: currentVersion,\n latestVersion,\n displayVersion: currentVersion\n });\n\n if (comparison < 0) {\n this.setState({ displayLatestVersion: ` - a new version ${latestVersion} is available.` });\n }\n }\n }\n\n /**\n * Compare two versions.\n * @param first The first version.\n * @param second The second versions.\n * @returns 0 if the same, 1 if a > b or -1 if a < b.\n */\n private compareVersions(first: string, second: string): number {\n const partsFirst = first.split(\".\");\n const partsSecond = second.split(\".\");\n\n if (partsFirst.length === 3 && partsSecond.length === 3) {\n for (let i = 0; i < 3; i++) {\n const na = Number.parseInt(partsFirst[i], 10);\n const nb = Number.parseInt(partsSecond[i], 10);\n if (na > nb) {\n return 1;\n }\n if (nb > na) {\n return -1;\n }\n\n if (i === 2) {\n let firstAlphabet = 96;\n let secondAlphabet = 96;\n const firstIndex = partsFirst[i].indexOf(\"-\");\n if (firstIndex > 0) {\n firstAlphabet = partsFirst[i].codePointAt(firstIndex + 1) ?? Number.NaN;\n }\n const secondIndex = partsSecond[i].indexOf(\"-\");\n if (secondIndex > 0) {\n secondAlphabet = partsSecond[i].codePointAt(secondIndex + 1) ?? Number.NaN;\n }\n\n return firstAlphabet - secondAlphabet;\n }\n }\n }\n\n return 0;\n }\n}\n\nexport default Home;\n","import React, { ReactNode } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { AuthService } from \"../../services/authService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Login.scss\";\nimport { LoginState } from \"./LoginState\";\n\n/**\n * Login panel.\n */\nclass Login extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of Login.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n user: \"\",\n password: \"\",\n isBusy: false,\n error: false,\n redirect: this._authService.isLoggedIn() ? \"/\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n if (this.state.redirect.length > 0) {\n return ;\n }\n return (\n
    \n
    \n

    Login

    \n
    \n
    \n

    Please enter your credentials to unlock the full dashboard.

    \n
    \n User\n
    \n
    \n this.setState({ user: e.target.value })}\n autoFocus={true}\n />\n
    \n
    \n Password\n
    \n
    \n this.setState({ password: e.target.value })}\n onKeyDown={e => {\n if (e.key === \"Enter\" &&\n this.state.password.trim().length > 0 &&\n this.state.user.trim().length > 0) {\n this.login();\n }\n }}\n />\n
    \n
    \n
    \n this.login()}\n >\n Login\n \n {this.state.isBusy && (\n \n )}\n {this.state.error && (\n

    Your login attempt failed, please try again.

    \n )}\n
    \n
    \n
    \n
    \n
    \n );\n }\n\n /**\n * Try the login.\n */\n private login(): void {\n this.setState({\n isBusy: true,\n error: false\n }, async () => {\n const success = await this._authService.login(this.state.user, this.state.password);\n\n this.setState({\n isBusy: false,\n error: !success\n });\n });\n }\n}\n\nexport default Login;\n","import { IPeer } from \"@iota/iota.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../assets/chevron-left.svg\";\nimport { ReactComponent as ConfirmationIcon } from \"../../assets/confirmation.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ReactComponent as MilestoneIcon } from \"../../assets/milestone.svg\";\nimport { ReactComponent as PruningIcon } from \"../../assets/pruning.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { ISyncStatus } from \"../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ClipboardHelper } from \"../../utils/clipboardHelper\";\nimport { DataHelper } from \"../../utils/dataHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport BlockButton from \"../components/layout/BlockButton\";\nimport Graph from \"../components/layout/Graph\";\nimport HealthIndicator from \"../components/layout/HealthIndicator\";\nimport InfoPanel from \"../components/layout/InfoPanel\";\nimport \"./Peer.scss\";\nimport { PeerRouteProps } from \"./PeerRouteProps\";\nimport { PeerState } from \"./PeerState\";\n\n/**\n * Peer panel.\n */\nclass Peer extends AsyncComponent, PeerState> {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peers subscription id.\n */\n private _peersSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n address: \"\",\n isConnected: false,\n isSynced: false,\n hasPeers: false,\n latestMilestoneIndex: \"-\",\n latestSolidMilestoneIndex: \"-\",\n pruningIndex: \"-\",\n syncedPeers: \"-\",\n connectedPeers: \"-\",\n newBlocksDiff: [],\n sentBlocksDiff: [],\n relation: \"-\",\n lastUpdateTime: 0,\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peersSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetric,\n undefined,\n allData => {\n let alias;\n let address: string = \"\";\n let isConnected = false;\n let isSynced = false;\n let hasPeers = false;\n let latestMilestoneIndex = \"-\";\n let latestSolidMilestoneIndex = \"-\";\n let pruningIndex = \"-\";\n let syncedPeers = \"-\";\n let connectedPeers = \"-\";\n const newBlocksTotal = [];\n const sentBlocksTotal = [];\n const newBlocksDiff = [];\n const sentBlocksDiff = [];\n let gossipMetrics;\n let relation = \"-\";\n\n for (const allDataPeers of allData) {\n if (allDataPeers) {\n const peer = allDataPeers.find(p => p.id === this.props.match.params.id);\n const lmi = this.state.nodeLmi ?? 0;\n\n if (peer) {\n alias = peer.alias;\n address = DataHelper.formatPeerAddress(peer) ?? \"\";\n isConnected = peer.connected;\n isSynced = isConnected && DataHelper.calculateIsSynced(peer, lmi);\n gossipMetrics = peer.gossip?.metrics;\n relation = peer.relation;\n\n if (peer.gossip?.heartbeat) {\n newBlocksTotal.push(peer.gossip.metrics.newBlocks);\n sentBlocksTotal.push(peer.gossip.metrics.sentBlocks);\n\n if (isConnected) {\n hasPeers = peer.gossip.heartbeat.connectedPeers > 0;\n latestMilestoneIndex = peer.gossip.heartbeat.latestMilestoneIndex.toString();\n latestSolidMilestoneIndex = peer.gossip.heartbeat.solidMilestoneIndex.toString();\n pruningIndex = peer.gossip.heartbeat.prunedMilestoneIndex.toString();\n syncedPeers = peer.gossip.heartbeat.syncedPeers.toString();\n connectedPeers = peer.gossip.heartbeat.connectedPeers.toString();\n }\n }\n }\n }\n }\n\n for (let i = 1; i < newBlocksTotal.length; i++) {\n newBlocksDiff.push(\n Math.max(\n newBlocksTotal[i] - newBlocksTotal[i - 1]\n , 0)\n );\n }\n for (let i = 1; i < sentBlocksTotal.length; i++) {\n sentBlocksDiff.push(\n Math.max(\n sentBlocksTotal[i] - sentBlocksTotal[i - 1]\n , 0)\n );\n }\n\n this.setState({\n alias,\n address,\n isConnected,\n isSynced,\n hasPeers,\n latestMilestoneIndex,\n latestSolidMilestoneIndex,\n pruningIndex,\n syncedPeers,\n connectedPeers,\n newBlocksDiff,\n sentBlocksDiff,\n gossipMetrics,\n relation,\n lastUpdateTime: Date.now()\n });\n }\n );\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const cmi = data.cmi;\n const lmi = data.lmi;\n\n if (cmi && cmi !== this.state.nodeCmi) {\n this.setState({ nodeCmi: cmi });\n }\n\n if (lmi && lmi !== this.state.nodeLmi) {\n this.setState({ nodeLmi: lmi });\n }\n }\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peersSubscription) {\n this._metricsService.unsubscribe(this._peersSubscription);\n this._peersSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    \n \n \n

    Back to Peers

    \n \n this.toggleBlindMode()}\n className=\"peer--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
    \n\n
    \n
    \n
    \n {this.state.alias && (\n \n

    {this.state.blindMode\n ? \"*\".repeat(this.state.alias.length) : this.state.alias}\n

    \n \n

    {this.state.blindMode\n ? \"*\".repeat(this.props.match.params.id.length)\n : this.props.match.params.id}\n

    \n
    \n ClipboardHelper.copy(this.props.match.params.id)}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n
    \n
    \n )}\n {!this.state.alias && (\n \n

    {\n this.state.blindMode ?\n \"*\".repeat(this.props.match.params.id.length) :\n this.props.match.params.id\n }\n

    \n
    \n ClipboardHelper.copy(this.props.match.params.id)}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n
    \n )}\n \n

    {this.state.blindMode\n ? \"*\".repeat(this.state.address.length) : this.state.address}\n

    \n {this.state.address.length > 0 && (\n
    \n {\n const parts = this.state.address.split(\":\");\n if (parts.length === 2) {\n ClipboardHelper.copy(`/ip4/${parts[0]}/tcp/${parts[1]}`);\n } else {\n ClipboardHelper.copy(this.state.address);\n }\n }}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
    \n )}\n
    \n

    \n Relation: \n {`${this.state.relation.slice(0, 1).toUpperCase()}${this.state.relation.slice(1)}`}\n

    \n {this.state.nodeCmi &&\n Number(this.state.pruningIndex) > this.state.nodeCmi && (\n

    \n Warning:  History of peer not sufficient to sync from.\n Consider using a newer snapshot if all peers have the same status.\n

    \n )}\n
    \n
    \n \n \n \n
    \n
    \n
    \n\n
    \n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"orange\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
    \n\n
    \n \n\n
    \n
    \n

    Known Blocks

    \n
    \n {this.state.gossipMetrics?.knownBlocks ?? \"-\"}\n
    \n
    \n
    \n

    New Blocks

    \n
    \n {this.state.gossipMetrics?.newBlocks ?? \"-\"}\n
    \n
    \n
    \n

    Received Blocks

    \n
    \n {this.state.gossipMetrics?.receivedBlocks ?? \"-\"}\n
    \n
    \n
    \n

    Sent Blocks

    \n
    \n {this.state.gossipMetrics?.sentBlocks ?? \"-\"}\n
    \n
    \n
    \n

    Received Block Requests

    \n
    \n {this.state.gossipMetrics?.receivedBlockRequests ?? \"-\"}\n
    \n
    \n
    \n

    Sent Block Requests

    \n
    \n {this.state.gossipMetrics?.sentBlockRequests ?? \"-\"}\n
    \n
    \n\n\n
    \n

    Received Heartbeats

    \n
    \n {this.state.gossipMetrics?.receivedHeartbeats ?? \"-\"}\n
    \n
    \n
    \n

    Sent Heartbeats

    \n
    \n {this.state.gossipMetrics?.sentHeartbeats ?? \"-\"}\n
    \n
    \n
    \n

    Received Milestone Requests

    \n
    \n {this.state.gossipMetrics?.receivedMilestoneRequests ?? \"-\"}\n
    \n
    \n
    \n

    Sent Milestone Requests

    \n
    \n {this.state.gossipMetrics?.sentMilestoneRequests ?? \"-\"}\n
    \n
    \n
    \n

    Dropped Packets

    \n
    \n {this.state.gossipMetrics?.droppedPackets ?? \"-\"}\n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peer);\n","import React, { Component, ReactNode } from \"react\";\nimport \"./Dialog.scss\";\nimport { DialogProps } from \"./DialogProps\";\n\n/**\n * Component which will display a dialog.\n */\nclass Dialog extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n
    \n
    \n
    \n
    \n

    {this.props.title}

    \n
    \n
    \n {this.props.children}\n
    \n
    \n {this.props.actions}\n
    \n
    \n
    \n \n );\n }\n}\n\nexport default Dialog;\n","import { IPeer } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronRightIcon } from \"../../assets/chevron-right.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../assets/health-good.svg\";\nimport { ReactComponent as HealthWarningIcon } from \"../../assets/health-warning.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { ISyncStatus } from \"../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { DataHelper } from \"../../utils/dataHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Dialog from \"../components/layout/Dialog\";\nimport Graph from \"../components/layout/Graph\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Peers.scss\";\nimport { PeersState } from \"./PeersState\";\n\n/**\n * Peers panel.\n */\nclass Peers extends AsyncComponent {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peers subscription id.\n */\n private _peersSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n peers: [],\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peersSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetric,\n undefined,\n allData => {\n const peers: {\n [id: string]: {\n id: string;\n alias?: string;\n address?: string;\n originalAddress?: string;\n health: number;\n relation: string;\n newBlocksTotal: number[];\n sentBlocksTotal: number[];\n newBlocksDiff: number[];\n sentBlocksDiff: number[];\n lastUpdateTime: number;\n };\n } = {};\n\n if (allData.length > 0) {\n // Only track data for the peers that appear in the most recent list.\n const finalPeerIds = new Set(allData[allData.length - 1].map(p => p.id));\n\n for (const allDataPeers of allData) {\n if (allDataPeers) {\n for (const peer of allDataPeers) {\n if (finalPeerIds.has(peer.id)) {\n const address = DataHelper.formatPeerAddress(peer);\n const cmi = this.state.cmi ?? 0;\n const lmi = this.state.lmi ?? 0;\n const health = DataHelper.calculateHealth(peer, cmi, lmi);\n\n if (!peers[peer.id]) {\n peers[peer.id] = {\n id: peer.id,\n address: \"\",\n health: 0,\n relation: peer.relation,\n newBlocksTotal: [],\n sentBlocksTotal: [],\n newBlocksDiff: [],\n sentBlocksDiff: [],\n lastUpdateTime: 0\n };\n }\n peers[peer.id].id = peer.id;\n peers[peer.id].alias = peer.alias;\n peers[peer.id].address = address;\n peers[peer.id].health = health;\n peers[peer.id].relation = peer.relation;\n peers[peer.id].lastUpdateTime = Date.now();\n if (peer.multiAddresses?.length) {\n peers[peer.id].originalAddress = peer.multiAddresses[0];\n }\n\n if (peer.gossip) {\n peers[peer.id].newBlocksTotal.push(peer.gossip.metrics.newBlocks);\n peers[peer.id].sentBlocksTotal.push(peer.gossip.metrics.sentBlocks);\n }\n\n peers[peer.id].newBlocksDiff = [];\n for (let i = 1; i < peers[peer.id].newBlocksTotal.length; i++) {\n peers[peer.id].newBlocksDiff.push(\n Math.max(\n peers[peer.id].newBlocksTotal[i] -\n peers[peer.id].newBlocksTotal[i - 1]\n , 0)\n );\n }\n peers[peer.id].sentBlocksDiff = [];\n for (let i = 1; i < peers[peer.id].sentBlocksTotal.length; i++) {\n peers[peer.id].sentBlocksDiff.push(\n Math.max(\n peers[peer.id].sentBlocksTotal[i] -\n peers[peer.id].sentBlocksTotal[i - 1]\n , 0)\n );\n }\n }\n }\n }\n }\n }\n\n this.setState({\n peers: DataHelper.sortPeers(Object.values(peers))\n });\n }\n );\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const cmi = data.cmi;\n const lmi = data.lmi;\n\n if (cmi && cmi !== this.state.cmi) {\n this.setState({ cmi });\n }\n\n if (lmi && lmi !== this.state.lmi) {\n this.setState({ lmi });\n }\n }\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peersSubscription) {\n this._metricsService.unsubscribe(this._peersSubscription);\n this._peersSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    \n

    Peers

    \n
    \n this.toggleBlindMode()}\n className=\"peers--icon-button\"\n >\n {this.state.blindMode ? : }\n \n\n this.setState({\n dialogType: \"add\",\n dialogIsEdit: true,\n dialogPeerId: \"\",\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Add Peer\n \n
    \n
    \n
    \n {this.state.peers.length === 0 && (\n

    There are no peers.

    \n )}\n {this.state.peers.map((p, idx) => (\n
    \n
    \n
    \n \n {p.health === 0 && }\n {p.health === 1 && }\n {p.health === 2 && }\n \n
    \n \n {this.state.blindMode && (\"*\".repeat((p.alias ?? p.id).length))}\n {!this.state.blindMode && (p.alias ?? p.id)}\n \n {this.state.blindMode\n ? \"*\".repeat(p.address?.length ?? 10) : p.address}\n \n
    \n
    \n \n
    \n

    \n Relation: {`${p.relation\n .slice(0, 1).toUpperCase()}${p.relation.slice(1)}`}\n

    \n {p.relation !== \"known\" && p.originalAddress && (\n this.setState({\n dialogType: \"promote\",\n dialogIsEdit: true,\n dialogPeerAddress: p.originalAddress ?? \"\",\n dialogPeerAlias: \"\",\n dialogPeerId: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Promote to Known\n \n )}\n {p.relation === \"known\" && (\n this.setState({\n dialogType: \"edit\",\n dialogIsEdit: true,\n dialogPeerAddress: p.originalAddress ?? \"\",\n dialogPeerAlias: p.alias ?? \"\",\n dialogPeerId: p.id,\n dialogPeerIdOriginal: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Edit\n \n )}\n this.setState({\n dialogType: \"delete\",\n dialogIsEdit: false,\n dialogPeerId: p.id,\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Delete\n \n \n More details\n \n \n
    \n
    \n
    \n ))}\n
    \n {this.state.dialogType && (\n \n (this.state.dialogIsEdit ? this.peerConfigure() : this.peerDelete())}\n key={0}\n disabled={this.state.dialogBusy || (\n this.state.dialogIsEdit &&\n (this.state.dialogPeerAddress.trim().length === 0 ||\n this.state.dialogPeerId?.trim().length === 0)\n )}\n >\n {this.state.dialogIsEdit ? \"OK\" : \"Yes\"}\n ,\n this.setState({\n dialogPeerId: undefined,\n dialogPeerIdOriginal: undefined,\n dialogType: undefined\n })}\n key={1}\n disabled={this.state.dialogBusy}\n >\n {this.state.dialogIsEdit ? \"Cancel\" : \"No\"}\n \n ]}\n >\n {this.state.dialogType === \"delete\" && (\n

    Are you sure you want to delete the peer?

    \n )}\n {this.state.dialogIsEdit && (\n \n

    Please enter the details of the peer to {this.state.dialogType}.

    \n
    \n Address\n
    \n
    \n this.setState({ dialogPeerAddress: e.target.value })}\n />\n
    \n
    \n Id\n
    \n
    \n this.setState({ dialogPeerId: e.target.value })}\n />\n
    \n
    \n Alias\n
    \n
    \n this.setState({ dialogPeerAlias: e.target.value })}\n />\n
    \n
    \n )}\n {this.state.dialogBusy && }\n

    \n {this.state.dialogStatus}\n

    \n \n )}\n
    \n
    \n );\n }\n\n /**\n * Add a new peer.\n */\n private peerConfigure(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: this.state.dialogType === \"add\"\n ? \"Adding peer, please wait...\" : \"Promoting peer, please wait...\"\n }, async () => {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n if (this.state.dialogType === \"edit\" && this.state.dialogPeerIdOriginal) {\n await tangleService.peerDelete(this.state.dialogPeerIdOriginal);\n }\n let addr = this.state.dialogPeerAddress;\n if (!addr.endsWith(\"/\")) {\n addr += \"/\";\n }\n addr += `p2p/${this.state.dialogPeerId}`;\n await tangleService.peerAdd(addr, this.state.dialogPeerAlias);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogPeerId: undefined,\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to ${this.state.dialogType} peer: ${error.message}`\n });\n }\n }\n });\n }\n\n /**\n * Delete the specified peer.\n */\n private peerDelete(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: \"Deleting peer, please wait...\"\n }, async () => {\n if (this.state.dialogPeerId) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n await tangleService.peerDelete(this.state.dialogPeerId);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogPeerId: undefined,\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to delete peer: ${error.message}`\n });\n }\n }\n }\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peers);\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./TabPanel.scss\";\nimport { TabPanelProps } from \"./TabPanelProps\";\nimport { TabPanelState } from \"./TabPanelState\";\n\n/**\n * Tab panel.\n */\nclass TabPanel extends Component {\n /**\n * Create a new instance of TabPanel.\n * @param props The props.\n */\n constructor(props: TabPanelProps) {\n super(props);\n\n this.state = {\n activeTab: props.activeTab.toLowerCase()\n };\n }\n\n /**\n * The component updated.\n * @param prevProps The previous props.\n */\n public componentDidUpdate(prevProps: TabPanelProps): void {\n if (this.props.activeTab.toLowerCase() !== prevProps.activeTab.toLowerCase()) {\n this.setState({ activeTab: this.props.activeTab.toLowerCase() });\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n {this.props.tabs.map(l => (\n this.setState(\n { activeTab: l.toLowerCase() },\n () => {\n if (this.props.onTabChanged) {\n this.props.onTabChanged(this.state.activeTab);\n }\n })}\n >\n
    {l}
    \n
    \n \n ))}\n
    \n {this.props.children?.flat().map((c, idx) => (\n \n {React.isValidElement(c) && c.props[\"data-label\"] &&\n c.props[\"data-label\"].toLowerCase() === this.state.activeTab && c}\n \n ))}\n
    \n );\n }\n}\n\nexport default TabPanel;\n","/**\n * Fetch from an endpoint.\n */\nexport class FetchHelper {\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async json(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"application/json\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${error.message}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async text(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"text/plain\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${res.statusText}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Join params onto command.\n * @param params The params to add.\n * @returns The joined parameters.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static urlParams(params: { [id: string]: any }): string {\n const urlParams = [];\n for (const key in params) {\n if (params[key] !== null && params[key] !== undefined) {\n urlParams.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key] as string)}`);\n }\n }\n return urlParams.length > 0 ? `?${urlParams.join(\"&\")}` : \"\";\n }\n}\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IParticipationEventInfo } from \"../../../models/plugins/participation/IParticipationEventInfo\";\nimport { PluginService } from \"../../../services/pluginService\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { FetchHelper } from \"../../../utils/fetchHelper\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport Dialog from \"../../components/layout/Dialog\";\nimport Spinner from \"../../components/layout/Spinner\";\nimport \"./Participation.scss\";\nimport { IParticipationEventAnswer } from \"./../../../models/plugins/participation/IParticipationEventAnswer\";\nimport { IParticipationEventQuestion } from \"./../../../models/plugins/participation/IParticipationEventQuestion\";\nimport { ParticipationState } from \"./ParticipationState\";\n\n/**\n * Participation panel.\n */\nclass Participation extends AsyncComponent {\n /**\n * The title of the plugin.\n */\n private static readonly PLUGIN_TITLE = \"Participation\";\n\n /**\n * The description of the plugin.\n */\n private static readonly PLUGIN_DESCRIPTION = \"Manage on-tangle ballots and staking events tracked by the node.\";\n\n /**\n * Is the participation plugin available.\n */\n private static _isAvailable: boolean = false;\n\n /**\n * Service for plugin requests.\n */\n private readonly _pluginService: PluginService;\n\n /**\n * Create a new instance of Participation.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._pluginService = ServiceFactory.get(\"plugin\");\n\n this.state = {\n events: {},\n eventIds: [],\n eventInfo: \"\"\n };\n }\n\n /**\n * Is the plugin available.\n */\n public static async initPlugin(): Promise {\n Participation._isAvailable = false;\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const routes = await tangleService.routes();\n if (routes.routes.includes(\"participation/v1\")) {\n Participation._isAvailable = true;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the plugin details if its availabe.\n * @returns The plugin details if available.\n */\n public static pluginDetails(): {\n title: string;\n description: string;\n settings: ReactNode;\n } | undefined {\n if (Participation._isAvailable) {\n return {\n title: Participation.PLUGIN_TITLE,\n description: Participation.PLUGIN_DESCRIPTION,\n settings: \n };\n }\n }\n\n /**\n * The component did mount.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n await this.fetchEvents();\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n * @param prevState The previous state.\n */\n public async componentDidUpdate(prevProps: unknown, prevState: ParticipationState): Promise {\n if (this.state.eventIds !== prevState.eventIds) {\n const difference = this.state.eventIds.filter(e => !prevState.eventIds.includes(e));\n for (const id of difference) {\n await this.fetchEventInfo(id);\n await this.fetchEventStatus(id);\n }\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n
    \n this.setState({\n dialogType: \"add\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Add Event\n \n
    \n
    \n {this.state.eventIds.length === 0 && (\n

    There are no events.

    \n )}\n {this.state.eventIds.map((e, idx) => {\n const eventInfo = this.state.events[e];\n return (\n
    \n
    \n
    \n
    \n

    ID

    {e}
    \n
    \n
    \n

    Name

    \n
    \n {eventInfo?.name}\n
    \n
    \n
    \n
    \n
    \n

    Milestone index commence

    \n
    \n {eventInfo?.milestoneIndexCommence}\n
    \n
    \n
    \n

    Milestone index start

    \n
    \n {eventInfo?.milestoneIndexStart}\n
    \n
    \n
    \n

    Milestone index end

    \n
    \n {eventInfo?.milestoneIndexEnd}\n
    \n
    \n
    \n

    Type

    \n
    \n {eventInfo?.payload.type === 0 ? \"Ballot\" : \"Staking\"}\n
    \n
    \n
    \n

    Status

    \n
    \n {eventInfo?.status?.status\n .slice(0, 1).toUpperCase()}{eventInfo?.status?.status.slice(1)}\n
    \n
    \n
    \n\n
    \n this.setState({\n dialogType: \"details\",\n dialogStatus: \"\",\n dialogBusy: false,\n dialogDetailsEvent: this.state.events[e]\n })}\n >\n More details\n \n this.setState({\n dialogType: \"delete\",\n dialogStatus: \"\",\n dialogBusy: false,\n deleteId: e\n })}\n >\n Delete\n \n
    \n
    \n
    \n );\n })}\n
    \n {this.state.dialogType && (\n {\n if (this.state.dialogType === \"add\") {\n await this.submitEvent();\n } else if (this.state.deleteId) {\n await this.eventDelete(this.state.deleteId);\n }\n }}\n key={0}\n disabled={this.state.dialogBusy || (\n this.state.dialogType === \"add\" &&\n (!this.state.eventInfo ||\n this.state.eventInfo.trim().length === 0 ||\n !this.validateJsonOrUrl(this.state?.eventInfo))\n )}\n >\n {this.state.dialogType === \"add\" ? \"OK\" : \"Yes\"}\n ,\n this.setState({\n dialogType: undefined,\n deleteId: undefined,\n dialogDetailsEvent: undefined\n })}\n key={1}\n disabled={this.state.dialogBusy}\n >\n {(this.state.dialogType === \"add\" ||\n this.state.dialogType === \"details\") ? \"Cancel\" : \"No\"}\n \n ]}\n >\n {this.state.dialogType === \"delete\" && (\n

    \n {`Are you sure you want to delete the event \n ${(this.state.deleteId)\n ? this.state.events[this.state.deleteId].name : \"\"}?`}\n

    \n )}\n {(this.state.dialogType === \"details\" && this.state.dialogDetailsEvent) && (\n
    \n
    \n

    Milestone index

    \n
    \n {this.state.dialogDetailsEvent.status?.milestoneIndex}\n
    \n
    \n
    \n

    Status

    \n
    \n {this.state.dialogDetailsEvent.status?.status\n .slice(0, 1).toUpperCase()}\n {this.state.dialogDetailsEvent.status?.status.slice(1)}\n
    \n
    \n {/* Ballot */}\n {this.state.dialogDetailsEvent.payload.type === 0 && (\n
    \n {this.state.dialogDetailsEvent.payload.questions\n ?.map((q: IParticipationEventQuestion, idx: number) => (\n
    \n
    \n
    \n

    Question

    \n
    \n {q.text}\n
    \n
    \n
    \n {q.answers.map((a: IParticipationEventAnswer, idy) => (\n
    \n
    \n

    Answer

    \n
    \n {a.text}\n
    \n
    \n
    \n

    current

    \n
    \n {(this.state.dialogDetailsEvent?.status?.questions)\n ? this.state.dialogDetailsEvent.status\n .questions[idx].answers[idy].current : \"\" }\n
    \n
    \n
    \n

    accumulated

    \n
    \n {(this.state.dialogDetailsEvent?.status?.questions)\n ? this.state.dialogDetailsEvent.status\n .questions[idx].answers[idy].accumulated : \"\"}\n
    \n
    \n
    \n ))}\n
    \n ))}\n
    \n )}\n {/* Staking */}\n {this.state.dialogDetailsEvent.payload.type === 1 && (\n
    \n
    \n

    Symbol

    \n
    \n {this.state.dialogDetailsEvent.status?.staking?.symbol}\n
    \n
    \n
    \n

    Staked

    \n
    \n {this.state.dialogDetailsEvent.status?.staking?.staked}\n
    \n
    \n
    \n

    Rewarded

    \n
    \n {this.state.dialogDetailsEvent.status?.staking?.rewarded}\n
    \n
    \n
    \n )}\n
    \n )}\n {this.state.dialogType === \"add\" && (\n \n

    Please enter the details of the event to {this.state.dialogType}.

    \n\n
    \n JSON Configuration or URL\n
    \n
    \n this.setState({ eventInfo: e.target.value })}\n />\n {this.state.eventInfo && !this.validateJsonOrUrl(this.state.eventInfo) && (\n Not a valid JSON or URL\n )}\n
    \n
    \n )}\n {this.state.dialogBusy && }\n

    \n {this.state.dialogStatus}\n

    \n \n )}\n
    \n
    \n );\n }\n\n /**\n * Get Participation Events.\n */\n private async fetchEvents(): Promise {\n try {\n const response = await this._pluginService.fetchParticipationEvents();\n\n if (response?.eventIds) {\n this.setState({\n eventIds: response.eventIds\n });\n } else {\n console.log(response?.error);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the event information as a JSON payload.\n * @param id Event id\n */\n private async fetchEventInfo(id: string): Promise {\n try {\n const response = await this._pluginService.fetchParticipationEventInfo(id);\n\n if (response && !response?.error) {\n this.setState(prevState => ({\n events: {\n ...prevState.events,\n [id]: response\n }\n }));\n } else {\n console.log(response?.error);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the event status info as a JSON payload.\n * @param id Event id\n */\n private async fetchEventStatus(id: string): Promise {\n try {\n const response = await this._pluginService.fetchParticipationEventStatus(id);\n\n if (!response?.error) {\n if (this.state.events[id]) {\n this.setState(prevState => ({\n ...prevState,\n events: {\n ...prevState.events,\n [id]: {\n ...prevState.events[id],\n status: response\n }\n }\n }));\n }\n } else {\n console.log(response.error);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Submit event to be added.\n */\n private async submitEvent(): Promise {\n if (this.state.eventInfo) {\n try {\n await this.eventAdd(JSON.parse(this.state.eventInfo) as IParticipationEventInfo);\n } catch {\n try {\n const url = new URL(this.state.eventInfo);\n const config = await this.fetchEventJsonConfig(url);\n\n if (config) {\n await this.eventAdd(config);\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to add event: ${error.message}`\n });\n }\n }\n }\n }\n }\n\n /**\n * Add new Event.\n * @param eventInfo JSON string that contains the event info that is to be added.\n */\n private async eventAdd(eventInfo: IParticipationEventInfo): Promise {\n this.setState({\n dialogBusy: true,\n dialogStatus: \"Adding event, please wait...\"\n }, async () => {\n try {\n const response = await this._pluginService.addParticipationEvent(eventInfo);\n\n if (response?.eventId) {\n const id = response.eventId;\n this.setState(prevState => ({\n eventIds: [\n id,\n ...prevState.eventIds\n ],\n dialogBusy: false,\n dialogStatus: \"\",\n dialogType: undefined,\n eventInfo: undefined\n }));\n } else {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to add event: ${response?.error?.message}`\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to add event: ${error.message}`\n });\n }\n }\n });\n }\n\n /**\n * Delete event.\n * @param eventId The Id of the event to delete\n */\n private async eventDelete(eventId: string): Promise {\n this.setState({\n dialogBusy: true,\n dialogStatus: \"Deleting event, please wait...\"\n }, async () => {\n try {\n const response = await this._pluginService.deleteParticipationEvent(eventId);\n\n if (response && Object.keys(response).length === 0) {\n this.setState({\n eventIds: this.state.eventIds.filter(id => id !== eventId),\n dialogBusy: false,\n dialogStatus: \"\",\n dialogType: undefined\n });\n } else {\n this.setState({\n dialogBusy: false,\n dialogStatus: \"Failed to delete event.\"\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to delete event: ${error.message}`\n });\n }\n }\n });\n }\n\n /**\n * Get the event information as a JSON payload.\n * @param url The url that returns event info as Json\n * @returns Config of the event\n */\n private async fetchEventJsonConfig(url: URL): Promise {\n try {\n const response = await FetchHelper.json(\n url.origin,\n url.pathname,\n \"get\");\n\n return response;\n } catch {\n try {\n const response = await FetchHelper.text(\n url.origin,\n url.pathname,\n \"get\");\n\n return response;\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to add event: ${error.message}`\n });\n }\n }\n }\n }\n\n /**\n * Validate is input string valid json or url.\n * @param input The input to validate\n * @returns Returns boolean if input is valid\n */\n private validateJsonOrUrl(input: string): boolean {\n try {\n JSON.parse(input);\n return true;\n } catch {\n try {\n const url = new URL(input);\n return Boolean(url);\n } catch {\n return false;\n }\n }\n }\n}\n\nexport default Participation;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgUpload = function SvgUpload(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"-5 -5 24 24\",\n width: 30,\n fill: \"currentColor\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 3.414v5.642a1 1 0 1 1-2 0V3.414L4.879 4.536A1 1 0 0 1 3.464 3.12L6.293.293a1 1 0 0 1 1.414 0l2.829 2.828A1 1 0 1 1 9.12 4.536L8 3.414zM1 12h12a1 1 0 0 1 0 2H1a1 1 0 0 1 0-2z\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgUpload);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/upload.375da0a814920938b744d5bf1bc88b19.svg\";","import { MILESTONE_PAYLOAD_TYPE, TAGGED_DATA_PAYLOAD_TYPE, TransactionHelper, TRANSACTION_PAYLOAD_TYPE } from \"@iota/iota.js\";\nimport classNames from \"classnames\";\nimport React, { ChangeEvent, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ReactComponent as UploadIcon } from \"../../../assets/upload.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IProofOfInclusion } from \"../../../models/plugins/IProofOfInclusion\";\nimport { PluginService } from \"../../../services/pluginService\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport { ClipboardHelper } from \"../../../utils/clipboardHelper\";\nimport AsyncComponent from \"../layout/AsyncComponent\";\nimport BlockButton from \"../layout/BlockButton\";\nimport Spinner from \"../layout/Spinner\";\nimport MilestonePayload from \"../tangle/MilestonePayload\";\nimport TaggedDataPayload from \"../tangle/TaggedDataPayload\";\nimport TransactionPayload from \"../tangle/TransactionPayload\";\nimport { ProofOfInclusionState } from \"./ProofOfInclusionState\";\n\n/**\n * ProofOfInclusion panel.\n */\nclass ProofOfInclusion extends AsyncComponent {\n /**\n * The title of the plugin.\n */\n private static readonly PLUGIN_TITLE = \"Proof of inclusion\";\n\n /**\n * The description of the plugin.\n */\n private static readonly PLUGIN_DESCRIPTION = \"Validate proof of inclusion.\";\n\n /**\n * The message for valid proof of inclusion.\n */\n private static readonly VALIDATION_SUCCESS_MESSAGE = \"The given proof of inclusion for the block is valid.\";\n\n /**\n * The messsage for invalid proof of inclusion.\n */\n private static readonly VALIDATION_FAILED_MESSAGE = \"The given proof of inclusion for the block is invalid.\";\n\n /**\n * Is the poi plugin available.\n */\n private static _isAvailable: boolean = false;\n\n /**\n * Service for plugin requests.\n */\n private readonly _pluginService: PluginService;\n\n /**\n * Create a new instance of Participation.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._pluginService = ServiceFactory.get(\"plugin\");\n\n this.state = {\n dialogBusy: false\n };\n }\n\n /**\n * Is the plugin available.\n */\n public static async initPlugin(): Promise {\n ProofOfInclusion._isAvailable = false;\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const routes = await tangleService.routes();\n if (routes.routes.includes(\"poi/v1\")) {\n ProofOfInclusion._isAvailable = true;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the plugin details if its availabe.\n * @returns The plugin details if available.\n */\n public static pluginDetails(): {\n title: string;\n description: string;\n settings: ReactNode;\n } | undefined {\n if (ProofOfInclusion._isAvailable) {\n return {\n title: ProofOfInclusion.PLUGIN_TITLE,\n description: ProofOfInclusion.PLUGIN_DESCRIPTION,\n settings: \n };\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n

    {ProofOfInclusion.PLUGIN_TITLE}

    \n

    \n {ProofOfInclusion.PLUGIN_DESCRIPTION}\n

    \n
    \n Upload poi json file\n
    \n
    \n
    \n ) => this.validate(event)}\n />\n \n
    \n {this.state.dialogBusy && }\n
    \n {this.state.dialogStatus && (\n \n
    \n Proof of Inclusion\n
    \n
    \n
    \n \n {this.state.isPoiValid ? \"Valid\" : \"Invalid\"}\n
    \n {this.state.dialogStatus}\n
    \n
    \n \n )}\n\n
    \n {this.state.poi && (\n
    \n
    \n
    \n

    \n Block\n

    \n
    \n
    \n Id\n
    \n
    \n \n {this.state.blockId}\n \n ClipboardHelper.copy(\n this.state.blockId\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
    \n {this.state.poi.block.parents.map((parent, idx) => (\n \n
    \n Parent Block {idx + 1}\n
    \n
    \n {parent !== \"0\".repeat(64) && (\n \n \n {parent}\n \n ClipboardHelper.copy(\n parent\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n \n )}\n {parent === \"0\".repeat(64) && (\n Genesis\n )}\n
    \n
    \n ))}\n
    \n Nonce\n
    \n
    \n {this.state.poi.block?.nonce}\n
    \n
    \n {this.state.poi.block?.payload && (\n \n {this.state.poi.block.payload.type === TRANSACTION_PAYLOAD_TYPE && (\n \n \n {this.state.poi.block.payload.essence.payload && (\n
    \n \n
    \n )}\n
    \n )}\n {this.state.poi.block.payload.type === MILESTONE_PAYLOAD_TYPE && (\n
    \n \n
    \n )}\n {this.state.poi.block.payload.type === TAGGED_DATA_PAYLOAD_TYPE && (\n
    \n \n
    \n )}\n
    \n )}\n
    \n )}\n
    \n );\n }\n\n /**\n * Validate poi.\n * @param e File change event.\n */\n private async validate(e: ChangeEvent): Promise {\n if (e.currentTarget.files?.[0]) {\n this.setState({\n poi: undefined,\n blockId: undefined,\n dialogBusy: true,\n dialogStatus: undefined,\n isPoiValid: false\n });\n const fileReader = new FileReader();\n\n fileReader.readAsText(e.currentTarget.files[0], \"utf8\");\n fileReader.addEventListener(\"load\", (event: ProgressEvent) => {\n if (event?.target?.result) {\n const poi = event.target.result as string;\n\n try {\n const payload: IProofOfInclusion = JSON.parse(poi);\n\n this.setState({\n poi: payload,\n blockId: TransactionHelper.calculateBlockId(payload.block)\n });\n this.setState({\n dialogStatus: \"Validating, please wait...\"\n }, async () => {\n try {\n const response = await this._pluginService.validatePoi(payload);\n if (response) {\n this.setState({\n dialogBusy: false,\n dialogStatus: ProofOfInclusion.VALIDATION_SUCCESS_MESSAGE,\n isPoiValid: true\n });\n } else {\n this.setState({\n dialogBusy: false,\n dialogStatus: ProofOfInclusion.VALIDATION_FAILED_MESSAGE,\n isPoiValid: false\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to validate the poi: ${error.message}.`,\n isPoiValid: false\n });\n }\n }\n });\n } catch (error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Invalid JSON object: ${error}.`,\n isPoiValid: false\n });\n }\n }\n });\n }\n }\n}\n\nexport default ProofOfInclusion;\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgToggle = function SvgToggle(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 14,\n cy: 14,\n r: 12,\n fill: \"currentColor\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: 0,\n y: 0,\n width: 28,\n height: 28,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 1\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 1\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.375 0 0 0 0 0.375 0 0 0 0 0.375 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgToggle);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/toggle.9da7d3b76b3615222ce61515356ffa4e.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./ToggleButton.scss\";\nimport { ReactComponent as ToggleIcon } from \"../../../assets/toggle.svg\";\nimport { ToggleButtonProps } from \"./ToggleButtonProps\";\nimport { ToggleButtonState } from \"./ToggleButtonState\";\n\n/**\n * Component which will display a toggle button.\n */\nclass ToggleButton extends Component {\n /**\n * Create a new instance of ToggleButton.\n * @param props The props.\n */\n constructor(props: ToggleButtonProps) {\n super(props);\n\n this.state = {\n value: props.value\n };\n }\n\n /**\n * The component did update.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: ToggleButtonProps): void {\n if (this.props.value !== prevProps.value) {\n this.setState({ value: this.props.value });\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n this.setState({ value: !this.state.value },\n () => {\n this.props.onChanged(this.state.value);\n })}\n >\n
    \n \n
    \n \n );\n }\n}\n\nexport default ToggleButton;\n","import React, { ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { PluginService } from \"../../../services/pluginService\";\nimport { TangleService } from \"../../../services/tangleService\";\nimport AsyncComponent from \"../../components/layout/AsyncComponent\";\nimport ToggleButton from \"../layout/ToggleButton\";\nimport \"./Spammer.scss\";\nimport { SpammerState } from \"./SpammerState\";\n\n/**\n * Spammer panel.\n */\nclass Spammer extends AsyncComponent {\n /**\n * The title of the plugin.\n */\n private static readonly PLUGIN_TITLE = \"Spammer\";\n\n /**\n * The description of the plugin.\n */\n private static readonly PLUGIN_DESCRIPTION = \"Spam the network with tagged data or transaction payloads.\";\n\n /**\n * Is the spammer plugin available.\n */\n private static _isAvailable: boolean = false;\n\n /**\n * Service for plugin requests.\n */\n private readonly _pluginService: PluginService;\n\n /**\n * Create a new instance of Spammer.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._pluginService = ServiceFactory.get(\"plugin\");\n\n this.state = {\n isRunning: false,\n bps: \"1\",\n cpu: \"80\",\n workers: \"0\",\n workersMax: 0,\n valueSpamEnabled: false\n };\n }\n\n /**\n * Is the plugin available.\n */\n public static async initPlugin(): Promise {\n Spammer._isAvailable = false;\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const routes = await tangleService.routes();\n if (routes.routes.includes(\"spammer/v1\")) {\n Spammer._isAvailable = true;\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the plugin details if its availabe.\n * @returns The plugin details if available.\n */\n public static pluginDetails(): {\n title: string;\n description: string;\n settings: ReactNode;\n } | undefined {\n if (Spammer._isAvailable) {\n return {\n title: Spammer.PLUGIN_TITLE,\n description: Spammer.PLUGIN_DESCRIPTION,\n settings: \n };\n }\n }\n\n /**\n * The component did mount.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n await this.pluginStatus();\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n

    {Spammer.PLUGIN_TITLE}

    \n

    \n {Spammer.PLUGIN_DESCRIPTION}\n

    \n
    \n Running\n
    \n
    \n {\n await (value ? this.pluginStart() : this.pluginStop());\n }}\n />\n
    \n

    Settings

    \n
    \n Enable value spam\n
    \n
    \n this.setState({ valueSpamEnabled: value })}\n />\n
    \n
    \n Blocks Per Second\n
    \n
    \n this.setState({ bps: e.target.value })}\n onBlur={e => this.validateSettings()}\n />\n
    \n
    \n CPU Utilization\n
    \n
    \n this.setState({ cpu: e.target.value })}\n onBlur={e => this.validateSettings()}\n />\n

    %

    \n
    \n
    \n Number of Workers\n
    \n
    \n this.setState({ workers: e.target.value })}\n onBlur={e => this.validateSettings()}\n />\n
    \n
    \n
    \n this.pluginStart()}\n >\n Apply\n \n
    \n
    \n
    \n\n );\n }\n\n /**\n * Get the status for the plugin.\n */\n private async pluginStatus(): Promise {\n try {\n const response = await this._pluginService.spammerStatus();\n\n if (response && !response.error) {\n this.setState({\n isRunning: response.running ?? false,\n bps: response.bpsRateLimit?.toString() ?? \"\",\n cpu: (response.cpuMaxUsage ?? 0 * 100).toString(),\n workers: response.spammerWorkers?.toString() ?? \"\",\n workersMax: response.spammerWorkersMax ?? 0,\n valueSpamEnabled: response.valueSpamEnabled ?? false\n });\n } else {\n console.log(\"Error fetching spammer status\", response?.error);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Start the plugin.\n */\n private async pluginStart(): Promise {\n try {\n await this._pluginService.spammerStart({\n bpsRateLimit: Number.parseFloat(this.state.bps),\n cpuMaxUsage: Number.parseFloat(this.state.cpu) / 100,\n spammerWorkers: Number.parseInt(this.state.workers, 10),\n valueSpamEnabled: this.state.valueSpamEnabled\n });\n\n await this.pluginStatus();\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Stop the plugin.\n */\n private async pluginStop(): Promise {\n try {\n await this._pluginService.spammerStop();\n\n await this.pluginStatus();\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Validate the settings for the plugin.\n */\n private validateSettings(): void {\n const bps = Number.parseFloat(this.state.bps);\n if (Number.isNaN(bps)) {\n this.setState({ bps: \"1\" });\n }\n\n const cpu = Number.parseFloat(this.state.cpu);\n if (Number.isNaN(cpu)) {\n this.setState({ cpu: \"80\" });\n } else if (cpu < 0 || cpu > 100) {\n this.setState({ cpu: \"80\" });\n }\n\n const numWorkers = Number.parseInt(this.state.workers, 10);\n if (Number.isNaN(numWorkers)) {\n this.setState({ workers: this.state.workersMax.toString() });\n } else if (numWorkers <= 0 || numWorkers > this.state.workersMax) {\n this.setState({ workers: this.state.workersMax.toString() });\n }\n }\n}\n\nexport default Spammer;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgClose = function SvgClose(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6151 6.00057L11.6514 1.96311C11.7605 1.85778 11.8475 1.73179 11.9073 1.59248C11.9671 1.45318 11.9986 1.30335 12 1.15174C12.0013 1.00013 11.9724 0.849774 11.915 0.709449C11.8576 0.569124 11.7728 0.441638 11.6656 0.33443C11.5584 0.227222 11.4309 0.142439 11.2906 0.0850271C11.1502 0.0276156 10.9999 -0.00127433 10.8483 4.31112e-05C10.6967 0.00136056 10.5468 0.032859 10.4075 0.0927004C10.2682 0.152542 10.1422 0.239528 10.0369 0.348583L5.99943 4.3849L1.96311 0.348583C1.85778 0.239528 1.73179 0.152542 1.59248 0.0927004C1.45318 0.032859 1.30335 0.00136056 1.15174 4.31112e-05C1.00013 -0.00127433 0.849774 0.0276156 0.709449 0.0850271C0.569124 0.142439 0.441638 0.227222 0.33443 0.33443C0.227222 0.441638 0.142439 0.569124 0.0850271 0.709449C0.0276156 0.849774 -0.00127433 1.00013 4.31112e-05 1.15174C0.00136056 1.30335 0.032859 1.45318 0.0927004 1.59248C0.152542 1.73179 0.239528 1.85778 0.348583 1.96311L4.3849 5.99943L0.348583 10.0369C0.239528 10.1422 0.152542 10.2682 0.0927004 10.4075C0.032859 10.5468 0.00136056 10.6967 4.31112e-05 10.8483C-0.00127433 10.9999 0.0276156 11.1502 0.0850271 11.2906C0.142439 11.4309 0.227222 11.5584 0.33443 11.6656C0.441638 11.7728 0.569124 11.8576 0.709449 11.915C0.849774 11.9724 1.00013 12.0013 1.15174 12C1.30335 11.9986 1.45318 11.9671 1.59248 11.9073C1.73179 11.8475 1.85778 11.7605 1.96311 11.6514L5.99943 7.6151L10.0369 11.6514C10.1422 11.7605 10.2682 11.8475 10.4075 11.9073C10.5468 11.9671 10.6967 11.9986 10.8483 12C10.9999 12.0013 11.1502 11.9724 11.2906 11.915C11.4309 11.8576 11.5584 11.7728 11.6656 11.6656C11.7728 11.5584 11.8576 11.4309 11.915 11.2906C11.9724 11.1502 12.0013 10.9999 12 10.8483C11.9986 10.6967 11.9671 10.5468 11.9073 10.4075C11.8475 10.2682 11.7605 10.1422 11.6514 10.0369L7.6151 5.99943V6.00057Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgClose);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/close.3328747e4513b813fa666eafb3813ccb.svg\";","import React, { ReactNode } from \"react\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { AuthService } from \"../../services/authService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport TabPanel from \"../components/layout/TabPanel\";\nimport Participation from \"../components/plugins/Participation\";\nimport Poi from \"../components/plugins/ProofOfInclusion\";\nimport Spammer from \"../components/plugins/Spammer\";\nimport \"./Plugins.scss\";\nimport { PluginsState } from \"./PluginsState\";\n\n/**\n * Plugins panel.\n */\nclass Plugins extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of Plugins.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n plugins: []\n };\n }\n\n /**\n * The component did mount.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n const plugins = [];\n\n if (this._authService.isLoggedIn()) {\n const pluginDetailsSpammer = Spammer.pluginDetails();\n if (pluginDetailsSpammer) {\n plugins.push(pluginDetailsSpammer);\n }\n const pluginDetailsParticipation = Participation.pluginDetails();\n if (pluginDetailsParticipation) {\n plugins.push(pluginDetailsParticipation);\n }\n const pluginDetailsPoi = Poi.pluginDetails();\n if (pluginDetailsPoi) {\n plugins.push(pluginDetailsPoi);\n }\n }\n\n if (plugins.length > 0) {\n this.setState({\n activeTab: plugins[0].title\n });\n }\n\n this.setState({\n plugins\n });\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n {this.state.plugins.length === 0 && (\n

    \n No plugins enabled which are supported by the dashboard.
    \n More information about managing plugins can be found on the\n {\" \"}\n \n Hornet Developer Documentation.\n \n

    \n )}\n p.title)}\n activeTab={this.state.activeTab ?? \"\"}\n onTabChanged={activeTab => {\n this.setState({\n activeTab\n });\n }}\n >\n {this.state.plugins.map((p, idx) => (\n
    \n {p.settings}\n
    \n ))}\n\n \n
    \n
    \n );\n }\n}\n\nexport default Plugins;\n","import { Blake2b } from \"@iota/crypto.js\";\nimport { serializeBlock } from \"@iota/iota.js\";\nimport { Converter, WriteStream } from \"@iota/util.js\";\nimport React, { ReactNode } from \"react\";\nimport { Link, Redirect, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../assets/chevron-left.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { TangleService } from \"../../services/tangleService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Search.scss\";\nimport { SearchRouteProps } from \"./SearchRouteProps\";\nimport { SearchState } from \"./SearchState\";\n\n/**\n * Component which will show the search page.\n */\nclass Search extends AsyncComponent, SearchState> {\n /**\n * Create a new instance of Search.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this.state = {\n statusBusy: true,\n redirect: \"\",\n error: \"\"\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n this.trySearch();\n }\n\n /**\n * The component was updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: RouteComponentProps): void {\n if (this.props.location.pathname !== prevProps.location.pathname) {\n this.trySearch();\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return this.state.redirect.length > 0 ? (\n \n )\n : (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n\n
    \n

    Search

    \n {this.state.statusBusy && ()}\n {!this.state.statusBusy && (\n \n {this.state.error && (\n

    \n {this.state.error}\n

    \n )}\n
    \n

    Please try again with your query in one of the following formats:

    \n
    \n
      \n
    • \n Blocks\n 64 Hex characters\n
    • \n
    • \n Block using Transaction Id\n 64 Hex characters\n
    • \n
    • \n Addresses\n 64 Hex characters or Bech32 Format\n
    • \n
    • \n Nft/Alias Addresses\n 40 Hex characters or Bech32 Format\n
    • \n
    • \n Outputs\n 68 Hex characters or tag\n
    • \n
    • \n Foundry Id\n 52 Hex characters\n
    • \n
    • \n Token Id\n 76 Hex characters\n
    • \n
    • \n Milestone Index\n Numeric\n
    • \n
    \n
    \n )}\n
    \n
    \n
    \n );\n }\n\n /**\n * Update the state of the component.\n */\n private trySearch(): void {\n const query = (this.props.match.params.query ?? \"\").trim();\n\n if (query.length > 0) {\n this.setState({ statusBusy: true }, async () => {\n const tangleService = ServiceFactory.get(\"tangle\");\n const response = await tangleService.search({ query });\n\n let redirect = \"\";\n\n if (response) {\n if (response.unavailable) {\n redirect = \"/explorer/unavailable\";\n } else {\n let objType;\n let objParam = query;\n\n if (response.block) {\n objType = \"block\";\n // Recalculate the block id from the content, in case\n // the lookup was a response to a transaction id lookup\n const writeStream = new WriteStream();\n\n try {\n serializeBlock(writeStream, response.block);\n } catch (error) {\n if (error instanceof Error) {\n console.log(error.message);\n }\n }\n objParam = Converter.bytesToHex(Blake2b.sum256(writeStream.finalBytes()), true);\n } else if (response?.address) {\n objType = \"address\";\n objParam = response.address.bech32 ?? objParam;\n } else if (response.outputId) {\n objType = \"output\";\n objParam = response.outputId;\n } else if (response.outputs) {\n objType = \"outputs\";\n objParam = Converter.isHex(objParam, true) ? objParam : Converter.utf8ToHex(objParam, true);\n } else if (response.milestone) {\n objType = \"milestone\";\n objParam = response.milestone.index.toString();\n }\n if (objType) {\n redirect = `/explorer/${objType}/${objParam}`;\n }\n }\n }\n\n this.setState({\n error: redirect.length > 0 ? \"\" : \"Nothing could be found for the search.\",\n statusBusy: false,\n redirect\n });\n });\n } else {\n this.setState({\n statusBusy: false,\n error: \"The search is empty.\"\n });\n }\n }\n}\n\nexport default Search;\n","import React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../assets/chevron-left.svg\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport \"./Unavailable.scss\";\n\n/**\n * Component which will show the unavailable page.\n */\nclass Unavailable extends AsyncComponent> {\n /**\n * Create a new instance of Unavailable.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this.state = {};\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n
    \n \n \n

    Back to Explorer

    \n \n\n
    \n

    Service Unavailable

    \n

    The node is currently unavailable or is not synced, please try again later.

    \n
    \n
    \n
    \n );\n }\n}\n\nexport default Unavailable;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPause = function SvgPause(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 3H8C8.53043 3 9.03914 3.21071 9.41421 3.58579C9.78929 3.96086 10 4.46957 10 5V19C10 19.5304 9.78929 20.0391 9.41421 20.4142C9.03914 20.7893 8.53043 21 8 21H6C5.46957 21 4.96086 20.7893 4.58579 20.4142C4.21071 20.0391 4 19.5304 4 19V5C4 4.46957 4.21071 3.96086 4.58579 3.58579C4.96086 3.21071 5.46957 3 6 3V3ZM6 5V19H8V5H6ZM16 3H18C18.5304 3 19.0391 3.21071 19.4142 3.58579C19.7893 3.96086 20 4.46957 20 5V19C20 19.5304 19.7893 20.0391 19.4142 20.4142C19.0391 20.7893 18.5304 21 18 21H16C15.4696 21 14.9609 20.7893 14.5858 20.4142C14.2107 20.0391 14 19.5304 14 19V5C14 4.46957 14.2107 3.96086 14.5858 3.58579C14.9609 3.21071 15.4696 3 16 3V3ZM16 5V19H18V5H16Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPause);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pause.8f183526ee54e218ab2d12b2e7dbea15.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPlay = function SvgPlay(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.78205 4.3598L19.2432 11.5176L7.92341 18.8969L7.78205 4.3598Z\",\n stroke: \"#9AADCE\",\n strokeWidth: 2,\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPlay);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/play.0cc752a2907c29ea69983a2ce4c35c3d.svg\";","import { TAGGED_DATA_PAYLOAD_TYPE, MILESTONE_PAYLOAD_TYPE, BASIC_OUTPUT_TYPE, TRANSACTION_PAYLOAD_TYPE } from \"@iota/iota.js\";\nimport { Converter } from \"@iota/util.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport Viva from \"vivagraphjs\";\nimport { ReactComponent as CloseIcon } from \"../../assets/close.svg\";\nimport { ReactComponent as PauseIcon } from \"../../assets/pause.svg\";\nimport { ReactComponent as PlayIcon } from \"../../assets/play.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IVisualizerCounts } from \"../../models/visualizer/IVisualizerCounts\";\nimport { IVisualizerVertex } from \"../../models/visualizer/IVisualizerVertex\";\nimport { IBpsMetrics } from \"../../models/websocket/IBpsMetrics\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { VisualizerService } from \"../../services/visualizerService\";\nimport { FormatHelper } from \"../../utils/formatHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport \"./Visualizer.scss\";\nimport { VisualizerState } from \"./VisualizerState\";\n\n/**\n * Visualizer panel.\n */\nclass Visualizer extends AsyncComponent {\n /**\n * Map the vetex states to colors.\n */\n private static readonly STATE_COLOR_MAP: { [id: string]: number } = {\n Solid: 0x4CAAFFFF,\n Unsolid: 0x8FE6FAFF,\n Referenced: 0x61E884FF,\n Conflicting: 0xFF8B5CFF,\n Transaction: 0xC061E8FF,\n Milestone: 0xD92121FF,\n Tip: 0xFFCA62FF,\n Unknown: 0x9AADCEFF\n };\n\n /**\n * Color for connection between vertices.\n */\n private static readonly THEME_COLOR_LINKS: { [theme: string]: number } = {\n dark: 0xFFFFFF22,\n light: 0xDDDDDDFF\n };\n\n /**\n * Children link color.\n */\n private static readonly COLOR_LINK_CHILDREN = 0xFF5AAAFF;\n\n /**\n * Parent link color.\n */\n private static readonly COLOR_LINK_PARENTS = 0x0000FFFF;\n\n /**\n * The graph element.\n */\n private _graphElement: HTMLElement | null;\n\n /**\n * The graph instance.\n */\n private _graph?: Viva.Graph.IGraph;\n\n /**\n * The renderer instance.\n */\n private _renderer?: Viva.Graph.View.IRenderer;\n\n /**\n * The graphics instance.\n */\n private _graphics?: Viva.Graph.View.IWebGLGraphics;\n\n /**\n * The visualizer service.\n */\n private readonly _vizualizerService: VisualizerService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The tangle service.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The bps metrics subscription id.\n */\n private _bpsMetricsSubscription?: string;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Entered vertex.\n */\n private _enteredVertexId?: string;\n\n /**\n * Create a new instance of Visualizer.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n this._vizualizerService = ServiceFactory.get(\"visualizer\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._tangleService = ServiceFactory.get(\"tangle\");\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n bps: \"-\",\n total: \"-\",\n tips: \"-\",\n referenced: \"-\",\n transactions: \"-\",\n conflicting: \"-\",\n solid: \"-\",\n isActive: true,\n theme: this._themeService.get()\n };\n }\n\n /**\n * The component will mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n window.addEventListener(\"resize\", this._resize);\n\n this._vizualizerService.subscribe(\n (vertex, op) => {\n if (op === \"add\" || op === \"update\") {\n this.updateVertex(vertex);\n } else if (op === \"delete\") {\n this.deleteVertex(vertex);\n }\n },\n counts => {\n if (this.state.isActive) {\n this.setState({\n total: counts.total.toString(),\n tips: counts.tips.toString(),\n referenced: counts.total > 0\n ? `${(counts.referenced / counts.total * 100).toFixed(2)}%`\n : \"-\",\n transactions: counts.total > 0\n ? `${(counts.transactions / counts.total * 100).toFixed(2)}%`\n : \"-\",\n conflicting: counts.total > 0\n ? `${(counts.conflicting / counts.total * 100).toFixed(2)}%`\n : \"-\",\n solid: counts.total > 0 ? `${(counts.solid / counts.total * 100).toFixed(2)}%` : \"-\"\n });\n }\n },\n (referencedId, excludedIds, counts) => this.referenceVertex(referencedId, excludedIds, counts)\n );\n\n this._bpsMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.BPSMetrics, data => {\n if (data && this.state.isActive) {\n this.setState({ bps: data.new.toString() });\n }\n });\n\n EventAggregator.subscribe(\"theme\", \"visualizer\", theme => {\n this.setState({\n theme\n }, () => this.styleAllLinks());\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._bpsMetricsSubscription) {\n this._metricsService.unsubscribe(this._bpsMetricsSubscription);\n this._bpsMetricsSubscription = undefined;\n }\n\n this._vizualizerService.unsubscribe();\n\n EventAggregator.unsubscribe(\"theme\", \"visualizer\");\n\n // This is a workaround for an issue in Safari\n // https://github.com/WebKit/WebKit/pull/1693\n // https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n if (this._graphElement) {\n const canvas = this._graphElement.children[0] as HTMLCanvasElement;\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n ctx?.clearRect(0, 0, 1, 1);\n }\n\n this._graph?.clear();\n this._renderer?.dispose();\n\n this._graph = undefined;\n this._graphics = undefined;\n this._renderer = undefined;\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
    \n this.setupGraph(r)}\n />\n
    \n
    \n this.toggleActivity()}\n >\n {this.state.isActive ? : }\n \n
    \n
    \n
    \n
    \n
    \n Blocks\n
    \n
    \n {this.state.total}\n
    \n
    \n BPS\n
    \n
    \n {this.state.bps}\n
    \n
    \n Tips\n
    \n
    \n {this.state.tips}\n
    \n
    \n Referenced\n
    \n
    \n {this.state.referenced}\n
    \n
    \n Transactions\n
    \n
    \n {this.state.transactions}\n
    \n
    \n Conflicting\n
    \n
    \n {this.state.conflicting}\n
    \n
    \n Solid\n
    \n
    \n {this.state.solid}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    Solid
    \n
    \n
    \n
    \n
    Unsolid
    \n
    \n
    \n
    \n
    Referenced
    \n
    \n
    \n
    \n
    Transaction
    \n
    \n
    \n
    \n
    Conflicting
    \n
    \n
    \n
    \n
    Milestone
    \n
    \n
    \n
    \n
    Unknown
    \n
    \n
    \n
    \n
    Tip
    \n
    \n
    \n
    \n {this.state.selected && this._graphElement && (\n \n
    \n
    \n
    \n
    \n

    {this.state.selected.state}{this.state.selected.title}

    \n
    \n this.selectNode()}\n >\n \n \n
    \n
    \n {this.state.selected.vertex.fullId && (\n \n
    \n Block Id\n
    \n
    \n \n {this.state.selected.vertex.fullId}\n \n
    \n
    \n )}\n {this.state.selected.payload &&\n this.state.selected.payload.type === TRANSACTION_PAYLOAD_TYPE && (\n \n
    \n Total\n
    \n
    \n {FormatHelper.getInstance().amount(\n Number(this.calculateTotal()),\n false\n )}\n
    \n
    \n )}\n {this.state.selected.payload &&\n this.state.selected.payload.type === MILESTONE_PAYLOAD_TYPE && (\n \n
    \n Index\n
    \n
    \n {this.state.selected.payload.index}\n
    \n
    \n Date\n
    \n
    \n {FormatHelper.date(this.state.selected.payload.timestamp, false)}\n
    \n
    \n )}\n {this.state.selected.payload &&\n this.state.selected.payload.type === TAGGED_DATA_PAYLOAD_TYPE &&\n this.state.selected.payload.tag && (\n \n
    \n Tag UTF8\n
    \n
    \n {Converter.hexToUtf8(this.state.selected.payload.tag)}\n
    \n
    \n Tag Hex\n
    \n
    \n {this.state.selected.payload.tag}\n
    \n
    \n )}\n
    \n
    \n
    \n )}\n
    \n );\n }\n\n /**\n * Setup the graph.\n * @param graphElement The element to use.\n */\n private setupGraph(graphElement: HTMLElement | null): void {\n this._graphElement = graphElement;\n\n if (graphElement && !this._graph) {\n this._graph = Viva.Graph.graph();\n\n this._graphics = Viva.Graph.View.webglGraphics();\n\n const layout = Viva.Graph.Layout.forceDirected(this._graph, {\n springLength: 10,\n springCoeff: 0.0001,\n stableThreshold: 0.15,\n gravity: -2,\n dragCoeff: 0.02,\n timeStep: 20,\n theta: 0.8\n });\n\n this._graphics.node(node => Viva.Graph.View.webglSquare(\n this.calculateSize(node.data),\n `#${Visualizer.STATE_COLOR_MAP[this.calculateState(node.data)].toString(16)}`\n ));\n\n this._graphics.link(() => Viva.Graph.View.webglLine(\n `#${Visualizer.THEME_COLOR_LINKS[this.state.theme].toString(16)}`));\n\n this._renderer = Viva.Graph.View.renderer(this._graph, {\n container: graphElement,\n graphics: this._graphics,\n layout,\n renderLinks: true\n });\n\n const events = Viva.Graph.webglInputEvents(this._graphics, this._graph);\n\n events.click(node => this.selectNode(node));\n events.dblClick(node => {\n this.selectNode();\n window.open(\n this.calculateBlockLink(node.data),\n \"_blank\"\n );\n });\n\n events.mouseEnter(node => {\n if (!this.state.selected) {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n if (node) {\n this._enteredVertexId = node.data?.shortId ?? node.id.slice(0, 10);\n this.connectedLinkStyle(this._enteredVertexId, true);\n }\n }\n });\n\n events.mouseLeave(node => {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n });\n\n this._renderer.run();\n\n this._graphics.scale(1, { x: graphElement.clientWidth / 2, y: graphElement.clientHeight / 2 });\n\n for (let i = 0; i < 12; i++) {\n this._renderer.zoomOut();\n }\n }\n }\n\n /**\n * Draw a vertex.\n * @param vertex The vertex to draw.\n */\n private updateVertex(vertex: IVisualizerVertex): void {\n if (this._graph) {\n let node = this.updateNodeUI(vertex.shortId);\n if (!node) {\n node = this._graph.addNode(vertex.shortId, vertex);\n }\n if (vertex.parents) {\n const added: string[] = [];\n for (let i = 0; i < vertex.parents.length; i++) {\n const parent = vertex.parents[i];\n if (!added.includes(parent) &&\n (!node.links?.some(link => link.toId === parent))) {\n added.push(parent);\n this._graph.addLink(vertex.shortId, parent);\n }\n }\n }\n }\n }\n\n /**\n * Update node style.\n * @param id The node id.\n * @returns The updated node.\n */\n private updateNodeUI(id: string): Viva.Graph.INode | undefined {\n if (this._graphics && this._graph) {\n const node = this._graph?.getNode(id);\n\n if (node) {\n const nodeUI = this._graphics.getNodeUI(id);\n if (nodeUI) {\n nodeUI.color = Visualizer.STATE_COLOR_MAP[this.calculateState(node.data)];\n nodeUI.size = this.calculateSize(node.data);\n }\n }\n\n return node;\n }\n }\n\n /**\n * Calculate the state for the vertex.\n * @param vertex The vertex to calculate the state for.\n * @returns The state.\n */\n private calculateState(vertex?: IVisualizerVertex): string {\n if (!vertex?.parents) {\n return \"Unknown\";\n }\n if (vertex.isMilestone) {\n return \"Milestone\";\n }\n if (vertex.isTip) {\n return \"Tip\";\n }\n if (vertex.isConflicting) {\n return \"Conflicting\";\n }\n if (vertex.isReferenced) {\n if (vertex.isTransaction) {\n return \"Transaction\";\n }\n return \"Referenced\";\n }\n if (vertex.isSolid) {\n return \"Solid\";\n }\n return \"Unsolid\";\n }\n\n /**\n * Calulate the size for the vertex.\n * @param vertex The vertex to calculate the size for.\n * @returns The size.\n */\n private calculateSize(vertex?: IVisualizerVertex): number {\n if (!vertex?.parents) {\n return 10;\n }\n if (vertex.isSelected || vertex.isMilestone) {\n return 30;\n }\n return 20;\n }\n\n /**\n * Delete a vertex.\n * @param vertex The vertex to delete.\n */\n private deleteVertex(vertex: IVisualizerVertex): void {\n if (this._graph) {\n this._graph.removeNode(vertex.shortId);\n\n if (this.state.selected &&\n this.state.selected.vertex.shortId === vertex.shortId) {\n this.setState({ selected: undefined });\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (this._enteredVertexId &&\n this._enteredVertexId === vertex.shortId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n }\n }\n\n /**\n * Update the referenced information.\n * @param referencedId The vertex that has been referenced.\n * @param excludedIds Excluded ids.\n * @param counts The visualizer counts.\n */\n private referenceVertex(referencedId: string, excludedIds: string[], counts: IVisualizerCounts): void {\n if (this._graph) {\n const startNode = this._graph.getNode(referencedId);\n\n if (startNode) {\n const seenBackwards: Viva.Graph.INode[] = [];\n this.dfsIterator(\n startNode,\n nodeId => {\n if (this._graph) {\n const parent = this._graph.getNode(nodeId);\n if (!parent?.data) {\n return true;\n }\n\n if (!parent.data.isReferenced && !parent.data.isConflicting) {\n if (excludedIds.includes(parent.data.shortId)) {\n counts.conflicting++;\n parent.data.isConflicting = true;\n this.updateVertex(parent.data);\n return false;\n }\n\n counts.referenced++;\n parent.data.isReferenced = true;\n this.updateVertex(parent.data);\n return false;\n }\n }\n\n return true;\n },\n undefined,\n false,\n seenBackwards\n );\n }\n }\n }\n\n /**\n * Walk the graph.\n * @param startNode The node to start with.\n * @param nodeCallback The iterator method to call on each node.\n * @param linkCallback The iterator method to call on each link.\n * @param up Are we walking up or down.\n * @param seenNodes The nodes we have already seen.\n */\n private dfsIterator(\n startNode: Viva.Graph.INode,\n nodeCallback: ((nodeId: string) => boolean) | undefined,\n linkCallback: ((linkId: string) => void) | undefined,\n up: boolean,\n seenNodes: Viva.Graph.INode[]): void {\n if (this._graph) {\n seenNodes.push(startNode);\n let pointer = 0;\n\n while (seenNodes.length > pointer) {\n const node = seenNodes[pointer++];\n const nodeId = node.data?.shortId ?? node.id.slice(0, 10);\n\n if (nodeCallback?.(nodeId)) {\n continue;\n }\n\n for (const link of node.links) {\n if (!up && link.fromId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.toId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n\n if (up && link.toId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.fromId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n }\n }\n }\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphics && this._graphElement) {\n this._graphics.updateSize();\n this._graphics.scale(1, {\n x: this._graphElement.clientWidth / 2,\n y: this._graphElement.clientHeight / 2\n });\n }\n }\n\n /**\n * Toggle if the visualizer is active.\n */\n private toggleActivity(): void {\n if (this._renderer) {\n if (this.state.isActive) {\n this._renderer.pause();\n } else {\n this._renderer.resume();\n }\n }\n\n this.setState({ isActive: !this.state.isActive });\n }\n\n /**\n * Select a node.\n * @param node The node to select\n */\n private selectNode(node?: Viva.Graph.INode): void {\n if (this.state.selected) {\n this.state.selected.vertex.isSelected = false;\n this.updateNodeUI(this.state.selected.vertex.shortId);\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (node) {\n if (!node.data) {\n node.data = {\n shortId: node.id\n };\n }\n node.data.isSelected = true;\n this.updateNodeUI(node.id);\n\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n this.connectedLinkStyle(node.data.shortId, true);\n\n this.setState({\n selected: {\n vertex: node?.data,\n state: this.calculateState(node.data)\n }\n },\n async () => {\n if (node.data?.fullId) {\n const payload = await this._tangleService.payload(node.data.fullId);\n let payloadTitle = \"\";\n\n if (payload) {\n if (payload.type === TRANSACTION_PAYLOAD_TYPE) {\n payloadTitle = \" - Transaction\";\n } else if (payload.type === MILESTONE_PAYLOAD_TYPE) {\n payloadTitle = \"\";\n } else if (payload.type === TAGGED_DATA_PAYLOAD_TYPE) {\n payloadTitle = \" - Tagged data\";\n }\n } else if (node.data.isMilestone) {\n payloadTitle = \" - Checkpoint\";\n }\n\n this.setState({\n selected: {\n vertex: node?.data,\n state: this.calculateState(node.data),\n payload,\n title: payloadTitle\n }\n });\n }\n });\n } else {\n this.setState({ selected: undefined });\n }\n }\n\n /**\n * Calculate the link for the block.\n * @param vertex The vertex id.\n * @returns The url for the block.\n */\n private calculateBlockLink(vertex?: IVisualizerVertex): string {\n return vertex?.fullId\n ? `${window.location.protocol}//${window.location.host}` +\n `${process.env.PUBLIC_URL}/explorer/block/${vertex.fullId}`\n : \"\";\n }\n\n /**\n * Highlight the forward and backwards cones.\n * @param vertexId The node to highlight.\n * @param highlight Highlight or clear the coloring.\n */\n private connectedLinkStyle(vertexId: string, highlight: boolean): void {\n if (this._graph) {\n const startNode = this._graph.getNode(vertexId);\n\n if (startNode) {\n const seenForward: Viva.Graph.INode[] = [];\n const seenBackwards: Viva.Graph.INode[] = [];\n\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_CHILDREN : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n true,\n seenBackwards\n );\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_PARENTS : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n false,\n seenForward\n );\n }\n }\n }\n\n /**\n * Style all the links.\n */\n private styleAllLinks(): void {\n if (this._graph && this._graphics) {\n this._graph.forEachLink(link => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(link.id);\n if (linkUI) {\n linkUI.color = Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n });\n }\n }\n\n /**\n * Calculate the total of outputs for a transaction payload.\n * @returns The total.\n */\n private calculateTotal(): number {\n let total = 0;\n\n if (this.state.selected?.payload?.type === TRANSACTION_PAYLOAD_TYPE) {\n for (const output of this.state.selected.payload.essence.outputs) {\n if (output.type === BASIC_OUTPUT_TYPE) {\n total += Number(output.amount);\n }\n }\n }\n\n return total;\n }\n}\n\nexport default Visualizer;\n","import moment from \"moment\";\nimport React, { ReactNode } from \"react\";\nimport { Redirect, Route, RouteComponentProps, Switch, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ExplorerIcon } from \"../assets/explorer.svg\";\nimport { ReactComponent as HomeIcon } from \"../assets/home.svg\";\nimport { ReactComponent as MoonIcon } from \"../assets/moon.svg\";\nimport { ReactComponent as PadlockUnlockedIcon } from \"../assets/padlock-unlocked.svg\";\nimport { ReactComponent as PadlockIcon } from \"../assets/padlock.svg\";\nimport { ReactComponent as PeersIcon } from \"../assets/peers.svg\";\nimport { ReactComponent as PluginsIcon } from \"../assets/plugins.svg\";\nimport { ReactComponent as SunIcon } from \"../assets/sun.svg\";\nimport { ReactComponent as VisualizerIcon } from \"../assets/visualizer.svg\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { INodeStatus } from \"../models/websocket/INodeStatus\";\nimport { IPublicNodeStatus } from \"../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../services/authService\";\nimport { EventAggregator } from \"../services/eventAggregator\";\nimport { LocalStorageService } from \"../services/localStorageService\";\nimport { MetricsService } from \"../services/metricsService\";\nimport { ThemeService } from \"../services/themeService\";\nimport { BrandHelper } from \"../utils/brandHelper\";\nimport \"./App.scss\";\nimport { AppState } from \"./AppState\";\nimport AsyncComponent from \"./components/layout/AsyncComponent\";\nimport Breakpoint from \"./components/layout/Breakpoint\";\nimport Header from \"./components/layout/Header\";\nimport HealthIndicator from \"./components/layout/HealthIndicator\";\nimport NavMenu from \"./components/layout/NavMenu\";\nimport NavPanel from \"./components/layout/NavPanel\";\nimport Explorer from \"./routes/Explorer\";\nimport Address from \"./routes/explorer/Address\";\nimport { AddressProps } from \"./routes/explorer/AddressProps\";\nimport Block from \"./routes/explorer/Block\";\nimport { BlockProps } from \"./routes/explorer/BlockProps\";\nimport Milestone from \"./routes/explorer/Milestone\";\nimport { MilestoneProps } from \"./routes/explorer/MilestoneProps\";\nimport OutputRoute from \"./routes/explorer/OutputRoute\";\nimport { OutputRouteProps } from \"./routes/explorer/OutputRouteProps\";\nimport OutputsRoute from \"./routes/explorer/OutputsRoute\";\nimport { OutputsRouteProps } from \"./routes/explorer/OutputsRouteProps\";\nimport Home from \"./routes/Home\";\nimport Login from \"./routes/Login\";\nimport Peer from \"./routes/Peer\";\nimport { PeerRouteProps } from \"./routes/PeerRouteProps\";\nimport Peers from \"./routes/Peers\";\nimport Plugins from \"./routes/Plugins\";\nimport Search from \"./routes/Search\";\nimport { SearchRouteProps } from \"./routes/SearchRouteProps\";\nimport Unavailable from \"./routes/Unavailable\";\nimport Visualizer from \"./routes/Visualizer\";\n\n/**\n * Main application class.\n */\nclass App extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The storage service.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The status subscription id.\n */\n private _statusSubscription?: string;\n\n /**\n * The sync status metrics subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The node alias.\n */\n private _alias?: string;\n\n /**\n * The lastest milestone index.\n */\n private _lmi?: string;\n\n /**\n * The confirmed milestone index.\n */\n private _cmi?: string;\n\n /**\n * The time of the last status update.\n */\n private _lastStatus: number;\n\n /**\n * The status timer.\n */\n private _statusTimer?: NodeJS.Timer;\n\n /**\n * The token expiry timer.\n */\n private _tokenExpiryTimer?: NodeJS.Timer;\n\n /**\n * Create a new instance of App.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n this._themeService = ServiceFactory.get(\"theme\");\n this._authService = ServiceFactory.get(\"auth\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._storageService = ServiceFactory.get(\"local-storage\");\n\n this._lastStatus = 0;\n\n this.state = {\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n theme: this._themeService.get(),\n online: false,\n syncHealth: false,\n nodeHealth: false\n };\n\n this.updateTitle();\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"app\", isLoggedIn => {\n this.setState({\n isLoggedIn\n }, () => {\n if (this.state.isLoggedIn) {\n this.validateTokenPeriodically();\n }\n });\n });\n\n EventAggregator.subscribe(\"theme\", \"app\", theme => {\n this.setState({ theme });\n });\n\n this._statusSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeStatus,\n data => {\n if (data && data.nodeAlias !== this._alias) {\n this._alias = data.nodeAlias;\n this.updateTitle();\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const lmi = data.lmi ? data.lmi.toString() : \"\";\n const smi = data.cmi ? data.cmi.toString() : \"\";\n\n if (lmi !== this._lmi || smi !== this._cmi) {\n this._cmi = smi;\n this._lmi = lmi;\n this.updateTitle();\n }\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n this._lastStatus = Date.now();\n if (!this.state.online) {\n EventAggregator.publish(\"online\", true);\n this.setState({\n online: true\n });\n }\n if (data.isHealthy !== this.state.nodeHealth) {\n this.setState({ nodeHealth: data.isHealthy });\n }\n if (data.isSynced !== this.state.syncHealth) {\n this.setState({ syncHealth: data.isSynced });\n }\n }\n });\n\n this._statusTimer = setInterval(() => {\n if (Date.now() - this._lastStatus > 30000 && this.state.online) {\n this.setState({\n online: false\n });\n\n EventAggregator.publish(\"online\", false);\n }\n }, 1000);\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"app\");\n EventAggregator.unsubscribe(\"theme\", \"app\");\n\n if (this._statusSubscription) {\n this._metricsService.unsubscribe(this._statusSubscription);\n this._statusSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._statusTimer !== undefined) {\n clearInterval(this._statusTimer);\n this._statusTimer = undefined;\n }\n\n this.clearTokenExpiryInterval();\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n const sections = [\n {\n label: \"Home\",\n icon: ,\n route: \"/\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Peers\",\n icon: ,\n route: \"/peers\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Explorer\",\n icon: ,\n route: \"/explorer\"\n },\n {\n label: \"Visualizer\",\n icon: ,\n route: \"/visualizer\"\n },\n {\n label: \"Plugins\",\n icon: ,\n route: \"/plugins\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Login\",\n icon: ,\n route: \"/login\",\n hidden: this.state.isLoggedIn\n },\n {\n label: \"Logout\",\n icon: ,\n function: () => this._authService.logout(),\n hidden: !this.state.isLoggedIn\n }\n ];\n\n const endSections = [\n {\n label: \"Light\",\n icon: ,\n function: () => this._themeService.apply(\"light\", true),\n hidden: this.state.theme === \"light\"\n },\n {\n label: \"Dark\",\n icon: ,\n function: () => this._themeService.apply(\"dark\", true),\n hidden: this.state.theme === \"dark\"\n }\n ];\n\n return (\n
    \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n {!this.state.online && (\n

    The node is offline or loading.

    \n )}\n {this.state.online && (\n \n \n
    \n \n \n
    \n
    \n \n {this.state.isLoggedIn && [\n ()}\n key=\"home\"\n />,\n ()}\n key=\"peers\"\n />,\n ) =>\n ()}\n key=\"peer\"\n />\n ]}\n {!this.state.isLoggedIn && (\n ()}\n />\n )}\n ()}\n />\n ) =>\n ()}\n />\n ) => ()}\n />\n ) =>\n ()}\n />\n ) =>\n ()}\n />\n ) =>\n (
    )}\n />\n ) =>\n ()}\n />\n ) =>\n ()}\n />\n ()}\n />\n ()}\n />\n ()}\n />\n ()}\n />\n \n \n )}\n
    \n
    \n
    \n );\n }\n\n /**\n * Update the window title.\n */\n private updateTitle(): void {\n let title = BrandHelper.getConfiguration().name;\n\n if (this._alias) {\n title += ` (${this._alias})`;\n }\n if (this._lmi && this._cmi) {\n title += ` ${this._cmi} / ${this._lmi}`;\n }\n\n document.title = title;\n }\n\n /**\n * Refresh the token one minute before it expires.\n */\n private validateTokenPeriodically() {\n this.clearTokenExpiryInterval();\n const jwt = this._storageService.load(\"dashboard-jwt\");\n const expiryTimestamp = this.getTokenExpiry(jwt);\n const expiryDate = moment(expiryTimestamp);\n const refreshTokenDate = moment(expiryDate).subtract(1, \"minutes\");\n\n this._tokenExpiryTimer = setInterval(async () => {\n const now = moment();\n if (now.isAfter(expiryDate)) {\n this._authService.logout();\n this.clearTokenExpiryInterval();\n } else if (now.isBetween(refreshTokenDate, expiryDate)) {\n await this._authService.initialize();\n }\n }, 5000);\n }\n\n /**\n * Decode jwt to get expiry time.\n * @param token The jwt.\n * @returns The expiry time.\n */\n private getTokenExpiry(token: string) {\n const payload = token.split(\".\")[1];\n const decodedToken = window.atob(payload);\n const parsedToken = JSON.parse(decodedToken);\n const expiryTimestamp = parsedToken.exp * 1000;\n\n return expiryTimestamp;\n }\n\n /**\n * Clear token expiry interval.\n */\n private clearTokenExpiryInterval() {\n if (this._tokenExpiryTimer !== undefined) {\n clearInterval(this._tokenExpiryTimer);\n this._tokenExpiryTimer = undefined;\n }\n }\n}\n\nexport default withRouter(App);\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { FetchHelper } from \"../utils/fetchHelper\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Service to handle authentication.\n */\nexport class AuthService {\n /**\n * The jwt if authenticated.\n */\n private _jwt?: string;\n\n /**\n * The csrf cookie from the login operation.\n */\n private readonly _csrf?: string;\n\n /**\n * Create a new instance of AuthService.\n */\n constructor() {\n this._jwt = undefined;\n\n if (document.cookie) {\n const cookies = document.cookie.split(\";\");\n\n const csrf = cookies.find(c => c.trim().startsWith(\"_csrf\"));\n\n if (csrf) {\n const parts = csrf.split(\"=\");\n if (parts.length === 2) {\n this._csrf = parts[1];\n }\n }\n }\n }\n\n /**\n * Initialise service.\n */\n public async initialize(): Promise {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const jwt = storageService.load(\"dashboard-jwt\");\n\n if (jwt) {\n await this.login(undefined, undefined, jwt);\n }\n }\n\n /**\n * Try performing a login.\n * @param user The username to login with.\n * @param password The password to login with.\n * @param jwt The jwt to login with.\n * @returns True if the login was successful.\n */\n public async login(\n user: string | undefined,\n password: string | undefined,\n jwt?: string): Promise {\n this.logout();\n\n try {\n const headers: Record = {};\n if (this._csrf) {\n headers[\"X-CSRF-Token\"] = this._csrf;\n }\n\n const response = await FetchHelper.json<{\n user?: string;\n password?: string;\n jwt?: string;\n }, {\n jwt?: string;\n }>(\n `${window.location.protocol}//${window.location.host}`,\n \"/dashboard/auth\",\n \"post\",\n {\n user,\n password,\n jwt\n },\n headers);\n\n if (response.jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n this._jwt = response.jwt;\n storageService.save(\"dashboard-jwt\", this._jwt);\n EventAggregator.publish(\"auth-state\", true);\n }\n } catch (err) {\n console.error(err);\n }\n\n return this._jwt !== undefined;\n }\n\n /**\n * Logout.\n */\n public logout(): void {\n if (this._jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.remove(\"dashboard-jwt\");\n this._jwt = undefined;\n EventAggregator.publish(\"auth-state\", false);\n }\n }\n\n /**\n * Get the jwt.\n * @returns The jwt if logged in.\n */\n public isLoggedIn(): string | undefined {\n return this._jwt;\n }\n\n /**\n * Get the csrf.\n * @returns The csrf.\n */\n public csrf(): string | undefined {\n return this._csrf;\n }\n\n /**\n * Build authentication headers.\n * @returns The authentication headers.\n */\n public buildAuthHeaders(): Record {\n const headers: Record = {};\n const jwt = this.isLoggedIn();\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n const csrf = this.csrf();\n if (csrf) {\n headers[\"X-CSRF-Token\"] = csrf;\n }\n\n return headers;\n }\n}\n","/**\n * Class to use local storage.\n */\nexport class LocalStorageService {\n /**\n * Load an item from local storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.localStorage) {\n try {\n const json = window.localStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to local storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.localStorage) {\n try {\n const json = JSON.stringify(item);\n window.localStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in local storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.localStorage) {\n try {\n window.localStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the local storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.localStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.localStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.localStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.localStorage.removeItem(key);\n }\n } else {\n window.localStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { Converter, RandomHelper } from \"@iota/util.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { WebSocketService } from \"../services/webSocketService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class MetricsService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * The web socket subscriptions.\n */\n private _webSocketSubscriptions: string[];\n\n /**\n * The cached data.\n */\n private _cached: {\n [topic: number]: unknown[];\n };\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleCallback?: (data: any) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multipleCallback?: (data: any[]) => void;\n }[];\n };\n\n /**\n * Create a new instance of MetricsService.\n */\n constructor() {\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n this._webSocketSubscriptions = [];\n this._subscriptions = {};\n this._cached = {};\n }\n\n /**\n * Initialise the service.\n */\n public initialize(): void {\n const topics: { topic: WebSocketTopic; isPublic: boolean }[] = [\n { topic: WebSocketTopic.SyncStatus, isPublic: true },\n { topic: WebSocketTopic.NodeStatus, isPublic: false },\n { topic: WebSocketTopic.PublicNodeStatus, isPublic: true },\n { topic: WebSocketTopic.BPSMetrics, isPublic: true },\n { topic: WebSocketTopic.DBSizeMetric, isPublic: false },\n { topic: WebSocketTopic.PeerMetric, isPublic: false },\n { topic: WebSocketTopic.Milestone, isPublic: true },\n { topic: WebSocketTopic.ConfirmedMsMetrics, isPublic: true }\n ];\n\n for (const t of topics) {\n this._webSocketSubscriptions.push(\n this._webSocketService.subscribe(\n t.topic,\n !t.isPublic,\n data => {\n this.triggerCallbacks(t.topic, data);\n }));\n }\n }\n\n /**\n * Closedown the service.\n */\n public closedown(): void {\n for (let i = 0; i < this._webSocketSubscriptions.length; i++) {\n this._webSocketService.unsubscribe(this._webSocketSubscriptions[i]);\n }\n this._webSocketSubscriptions = [];\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param singleCallback The callback to send the data to.\n * @param multipleCallback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(\n topic: WebSocketTopic,\n singleCallback?: (data: T) => void, multipleCallback?: (dataAll: T[]) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = [];\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].push({\n subscriptionId,\n singleCallback,\n multipleCallback\n });\n\n if (this._cached[topic] && this._cached[topic].length > 0) {\n if (multipleCallback) {\n multipleCallback(this._cached[topic] as T[]);\n }\n if (singleCallback) {\n singleCallback((this._cached[topic][this._cached[topic].length - 1] as T));\n }\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].length === 0) {\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n }\n\n /**\n * Trigger the callback handlers for the subscribers.\n * @param topic The message topic.\n * @param data The message data.\n */\n private triggerCallbacks(topic: WebSocketTopic, data: unknown): void {\n if (!this._cached[topic]) {\n this._cached[topic] = [];\n }\n if (topic === WebSocketTopic.DBSizeMetric || topic === WebSocketTopic.ConfirmedMsMetrics) {\n if (Array.isArray(data)) {\n this._cached[topic].push(...data as unknown[]);\n } else {\n this._cached[topic].push(data);\n }\n } else {\n this._cached[topic].push(data);\n }\n this._cached[topic] = this._cached[topic].slice(-60);\n\n if (this._subscriptions[topic]) {\n for (const subscriber of this._subscriptions[topic]) {\n if (subscriber.singleCallback) {\n subscriber.singleCallback(this._cached[topic][this._cached[topic].length - 1]);\n }\n if (subscriber.multipleCallback) {\n subscriber.multipleCallback(this._cached[topic]);\n }\n }\n }\n }\n}\n","import { INodeInfoBaseToken } from \"@iota/iota.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { SessionStorageService } from \"./sessionStorageService\";\nimport { TangleService } from \"./tangleService\";\n\n/**\n * Service to handle getting confiuration from the node.\n */\nexport class NodeConfigService {\n /**\n * The network id.\n */\n private _networkId: string;\n\n /**\n * The bech32 hrp.\n */\n private _bech32Hrp: string;\n\n /**\n * The bech32 hrp.\n */\n private _baseToken: INodeInfoBaseToken;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: SessionStorageService;\n\n /**\n * Create a new instance of NodeConfigService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"session-storage\");\n this._bech32Hrp = \"iota\";\n this._networkId = \"\";\n this._baseToken = {\n name: \"IOTA\",\n tickerSymbol: \"MIOTA\",\n unit: \"i\",\n decimals: 0,\n subunit: undefined,\n useMetricPrefix: true\n };\n }\n\n /**\n * Initialise NodeConfigService.\n */\n public async initialize(): Promise {\n this._bech32Hrp = this._storageService.load(\"bech32Hrp\");\n this._networkId = this._storageService.load(\"networkId\");\n this._baseToken = this._storageService.load(\"baseToken\");\n\n if (!this._bech32Hrp || !this._networkId || !this._baseToken) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const info = await tangleService.info();\n this.setBech32Hrp(info.protocol.bech32Hrp);\n this.setNetworkId(info.protocol.networkName);\n this.setBaseToken(info.baseToken);\n } catch {}\n }\n }\n\n /**\n * Get the hrp for bech32 addresses.\n * @returns The bech32 hrp.\n */\n public getBech32Hrp(): string {\n return this._bech32Hrp;\n }\n\n /**\n * Get the netwoork id.\n * @returns The network id.\n */\n public getNetworkId(): string {\n return this._networkId;\n }\n\n /**\n * Get the node base token.\n * @returns The node base token.\n */\n public getBaseToken(): INodeInfoBaseToken {\n return this._baseToken;\n }\n\n /**\n * Set the hrp for bech32 addresses.\n * @param bech32Hrp The new blind mode.\n */\n public setBech32Hrp(bech32Hrp: string): void {\n this._bech32Hrp = bech32Hrp;\n this._storageService.save(\"bech32Hrp\", this._bech32Hrp);\n }\n\n /**\n * Set the network id.\n * @param networkId The new blind mode.\n */\n public setNetworkId(networkId: string): void {\n this._networkId = networkId;\n this._storageService.save(\"networkId\", this._networkId);\n }\n\n /**\n * Set the base token.\n * @param baseToken The new blind mode.\n */\n public setBaseToken(baseToken: INodeInfoBaseToken): void {\n this._baseToken = baseToken;\n this._storageService.save(\"baseToken\", this._baseToken);\n }\n}\n","import { IClient, SingleNodeClient } from \"@iota/iota.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IProofOfInclusion } from \"../models/plugins/IProofOfInclusion\";\nimport { ISpammerSettings } from \"../models/plugins/ISpammerSettings\";\nimport { IValidatePoiResponse } from \"../models/plugins/IValidatePoiResponse\";\nimport { IParticipationEvent } from \"../models/plugins/participation/IParticipationEvent\";\nimport { IParticipationEventInfo } from \"../models/plugins/participation/IParticipationEventInfo\";\nimport { IParticipationEvents } from \"../models/plugins/participation/IParticipationEvents\";\nimport { IParticipationEventStatus } from \"../models/plugins/participation/IParticipationEventStatus\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle plugins api requests.\n */\nexport class PluginService {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of PluginService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n }\n\n /** Spammer Plugin */\n /**\n * Get the status of the Spammer plugin.\n * @returns The Spammer settings.\n */\n public async spammerStatus(): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"spammer/v1/\",\n \"get\",\n \"status\"\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Start the Spammer plugin.\n * @param settings The spammer settings.\n */\n public async spammerStart(settings: ISpammerSettings): Promise {\n const client = this.buildClient();\n\n try {\n await client.pluginFetch(\n \"spammer/v1/\",\n \"post\",\n \"start\",\n undefined,\n settings\n );\n } catch {}\n }\n\n /**\n * Stop the Spammer plugin.\n */\n public async spammerStop(): Promise {\n const client = this.buildClient();\n\n try {\n await client.pluginFetch(\n \"spammer/v1/\",\n \"post\",\n \"stop\"\n );\n } catch {}\n }\n\n /** Participation Plugin */\n /**\n * Get Participation events.\n * @returns The participation events.\n */\n public async fetchParticipationEvents(): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"participation/v1/\",\n \"get\",\n \"events\"\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the event information as a JSON payload.\n * @param id Event id.\n * @returns The participation event info.\n */\n public async fetchParticipationEventInfo(id: string): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"participation/v1/\",\n \"get\",\n `events/${id}`\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Get the event status info as a JSON payload.\n * @param id Event id.\n * @returns The participation event status.\n */\n public async fetchParticipationEventStatus(id: string): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"participation/v1/\",\n \"get\",\n `events/${id}/status`\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Add new participation event.\n * @param eventInfo JSON string that contains the event info that is to be added.\n * @returns The participation event.\n */\n public async addParticipationEvent(eventInfo: IParticipationEventInfo): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"participation/v1/\",\n \"post\",\n \"admin/events\",\n undefined,\n eventInfo\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Delete participation event.\n * @param id The Id of the event to delete.\n * @returns The empty object if deletion was successful.\n */\n public async deleteParticipationEvent(id: string): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"participation/v1/\",\n \"delete\",\n `admin/events/${id}`\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /** Proof of inclusion plugin */\n /**\n * Get the poi for the block.\n * @param blockId The id of the block.\n * @returns The poi for the block.\n */\n public async fetchPoi(blockId: string): Promise {\n const client = this.buildClient();\n\n try {\n return await client.pluginFetch(\n \"poi/v1/\",\n \"get\",\n `create/${blockId}`\n );\n } catch (err) {\n console.log(err);\n }\n }\n\n /**\n * Validate the poi for the block.\n * @param poi The poi of the block.\n * @returns Is poi valid.\n */\n public async validatePoi(poi: IProofOfInclusion): Promise {\n const client = this.buildClient();\n\n try {\n const response = await client.pluginFetch(\n \"poi/v1/\",\n \"post\",\n \"validate\",\n undefined,\n poi\n );\n\n return response.valid;\n } catch (err) {\n console.log(err);\n return false;\n }\n }\n\n /**\n * Build a client with auth header.\n * @returns The client.\n */\n private buildClient(): IClient {\n const headers = this._authService.buildAuthHeaders();\n\n return new SingleNodeClient(\n `${window.location.protocol}//${window.location.host}`,\n {\n basePath: \"/dashboard/api/\",\n headers\n }\n );\n }\n}\n","/**\n * Class to use session storage.\n */\n export class SessionStorageService {\n /**\n * Load an item from session storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.sessionStorage) {\n try {\n const json = window.sessionStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to session storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.sessionStorage) {\n try {\n const json = JSON.stringify(item);\n window.sessionStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in session storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.sessionStorage) {\n try {\n window.sessionStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the session storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.sessionStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.sessionStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.sessionStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.sessionStorage.removeItem(key);\n }\n } else {\n window.sessionStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class to use for storing settings.\n */\nexport class SettingsService {\n /**\n * The blind mode setting.\n */\n private _blindMode: boolean;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * Create a new instance of SettingsService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"local-storage\");\n this._blindMode = false;\n }\n\n /**\n * Initialize the service.\n */\n public initialize(): void {\n this._blindMode = this._storageService.load(\"blindMode\") ?? false;\n }\n\n /**\n * Get the blind mode setting.\n * @returns The blind mode.\n */\n public getBlindMode(): boolean {\n return this._blindMode;\n }\n\n /**\n * Set the blind mode setting.\n * @param blindMode The new blind mode.\n */\n public setBlindMode(blindMode: boolean): void {\n this._blindMode = blindMode;\n this._storageService.save(\"blindMode\", this._blindMode);\n EventAggregator.publish(\"settings.blindMode\", this._blindMode);\n }\n}\n","import { IndexerPluginClient, IOutputsResponse, IClient } from \"@iota/iota.js\";\nimport { Converter } from \"@iota/util.js\";\nimport { AssociationType, IAssociatedOutput } from \"../models/tangle/IAssociatedOutputsResponse\";\n\n/**\n * Helper class to fetch outputs of an query on stardust.\n */\nexport class OutputsHelper {\n public readonly associatedOutputs: IAssociatedOutput[] = [];\n\n private readonly query: string;\n\n private readonly client: IClient;\n\n constructor(query: string, client: IClient) {\n this.query = query;\n this.client = client;\n }\n\n public async fetchOutputsByTag() {\n const indexerPlugin = new IndexerPluginClient(this.client);\n const tag = Converter.isHex(this.query, true) ? this.query : Converter.utf8ToHex(this.query, true);\n\n const promises = [\n this.tryFetchOutputs(\n async query => indexerPlugin.basicOutputs(query),\n { tagHex: tag },\n AssociationType.TAG\n ),\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { tagHex: tag },\n AssociationType.TAG\n )\n ];\n await Promise.all(promises);\n }\n\n public async fetchAssociatedOutputs() {\n const indexerPlugin = new IndexerPluginClient(this.client);\n\n const promises = [\n // Basic output\n this.tryFetchOutputs(\n async query => indexerPlugin.basicOutputs(query),\n { addressBech32: this.query },\n AssociationType.BASIC_OUTPUT\n ),\n\n // Basic output -> storage return address\n this.tryFetchOutputs(\n async query => indexerPlugin.basicOutputs(query),\n { storageDepositReturnAddressBech32: this.query },\n AssociationType.BASIC_STORAGE_RETURN\n ),\n\n // Basic output -> expiration return address\n this.tryFetchOutputs(\n async query => indexerPlugin.basicOutputs(query),\n { expirationReturnAddressBech32: this.query },\n AssociationType.BASIC_EXPIRATION_RETURN\n ),\n\n // Basic output -> sender address\n this.tryFetchOutputs(\n async query => indexerPlugin.basicOutputs(query),\n { senderBech32: this.query },\n AssociationType.BASIC_SENDER\n ),\n\n // Alias output -> state controller address\n this.tryFetchOutputs(\n async query => indexerPlugin.aliases(query),\n { stateControllerBech32: this.query },\n AssociationType.ALIAS_STATE_CONTROLLER\n ),\n\n // Alias output -> governor address\n this.tryFetchOutputs(\n async query => indexerPlugin.aliases(query),\n { governorBech32: this.query },\n AssociationType.ALIAS_GOVERNOR\n ),\n\n // Alias output -> issuer address\n this.tryFetchOutputs(\n async query => indexerPlugin.aliases(query),\n { issuerBech32: this.query },\n AssociationType.ALIAS_ISSUER\n ),\n\n // Alias output -> sender address\n this.tryFetchOutputs(\n async query => indexerPlugin.aliases(query),\n { senderBech32: this.query },\n AssociationType.ALIAS_SENDER\n ),\n\n // Foundry output -> alias address\n this.tryFetchOutputs(\n async query => indexerPlugin.foundries(query),\n { aliasAddressBech32: this.query },\n AssociationType.FOUNDRY_ALIAS\n ),\n\n // Nfts output\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { addressBech32: this.query },\n AssociationType.NFT_OUTPUT\n ),\n\n // Nft output -> storage return address\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { storageDepositReturnAddressBech32: this.query },\n AssociationType.NFT_STORAGE_RETURN\n ),\n\n // Nft output -> expiration return address\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { expirationReturnAddressBech32: this.query },\n AssociationType.NFT_EXPIRATION_RETURN\n ),\n\n // Nft output -> sender address\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { senderBech32: this.query },\n AssociationType.NFT_SENDER\n ),\n\n // Nft output -> issuer address\n this.tryFetchOutputs(\n async query => indexerPlugin.nfts(query),\n { issuerBech32: this.query },\n AssociationType.NFT_ISSUER\n )\n ];\n\n await Promise.all(promises);\n }\n\n\n private async tryFetchOutputs(\n fetch: (req: Record) => Promise,\n request: Record,\n association: AssociationType\n ) {\n const associatedOutputs = this.associatedOutputs;\n let cursor: string | undefined;\n\n do {\n try {\n const outputs = await fetch({ ...request, cursor });\n\n if (outputs.items.length > 0) {\n for (const outputId of outputs.items) {\n associatedOutputs.push({ outputId, association });\n }\n }\n\n cursor = outputs.cursor;\n } catch {}\n } while (cursor);\n }\n}\n","import { ALIAS_ADDRESS_TYPE, NFT_ADDRESS_TYPE } from \"@iota/iota.js\";\nimport { Converter, HexHelper } from \"@iota/util.js\";\nimport { IBech32AddressDetails } from \"../models/IBech32AddressDetails\";\nimport { Bech32AddressHelper } from \"./bech32AddressHelper\";\n\nexport interface SearchQuery {\n /**\n * The query string in lower case.\n */\n queryLower: string;\n /**\n * The did query.\n */\n did?: string;\n /**\n * The milestoneIndex query.\n */\n milestoneIndex?: number;\n /**\n * The milestoneId query.\n */\n milestoneId?: string;\n /**\n * The MaybeAddress query.\n */\n address?: IBech32AddressDetails;\n /**\n * The blockId or transactionId query.\n */\n blockIdOrTransactionId?: string;\n /**\n * The outputId query.\n */\n output?: string;\n /**\n * The aliasId query.\n */\n aliasId?: string;\n /**\n * The nftId query.\n */\n nftId?: string;\n /**\n * The foundryId query.\n */\n foundryId?: string;\n /**\n * The tag of an output.\n */\n tag?: string;\n}\n\n/**\n * Builds SearchQuery object from query stirng\n */\nexport class SearchQueryBuilder {\n /**\n * The query string.\n */\n private readonly query: string;\n\n /**\n * The query string in lower case.\n */\n private readonly queryLower: string;\n\n /**\n * Thed human readable part to use for bech32.\n */\n private readonly networkBechHrp: string;\n\n /**\n * Creates a new instance of SearchQueryBuilder.\n * @param query The query string.\n * @param networkBechHrp The network bechHrp.\n */\n constructor(query: string, networkBechHrp: string) {\n this.query = query;\n this.queryLower = query.toLowerCase();\n this.networkBechHrp = networkBechHrp;\n }\n\n /**\n * Builds the SearchQuery.\n * @returns the SearchQuery object.\n */\n public build(): SearchQuery {\n let blockIdOrTransactionId: string | undefined;\n let output: string | undefined;\n let aliasId: string | undefined;\n let nftId: string | undefined;\n let milestoneId: string | undefined;\n let foundryId: string | undefined;\n\n const milestoneIndex = /^\\d+$/.test(this.query) ? Number.parseInt(this.query, 10) : undefined;\n const address = Bech32AddressHelper.buildAddress(this.query, this.networkBechHrp);\n\n // if the hex without prefix has 64 characters it might be an AliasId, NftId or MilestoneId\n if (address?.hexNoPrefix && address.hexNoPrefix.length === 64) {\n aliasId = address.hex;\n nftId = address.hex;\n milestoneId = address.hex;\n }\n\n // if the hex without prefix has 66 characters, if might be and Alias or Nft Address\n if (address?.hexNoPrefix && address.hexNoPrefix.length === 66) {\n const typeByte = address.hexNoPrefix.slice(0, 2);\n const maybeAddress = address.hexNoPrefix.slice(2);\n\n if (Number.parseInt(typeByte, 10) === ALIAS_ADDRESS_TYPE) {\n aliasId = HexHelper.addPrefix(maybeAddress);\n }\n\n if (Number.parseInt(typeByte, 10) === NFT_ADDRESS_TYPE) {\n nftId = HexHelper.addPrefix(maybeAddress);\n }\n }\n\n const hexWithPrefix = HexHelper.addPrefix(this.queryLower);\n const hexNoPrefix = HexHelper.stripPrefix(this.queryLower);\n // if the hex without prefix is 76 characters and first byte is 08,\n // it can be a FoundryId or TokenId\n if (Converter.isHex(hexWithPrefix, true) &&\n Number.parseInt(hexNoPrefix.slice(0, 2), 16) === ALIAS_ADDRESS_TYPE && hexNoPrefix.length === 76) {\n foundryId = hexWithPrefix;\n }\n\n // if the hex has 66 characters, it might be a block or transaction id\n if (address?.hex && address.hex.length === 66) {\n blockIdOrTransactionId = address.hex;\n }\n\n // if the hex is 70 characters, try and look for an output\n if (address?.hex && address.hex.length === 70) {\n output = address.hex;\n }\n\n const tag = Converter.isHex(this.query, true) ? this.query : Converter.utf8ToHex(this.query, true);\n\n return {\n queryLower: this.queryLower,\n milestoneIndex,\n milestoneId,\n address,\n blockIdOrTransactionId,\n output,\n aliasId,\n nftId,\n foundryId,\n tag\n };\n }\n}\n","import { Bech32Helper, ClientError, IClient, ITaggedDataPayload, IBlockMetadata, IMilestonePayload, IRoutesResponse, INodeInfo, IOutputResponse, ITransactionPayload, SingleNodeClient, IndexerPluginClient, ALIAS_ADDRESS_TYPE, NFT_ADDRESS_TYPE } from \"@iota/iota.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IAssociatedOutput } from \"../models/tangle/IAssociatedOutputsResponse\";\nimport { ISearchRequest } from \"../models/tangle/ISearchRequest\";\nimport { ISearchResponse } from \"../models/tangle/ISearchResponse\";\nimport { Bech32AddressHelper } from \"../utils/bech32AddressHelper\";\nimport { OutputsHelper } from \"../utils/outputsHelper\";\nimport { SearchQuery, SearchQueryBuilder } from \"../utils/searchQueryBuilder\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle api requests.\n */\nexport class TangleService {\n /**\n * The node info.\n */\n private _nodeInfo?: INodeInfo;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of TangleService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n }\n\n /**\n * Get the routes the node exposes.\n * @returns The routes.\n */\n public async routes(): Promise {\n const client = this.buildClient();\n const routes = await client.routes();\n return routes;\n }\n\n /**\n * Get the node info.\n * @returns The node info.\n */\n public async info(): Promise {\n const client = this.buildClient();\n this._nodeInfo = await client.info();\n return this._nodeInfo;\n }\n\n /**\n * Find item on the stardust network.\n * @param request The earch query\n * @returns The item found.\n */\n public async search(request: ISearchRequest): Promise {\n const client = this.buildClient();\n const indexerPlugin = new IndexerPluginClient(client);\n\n if (!this._nodeInfo) {\n await this.info();\n }\n const bech32HRP = this._nodeInfo ? this._nodeInfo.protocol.bech32Hrp : Bech32Helper.BECH32_DEFAULT_HRP_MAIN;\n const searchQuery: SearchQuery = new SearchQueryBuilder(request.query, bech32HRP).build();\n\n if (searchQuery.milestoneIndex) {\n try {\n const milestone = await client.milestoneByIndex(searchQuery.milestoneIndex);\n\n return {\n milestone\n };\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.milestoneId) {\n try {\n const milestone = await client.milestoneById(searchQuery.milestoneId);\n\n return {\n milestone\n };\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.blockIdOrTransactionId) {\n try {\n const block = await client.block(searchQuery.blockIdOrTransactionId);\n\n if (Object.keys(block).length > 0) {\n return {\n block\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n\n try {\n const block = await client.transactionIncludedBlock(searchQuery.blockIdOrTransactionId);\n\n if (Object.keys(block).length > 0) {\n return {\n block\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.output) {\n try {\n return {\n outputId: searchQuery.output,\n output: await client.output(searchQuery.output)\n };\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.aliasId) {\n try {\n const aliasOutputs = await indexerPlugin.alias(searchQuery.aliasId);\n if (aliasOutputs.items.length > 0) {\n const address = Bech32AddressHelper\n .buildAddress(searchQuery.aliasId, bech32HRP, ALIAS_ADDRESS_TYPE);\n return {\n address,\n addressOutputIds: aliasOutputs.items\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.nftId) {\n try {\n const nftOutputs = await indexerPlugin.nft(searchQuery.nftId);\n if (nftOutputs.items.length > 0) {\n const address = Bech32AddressHelper\n .buildAddress(searchQuery.nftId, bech32HRP, NFT_ADDRESS_TYPE);\n return {\n address,\n addressOutputIds: nftOutputs.items\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.foundryId) {\n try {\n const foundryOutputs = await indexerPlugin.foundry(searchQuery.foundryId);\n if (foundryOutputs.items.length > 0) {\n return {\n outputId: foundryOutputs.items[0]\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.tag) {\n try {\n const taggedOutputs = await indexerPlugin.basicOutputs({ tagHex: searchQuery.tag });\n\n if (taggedOutputs.items.length > 0) {\n return {\n outputs: taggedOutputs.items\n };\n }\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n if (searchQuery.address?.hexNoPrefix && searchQuery.address?.hexNoPrefix.length === 64) {\n try {\n return {\n address: { ...searchQuery.address }\n };\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n return {};\n }\n\n /**\n * Get the block payload.\n * @param blockId The block to get.\n * @returns The response data.\n */\n public async payload(\n blockId: string): Promise {\n try {\n const client = this.buildClient();\n\n const block = await client.block(blockId);\n\n return block?.payload;\n } catch {}\n }\n\n /**\n * Get the output details.\n * @param outputId The output to get the details for.\n * @returns The details response.\n */\n public async outputDetails(\n outputId: string): Promise {\n try {\n const client = this.buildClient();\n\n return await client.output(outputId);\n } catch {}\n }\n\n /**\n * Get the nft output details.\n * @param nftId The nft id to get the details for.\n * @returns The nft output response.\n */\n public async nftDetails(\n nftId: string): Promise {\n try {\n const client = this.buildClient();\n const indexerPlugin = new IndexerPluginClient(client);\n\n const nftOutputs = await indexerPlugin.nft(nftId);\n if (nftOutputs.items.length > 0) {\n return { ...await client.output(nftOutputs.items[0]), outputId: nftOutputs.items[0] };\n }\n } catch {}\n }\n\n /**\n * Get the alias output details.\n * @param aliasId The alias id to get the details for.\n * @returns The alias output response.\n */\n public async aliasDetails(\n aliasId: string): Promise {\n try {\n const client = this.buildClient();\n const indexerPlugin = new IndexerPluginClient(client);\n\n const aliasOutputs = await indexerPlugin.alias(aliasId);\n if (aliasOutputs.items.length > 0) {\n return { ...await client.output(aliasOutputs.items[0]), outputId: aliasOutputs.items[0] };\n }\n } catch {}\n }\n\n /**\n * Get the output details.\n * @param addressBech32 The address to get the outputs for.\n * @returns The associated outputs.\n */\n public async getOutputsForAddress(\n addressBech32: string): Promise {\n let outputs: IAssociatedOutput[] = [];\n\n try {\n const client = this.buildClient();\n const helper = new OutputsHelper(addressBech32, client);\n await helper.fetchAssociatedOutputs();\n outputs = helper.associatedOutputs;\n } catch {}\n\n return outputs;\n }\n\n /**\n * Get the output details.\n * @param tag The tag to get the outputs for.\n * @returns The associated outputs.\n */\n public async getOutputsByTag(\n tag: string): Promise {\n let outputs: IAssociatedOutput[] = [];\n\n try {\n const client = this.buildClient();\n const helper = new OutputsHelper(tag, client);\n await helper.fetchOutputsByTag();\n outputs = helper.associatedOutputs;\n } catch {}\n\n return outputs;\n }\n\n /**\n * Get the miletsone details.\n * @param milestoneIndex The miletsone to get the details for.\n * @returns The details response.\n */\n public async milestoneDetails(\n milestoneIndex: number): Promise {\n try {\n const client = this.buildClient();\n\n return await client.milestoneByIndex(milestoneIndex);\n } catch {}\n }\n\n /**\n * Get the block metadata.\n * @param blockId The block if to get the metadata for.\n * @returns The details response.\n */\n public async blockDetails(blockId: string): Promise<{\n metadata?: IBlockMetadata;\n unavailable?: boolean;\n } | undefined> {\n try {\n const client = this.buildClient();\n\n const metadata = await client.blockMetadata(blockId);\n\n return {\n metadata\n };\n } catch (err) {\n if (err instanceof ClientError && this.checkForUnavailable(err)) {\n return {\n unavailable: true\n };\n }\n }\n }\n\n /**\n * Add a peer.\n * @param peerAddress The peer address.\n * @param peerAlias The peer alias.\n */\n public async peerAdd(peerAddress: string, peerAlias: string): Promise {\n const client = this.buildClient();\n\n await client.peerAdd(peerAddress, peerAlias);\n }\n\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n */\n public async peerDelete(peerId: string): Promise {\n const client = this.buildClient();\n\n await client.peerDelete(peerId);\n }\n\n\n /**\n * Build a client with auth header.\n * @returns The client.\n */\n private buildClient(): IClient {\n const headers = this._authService.buildAuthHeaders();\n\n return new SingleNodeClient(\n `${window.location.protocol}//${window.location.host}`,\n {\n basePath: \"/dashboard/api/\",\n headers\n });\n }\n\n /**\n * Check for the node being unavaialable.\n * @param error The error.\n * @returns unavailable if detected.\n */\n private checkForUnavailable(error: ClientError): boolean {\n return error.httpStatus === 503;\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class the help with themes.\n */\nexport class ThemeService {\n /**\n * The theme.\n */\n private _theme: string;\n\n /**\n * Create a new instance of ThemeService.\n */\n constructor() {\n this._theme = \"light\";\n }\n\n /**\n * Initialize the theme.\n */\n public initialize(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const theme = storageService.load(\"theme\");\n\n this.apply(theme, false);\n }\n\n /**\n * Apply a theme.\n * @param theme The theme to apply.\n * @param save Save the theme.\n */\n public apply(theme: string, save: boolean): void {\n const currentTheme = this._theme;\n this._theme = theme ?? \"light\";\n\n document.body.classList.remove(`theme-${currentTheme}`);\n document.body.classList.add(`theme-${this._theme}`);\n\n EventAggregator.publish(\"theme\", this._theme);\n\n if (save) {\n this.save();\n }\n }\n\n /**\n * Get the theme.\n * @returns The theme.\n */\n public get(): string {\n return this._theme;\n }\n\n /**\n * Save theme.\n */\n public save(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.save(\"theme\", this._theme);\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IVisualizerCounts } from \"../models/visualizer/IVisualizerCounts\";\nimport { IVisualizerVertex } from \"../models/visualizer/IVisualizerVertex\";\nimport { VisualizerVertexOperation } from \"../models/visualizer/visualizerVertexOperation\";\nimport { IConfirmedInfo } from \"../models/websocket/IConfirmedInfo\";\nimport { IMilestoneInfo } from \"../models/websocket/IMilestoneInfo\";\nimport { ISolidInfo } from \"../models/websocket/ISolidInfo\";\nimport { ITipInfo } from \"../models/websocket/ITipInfo\";\nimport { IVertex } from \"../models/websocket/IVertex\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { WebSocketService } from \"./webSocketService\";\n\n/**\n * Visualizer Service.\n */\nexport class VisualizerService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * Web socket subscriptions.\n */\n private _subscriptions: string[];\n\n /**\n * The known vertices.\n */\n private _vertices: {\n [id: string]: IVisualizerVertex;\n };\n\n /**\n * The ordered vertices.\n */\n private _verticesOrder: string[];\n\n /**\n * The counts.\n */\n private readonly _counts: IVisualizerCounts;\n\n /**\n * The maximum number of vertices.\n */\n private readonly _verticesLimit: number;\n\n /**\n * The vertex update callback.\n */\n private _vertexCallback?: (vertex: IVisualizerVertex, operation: VisualizerVertexOperation) => void;\n\n /**\n * The counts were updated callback.\n */\n private _countsCallback?: (counts: IVisualizerCounts) => void;\n\n /**\n * The referenced callback.\n */\n private _referencedCallback?: (id: string, excluded: string[], count: IVisualizerCounts) => void;\n\n /**\n * Create a new instance of VisualizerService.\n */\n constructor() {\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n this._verticesLimit = 5000;\n this._counts = {\n total: 0,\n solid: 0,\n referenced: 0,\n transactions: 0,\n conflicting: 0,\n tips: 0\n };\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n }\n\n /**\n * The callback triggered with vertex updates.\n * @param vertexCallback The vertex callback.\n * @param countsCallback The counts callback.\n * @param referencedCallback The referenced callback.\n */\n public subscribe(\n vertexCallback: (vertex: IVisualizerVertex, operation: VisualizerVertexOperation) => void,\n countsCallback: (counts: IVisualizerCounts) => void,\n referencedCallback: (id: string, excluded: string[], count: IVisualizerCounts) => void): void {\n this._subscriptions.push(\n this._webSocketService.subscribe(\n WebSocketTopic.Vertex,\n false,\n data => this.updateVertices(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.MilestoneInfo,\n false,\n data => this.updateMilestoneInfo(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.TipInfo,\n false,\n data => this.updateTipInfo(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.ConfirmedInfo,\n false,\n data => this.updateConfirmedInfo(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.SolidInfo,\n false,\n data => this.updateSolidInfo(data)\n ));\n\n this._vertexCallback = vertexCallback;\n this._countsCallback = countsCallback;\n this._referencedCallback = referencedCallback;\n }\n\n /**\n * Unsubscribe and cleanup.\n */\n public unsubscribe(): void {\n for (const subscription of this._subscriptions) {\n this._webSocketService.unsubscribe(subscription);\n }\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n\n // reset counts\n this._counts.total = 0;\n this._counts.solid = 0;\n this._counts.referenced = 0;\n this._counts.transactions = 0;\n this._counts.conflicting = 0;\n this._counts.tips = 0;\n }\n\n /**\n * Add a new vertex.\n * @param vert The vertex to add.\n */\n private updateVertices(vert?: IVertex): void {\n if (vert) {\n const shortVertId = vert.id.slice(0, 10);\n\n let vertex = this._vertices[shortVertId];\n\n let op: VisualizerVertexOperation = \"add\";\n\n if (vertex) {\n op = \"update\";\n // can only go from unsolid to solid\n if (!vertex.isSolid && vert.isSolid) {\n this._counts.solid++;\n }\n if (!vertex.isReferenced && vert.isReferenced) {\n this._counts.referenced++;\n }\n if (!vertex.isConflicting && vert.isConflicting) {\n this._counts.conflicting++;\n }\n if (!vertex.isTip && vert.isTip) {\n this._counts.tips++;\n }\n } else {\n if (vert.isSolid) {\n this._counts.solid++;\n }\n if (vert.isReferenced) {\n this._counts.referenced++;\n }\n if (vert.isTransaction) {\n this._counts.transactions++;\n }\n if (vert.isConflicting) {\n this._counts.conflicting++;\n }\n if (vert.isTip) {\n this._counts.tips++;\n }\n\n this._verticesOrder.push(shortVertId);\n this.checkLimit();\n\n vertex = {\n fullId: vert.id,\n shortId: shortVertId\n };\n }\n\n vertex.parents = vert.parents;\n vertex.isSolid = vert.isSolid;\n vertex.isReferenced = vert.isReferenced;\n vertex.isTransaction = vert.isTransaction;\n vertex.isConflicting = vert.isConflicting;\n vertex.isMilestone = vert.isMilestone;\n vertex.isTip = vert.isTip;\n vertex.isSelected = vert.isSelected;\n\n this._vertices[shortVertId] = vertex;\n\n this._counts.total = this._verticesOrder.length;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, op);\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n\n /**\n * Check the number of vertices.\n */\n private checkLimit(): void {\n while (this._verticesOrder.length > this._verticesLimit) {\n const deleteId = this._verticesOrder.shift();\n\n if (deleteId) {\n const vertex = this.removeVertex(deleteId);\n\n if (vertex?.parents) {\n for (const parent of vertex.parents) {\n this.removeVertex(parent);\n }\n }\n }\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n\n /**\n * Delete a vertex.\n * @param vertexId The id of the vertex to delete.\n * @returns The deleted vertex.\n */\n private removeVertex(vertexId: string | undefined): IVisualizerVertex | undefined {\n if (!vertexId) {\n return;\n }\n let vertex = this._vertices[vertexId];\n if (vertex) {\n if (vertex.isSolid) {\n this._counts.solid--;\n }\n if (vertex.isReferenced) {\n this._counts.referenced--;\n }\n if (vertex.isTransaction) {\n this._counts.transactions--;\n }\n if (vertex.isConflicting) {\n this._counts.conflicting--;\n }\n if (vertex.isTip) {\n this._counts.tips--;\n }\n delete this._vertices[vertexId];\n } else {\n vertex = { shortId: vertexId };\n }\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"delete\");\n }\n\n return vertex;\n }\n\n /**\n * Update the tip information.\n * @param data The tip info data.\n */\n private updateTipInfo(data?: ITipInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n if (vertex) {\n this._counts.tips += data.isTip ? 1 : (vertex.isTip ? -1 : 0);\n vertex.isTip = data.isTip;\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n\n /**\n * Update the milestone information.\n * @param data The milestone info data.\n */\n private updateMilestoneInfo(data?: IMilestoneInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n if (vertex) {\n vertex.isMilestone = true;\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n }\n }\n }\n\n /**\n * Update the confirmed information.\n * @param data The confirmed info data.\n */\n private updateConfirmedInfo(data?: IConfirmedInfo) {\n if (data) {\n for (const id of data.ids) {\n const vertex = this._vertices[id];\n if (vertex && !vertex.isReferenced) {\n if (this._referencedCallback) {\n this._referencedCallback(id, data.excludedIds ?? [], this._counts);\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n }\n\n /**\n * Update the solid information.\n * @param data The solid info data.\n */\n private updateSolidInfo(data?: ISolidInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n if (vertex && !vertex.isSolid) {\n vertex.isSolid = true;\n this._counts.solid++;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-add-event-listener, unicorn/prefer-node-protocol*/\nimport { Converter, RandomHelper } from \"@iota/util.js\";\nimport { Buffer } from \"buffer\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IWebSocketMessage } from \"../models/websocket/IWebSocketMessage\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"./authService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class WebSocketService {\n /**\n * Timer to retry failed connections.\n */\n private _reconnectTimer?: NodeJS.Timer;\n\n /**\n * The last time we received a message.\n */\n private _lastMessage: number;\n\n /**\n * The web socket connection.\n */\n private _webSocket?: WebSocket;\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]:\n {\n requiresAuth: boolean;\n isSubscribed: boolean;\n subs: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: any) => void;\n }[];\n };\n };\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of WebSocketService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n\n this._subscriptions = {};\n this._lastMessage = 0;\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param requiresAuth Requires authentication.\n * @param callback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(topic: WebSocketTopic, requiresAuth: boolean, callback: (data: T) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = {\n requiresAuth,\n isSubscribed: false,\n subs: []\n };\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].subs.push({\n subscriptionId,\n callback\n });\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n // If we are already connected just subscribe to the topic.\n this.subscribeTopic(topic);\n } else if (!this._webSocket) {\n // Otherwise connect the socket which will in turn subscribe to\n // all the topics with callbacks.\n this.connectSocket();\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].subs.findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].subs.splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].subs.length === 0) {\n this.unsubscribeTopic(topic);\n // No more subscriptions for this topic so unsubscribe the topic.\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n\n // No more subscriptions so disconnect the socket.\n if (Object.keys(this._subscriptions).length === 0) {\n this.clearTimer();\n this.disconnectSocket();\n }\n }\n\n /**\n * We resubscribe if the authentication, jwt token has been updated.\n */\n public resubscribe(): void {\n const topics = Object.keys(this._subscriptions).map(Number);\n for (const topic of topics) {\n this.unsubscribeTopic(topic);\n }\n\n // If the socket is not yet open dont subscribe again\n // when the socket open completes the subscribeTopics will\n // be called automatically\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n for (const topic of topics) {\n this.subscribeTopic(topic);\n }\n }\n }\n\n /**\n * Connect the web socket.\n */\n private connectSocket(): void {\n this.clearTimer();\n this.disconnectSocket();\n\n let uri = \"ws:\";\n\n if (window.location.protocol === \"https:\") {\n uri = \"wss:\";\n }\n uri += `//${window.location.hostname}:${window.location.port}/dashboard/ws`;\n\n this._webSocket = new WebSocket(uri);\n\n this._webSocket.onopen = () => {\n // Socket has opened so subscribe for all the registered subscription topics\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n this.subscribeTopic(topic);\n }\n };\n\n this._webSocket.onclose = () => {\n this.disconnectSocket();\n };\n\n this._webSocket.onerror = err => {\n console.error(\"Socket error\", err);\n };\n\n this._webSocket.onmessage = msg => {\n this._lastMessage = Date.now();\n this.handleMessage(msg.data as string);\n };\n\n this._lastMessage = Date.now();\n this._reconnectTimer = setInterval(() => this.reconnect(), 5000);\n }\n\n /**\n * Disconnect the web socket.\n */\n private disconnectSocket(): void {\n if (this._webSocket) {\n try {\n if (this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.close();\n }\n } catch {}\n this._webSocket = undefined;\n }\n }\n\n /**\n * Clear the timer.\n */\n private clearTimer(): void {\n if (this._reconnectTimer) {\n clearInterval(this._reconnectTimer);\n this._reconnectTimer = undefined;\n }\n }\n\n /**\n * Subscribe to a topic.\n * @param topicId The topic to subscribe to.\n */\n private subscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]) {\n const requiresAuth = this._subscriptions[topicId].requiresAuth;\n const jwt = this._authService.isLoggedIn();\n\n if (!requiresAuth || (requiresAuth && jwt)) {\n this._subscriptions[topicId].isSubscribed = true;\n\n const arrayBuf = new ArrayBuffer(2 + (jwt && requiresAuth ? jwt.length : 0));\n const view = new Uint8Array(arrayBuf);\n view[0] = 0; // register\n view[1] = topicId;\n\n if (jwt && requiresAuth) {\n view.set(Buffer.from(jwt), 2);\n }\n\n if (this._webSocket) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n }\n\n /**\n * Unsubscribe from a topic.\n * @param topicId The topic to unsubscribe from.\n */\n private unsubscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]?.isSubscribed) {\n this._subscriptions[topicId].isSubscribed = false;\n\n const arrayBuf = new ArrayBuffer(2);\n const view = new Uint8Array(arrayBuf);\n view[0] = 1; // unregister\n view[1] = topicId;\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n\n /**\n * Handle the messages.\n * @param msg The mesage data.\n */\n private handleMessage(msg: string): void {\n const message = JSON.parse(msg) as IWebSocketMessage;\n\n if (this._subscriptions[message.type]) {\n for (const subscriber of this._subscriptions[message.type].subs) {\n subscriber.callback(message.data);\n }\n }\n }\n\n /**\n * Reconnect if we have not received messages.\n */\n private reconnect(): void {\n // Only reconnect if we have subscriptions.\n if (Object.keys(this._subscriptions)) {\n const now = Date.now();\n if (now - this._lastMessage > 10000) {\n this.connectSocket();\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-top-level-await */\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport App from \"./app/App\";\nimport Participation from \"./app/components/plugins/Participation\";\nimport Poi from \"./app/components/plugins/ProofOfInclusion\";\nimport Spammer from \"./app/components/plugins/Spammer\";\nimport { ServiceFactory } from \"./factories/serviceFactory\";\nimport \"./index.scss\";\nimport { IBrandConfiguration } from \"./models/IBrandConfiguration\";\nimport { AuthService } from \"./services/authService\";\nimport { EventAggregator } from \"./services/eventAggregator\";\nimport { LocalStorageService } from \"./services/localStorageService\";\nimport { MetricsService } from \"./services/metricsService\";\nimport { NodeConfigService } from \"./services/nodeConfigService\";\nimport { PluginService } from \"./services/pluginService\";\nimport { SessionStorageService } from \"./services/sessionStorageService\";\nimport { SettingsService } from \"./services/settingsService\";\nimport { TangleService } from \"./services/tangleService\";\nimport { ThemeService } from \"./services/themeService\";\nimport { VisualizerService } from \"./services/visualizerService\";\nimport { WebSocketService } from \"./services/webSocketService\";\nimport { BrandHelper } from \"./utils/brandHelper\";\n\ninitServices()\n .then(brandConfiguration => {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const container = document.querySelector(\"#root\")!;\n const root = createRoot(container);\n root.render(\n !brandConfiguration\n ? (
    REACT_APP_BRAND_ID is not set
    )\n : (\n \n \n \n )\n );\n })\n .catch(err => console.error(err));\n\n/**\n * Initialise the services.\n * @returns The brand configuration.\n */\nasync function initServices(): Promise {\n ServiceFactory.register(\"local-storage\", () => new LocalStorageService());\n ServiceFactory.register(\"session-storage\", () => new SessionStorageService());\n const settingsService = new SettingsService();\n ServiceFactory.register(\"settings\", () => settingsService);\n\n const authService = new AuthService();\n await authService.initialize();\n ServiceFactory.register(\"auth\", () => authService);\n\n const webSocketService = new WebSocketService();\n ServiceFactory.register(\"web-socket\", () => webSocketService);\n ServiceFactory.register(\"tangle\", () => new TangleService());\n ServiceFactory.register(\"plugin\", () => new PluginService());\n\n const themeService = new ThemeService();\n themeService.initialize();\n ServiceFactory.register(\"theme\", () => themeService);\n\n const nodeConfigService = new NodeConfigService();\n await nodeConfigService.initialize();\n ServiceFactory.register(\"node-config\", () => nodeConfigService);\n\n const metricsService = new MetricsService();\n ServiceFactory.register(\"metrics\", () => metricsService);\n metricsService.initialize();\n\n ServiceFactory.register(\"visualizer\", () => new VisualizerService());\n\n EventAggregator.subscribe(\"auth-state\", \"init\", async () => {\n webSocketService.resubscribe();\n await Spammer.initPlugin();\n await Participation.initPlugin();\n });\n\n EventAggregator.subscribe(\"online\", \"init\", async o => {\n if (o) {\n await nodeConfigService.initialize();\n webSocketService.resubscribe();\n }\n });\n\n await Spammer.initPlugin();\n await Participation.initPlugin();\n await Poi.initPlugin();\n\n settingsService.initialize();\n\n return BrandHelper.initialize();\n}\n"],"names":["addEventListener","removeEventListener","el","eventName","listener","useCapture","Events","document","add","stdAttach","rm","stdDetach","oldIEAttach","oldIEDetach","module","exports","Error","attachEvent","detachEvent","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","indexOf","start","end","num","output","bigInt","undefined","BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseBase","parseValue","BigInteger","value","sign","this","isSmall","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","trim","compareAbs","createArray","x","truncate","ceil","a","b","sum","l_a","l_b","r","carry","base","addAny","addSmall","l","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","j","multiplySmall","shiftLeft","concat","multiplyKaratsuba","y","max","slice","d","c","ac","bd","abcd","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","negate","abs","comparison","quotientDigit","shift","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","modPow","prototype","Object","create","plus","subtractAny","minus","small","multiply","l1","l2","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","t","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","xor","LOBMASK_I","roughLOB","integerLogarithm","p","e","min","gcd","text","toLowerCase","absBase","alphabetValues","digits","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","out","left","digit","toBaseString","stringify","parseStringValue","split","decimalPlace","test","parseNumberValue","toArray","str","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","hasOwnProperty","define","base64","require","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","obj","isBuffer","checked","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","list","pos","set","swap16","swap32","swap64","toLocaleString","inspect","replace","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","writable","configurable","name","stack","message","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","constructor","table","i16","BufferBigIntNotDefined","hasOwn","classNames","classes","argType","inner","key","default","x1","y1","x2","y2","x3","y3","x4","y4","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","greek","mo","w","h","s","ms","decimal","ARABIC_DIGITS","LANGUAGES","af","ar","getArabicForm","delimiter","_formatCount","count","replacements","assign","characters","character","has","bg","getSlavicForm","bn","ca","cs","getCzechOrSlovakForm","cy","da","de","en","eo","es","et","eu","fa","fi","fo","fr","gr","he","hr","mod10","hu","id","is","it","ja","km","kn","ko","ku","getLithuanianForm","lv","getLatvianForm","mk","mr","nl","no","pl","getPolishForm","pt","ro","ru","sq","sr","ta","te","uk","ur","sk","sl","sv","sw","_numberFirst","tr","th","vi","zh_CN","zh_TW","humanizer","passedOptions","humanizerOptions","options","piece","unitName","unitMS","unitCount","dictionary","languagesFromOptions","language","fallbacks","languageToTry","languages","getDictionary","pieces","unitMeasures","expValue","maxDecimalPoints","unitCountFloat","parseFloat","toFixed","ratioToLargerUnit","previousPiece","firstOccupiedUnitIndex","round","largest","conjunction","serialComma","doHumanization","spacer","humanizeDuration","countStr","word","dictionaryValue","destination","source","prop","getSupportedLanguages","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","LN2","hookCallback","some","hooks","setHookCallback","callback","isObject","hasOwnProp","isObjectEmpty","k","isUndefined","isNumber","isDate","Date","arrLen","extend","createUTC","format","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","args","argLen","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","degree","betweenness","closeness","eccentricity","graph","oriented","currentNode","Q","S","pred","dist","sigma","delta","centrality","forEachNode","node","singleSourceShortestPath","accumulate","setDeltaToZero","pop","coeff","predcessors","idx","nodeId","forEachLinkedNode","toId","otherNode","processNode","distances","reachableNodesTotal","totalDistance","reduce","inDegreeCalculator","links","outDegreeCalculator","fromId","inoutDegreeCalculator","kind","getNodeDegree","getLinks","maxDist","subject","reservedWords","validateSubject","eventsStorage","registeredEvents","on","ctx","handlers","off","callbacks","splice","fire","fireArguments","callbackInfo","createEventsStorage","augment","settings","physicsSettings","physicsSimulator","createSimulator","nodeMass","nodeBodies","springs","bodiesCount","springTransform","noop","initBody","forEachLink","initLink","onGraphChanged","wasStable","api","step","lastMove","isStable","isStableNow","getNodePosition","getInitializedBody","setNodePosition","body","setPosition","invalidateBBox","getLinkPosition","linkId","spring","getGraphRect","getBBox","forEachBody","cb","bodyId","pinNode","isPinned","isNodePinned","dispose","getBody","getSpring","link","hasLink","simulator","eventify","changes","change","changeType","releaseNode","releaseLink","getNodesCount","getNode","position","neighbors","maxNeighbors","otherBody","getNeighborBodies","getBestNewBodyPosition","addBodyAt","updateBodyMass","isNodeOriginallyPinned","removeBody","fromBody","toBody","addSpring","removeSpring","mass","jsonGraph","nodeTransform","linkTransform","stored","JSON","parse","createGraph","nodes","parsedNode","addNode","addLink","ladder","complete","g","completeBipartite","balancedBinTree","level","root","right","path","circularLadder","grid","grid3","z","noLinks","wattsStrogatz","seed","neighborsSize","nextDouble","newTo","needsRewire","removeLink","cliqueCircle","cliqueCount","cliqueSize","appendClique","inputSeed","Generator","randomIterator","customRandom","localRandom","shuffle","maxValue","uniform","gaussian","sqrt","multigraph","uniqueLinkId","multiEdges","nodesCount","suspendEvents","objectKeysIterator","forInIterator","createLink","makeLinkId","isMultiEdge","getLink","Link","recordLinkChange","recordNodeChange","enterModification","exitModification","graphPart","fromNode","toNode","addLinkToNode","removeNode","getLinksCount","forEachOrientedLink","linkedNodeId","forEachNonOrientedLink","beginUpdate","endUpdate","clear","hasNode","realOn","enterModificationReal","exitModificationReal","recordLinkChangeReal","recordNodeChangeReal","monitorSubscribers","Node","prevLinks","indexOfElementInArray","fromNodeId","toNodeId","element","merge","targetHasIt","optionsValueType","Body","Vector2d","prevPos","force","velocity","Body3d","Vector3d","reset","Spring","expose","createQuadTree","springLength","springCoeff","gravity","theta","dragCoeff","timeStep","createBounds","createDragForce","createSpringForce","integrate","integrator","createBody","bodies","quadTree","bounds","springForce","dragForce","bboxNeedsUpdate","publicApi","insertBodies","updateBodyForce","update","accumulateForces","movement","addBody","body1","body2","springWeight","springCoefficient","getTotalMovement","getBestNewPosition","box","boundingBox","MAX_VALUE","MIN_VALUE","graphRect","baseX","baseY","physics","dx","tx","dy","ty","vx","vy","weight","getChild","quad0","quad1","quad2","quad3","setChild","child","InsertStack","isSamePosition","updateQueue","insertStack","nodesCache","currentInCache","newNode","bottom","insert","getRoot","sourceBody","queue","fx","fy","queueLength","shiftIdx","pushIdx","differentBody","massX","massY","newOptions","newBody","isEmpty","stackItem","oldBody","retriesCount","quadIdx","popIdx","InsertStackElement","point1","point2","randomFunc","customNodeTransform","customLinkTransform","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","encodeURIComponent","segment","attachKeys","re","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","Set","ea","ha","ia","window","createElement","ka","la","ma","f","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","substring","tb","menuitem","area","br","col","embed","img","keygen","meta","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","current","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","ee","fe","ge","ie","le","color","email","password","search","tel","url","me","ne","oe","event","listeners","pe","qe","se","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","D","of","pf","qf","rf","sf","bind","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","nk","ok","pk","Y","Z","qk","rk","tk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","ol","ql","rl","unmount","unstable_scheduleHydration","querySelectorAll","form","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","svg","compileTemplate","domEvents","svgns","xlinkns","attrBag","svgElement","compiledTempalte","simplesvg","attr","append","dataSource","content","removeAttributeNS","getAttributeNS","attributes","parser","svgText","namespaces","tagLength","addNamespaces","parseFromString","domNode","allBindings","extractAllBindings","changeModel","BINDING_EXPR","hasChildNodes","domChildren","childNodes","modelNameMatch","modelPropertyName","propertyBindings","textSetter","bindTextContent","attrs","bindDomAttribute","domAttribute","attrName","localName","attributeSetter","fail","DOMParser","createDomparser","betweennessCentrality","toVivaGraphCentralityFormat","degreeCentrality","density","directed","graphics","nodeEvents","bindDragNDrop","events","nodeUI","getNodeUI","dragndrop","onStart","onDrag","onStop","release","drag","scroll","prevSelectStart","prevDragStart","dragObject","startX","startY","touchInProgress","pinchZoomLength","move","handleDisabledEvent","handleMouseMove","handleMouseDown","documentEvents","handleMouseUp","onselectstart","ondragstart","handleMouseWheel","mousePos","posx","posy","getMousePos","elementOffset","findElementPosition","relMousePos","updateScrollEvents","scrollCallback","browserInfo","browser","getPinchZoomLength","finger1","finger2","handleTouchMove","touch","currentPinchLength","handleTouchEnd","handleTouchStart","handleSignleFingerTouch","onScroll","inputEvents","createInputEvents","draggedNode","internalHandlers","mouseDown","mouseCapture","mouseUp","releaseMouseCapture","mouseMove","userSettings","maxX","maxY","rand","Rect","layoutLinks","placeNodeCallback","layoutNodes","ensureNodeInitialized","updateGraphRect","updateNodePositions","ensureLinkInitialized","run","iterationsCount","placeNode","newPlaceNodeCallbackOrNode","stop","backwardCompatible","userAgent","nullEvents","handler","createDocumentEvents","curleft","curtop","offsetParent","offsetLeft","offsetTop","container","clientWidth","clientHeight","intersect","scope","lastTime","vendors","global","requestAnimationFrame","vendorPrefix","cancelAnimationFrame","currTime","timeToCall","intervalId","startTimer","stopTimer","restart","createTimer","inputManager","animationTimer","containerDrag","layout","interactive","rendererInitialized","updateCenterRequired","userInteraction","isPaused","transform","offsetX","offsetY","scale","publicEvents","forceDirected","svgGraphics","renderLinks","prerender","domInputManager","prepareSettings","init","createNodeUi","createLinkUi","updateCenter","windowEvents","onWindowResized","releaseContainerDragManager","isInteractive","translateRel","renderGraph","scaleOffset","scrollPoint","listenNodeEvents","releaseGraphEvents","listenToEvents","timer","onRenderFrame","renderIterations","resetScale","pause","resume","rerender","zoomOut","zoomIn","getTransform","moveTo","graphCenterChanged","getGraphics","getLayout","removeLinkUi","releaseNodeEvents","removeNodeUi","interactionName","beginRender","renderNodes","endRender","resetStable","containerSize","getDimension","cx","nodePosition","linkPosition","wasPinned","oldPos","processNodeChange","processLinkChange","scaleFactor","svgContainer","svgRoot","initCallback","actualScale","allNodes","allLinks","nodeBuilder","nodePositionCallback","linkBuilder","linkPositionCallback","linkUI","fromPos","toPos","fireRescaled","cachedPos","cachedFromPos","cachedToPos","updateTransform","createSvgRoot","getLinkUI","builderCallback","newPlaceCallback","placeLink","newPlaceLinkCallback","createSVGPoint","getCTM","origin","matrixTransform","inverse","createSVGMatrix","translate","childElementCount","getGraphicsRoot","callbackWhenReady","getSvgRoot","enableBlending","preserveDrawingBuffer","clearColor","clearColorValue","graphicsRoot","userPlaceNodeCallback","userPlaceLinkCallback","linksCount","linkProgram","webglLinkProgram","nodeProgram","webglNodeProgram","nodeUIBuilder","webglSquare","linkUIBuilder","webglLine","updateTransformUniform","resetScaleInternal","updateSize","offsetWidth","offsetHeight","viewport","webglInputManager","bringLinkToFront","srcLinkId","frontLinkId","getFrontLinkId","bringToFront","boundPosition","uiid","createNode","contextParameters","getContext","alert","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","COLOR_BUFFER_BIT","load","isSupported","linkIdToRemove","lastLinkUI","nodeIdToRemove","lastNodeUI","replaceProperties","omitLinksRendering","setNodeProgram","newProgram","setLinkProgram","transformClientToGraphCoordinates","transformGraphToClientCoordinates","getNodeAtClientPos","clientPos","preciseCheck","parsedColor","canvas","isDirty","copyArrayPart","elementsCount","swapArrayPart","createProgram","vertexShaderSrc","fragmentShaderSrc","program","vs","createShader","VERTEX_SHADER","fs","FRAGMENT_SHADER","attachShader","getProgramParameter","LINK_STATUS","getShaderInfoLog","extendArray","itemsInBuffer","elementsPerItem","extendedArray","Float32Array","getLocations","uniformOrAttributeNames","foundLocations","getAttribLocation","getUniformLocation","shaderText","shader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","Texture","tilesPerTexture","dirtyTimeoutId","tilesPerRow","tileSize","lastLoadedIdx","loadedImages","skipedDirty","textures","trackedUrls","clearDirty","remove","imgUrl","coordinates","tileToRemove","getTileCoordinates","markDirty","getTextures","getCoordinates","Image","imgId","crossOrigin","onload","tileNumber","tilePosition","textureNumber","texture","createTexture","currentTexture","drawImage","row","drawAt","absolutePosition","localTileNumber","markDirtyNow","fromCanvas","toCtx","_texture","WebglAtlas","glUtils","atlas","utils","locations","sizeDirty","ATTRIBUTES_PER_PRIMITIVE","nodesFS","nodesVS","glContext","useProgram","uniform1f","enableVertexAttribArray","vertexPos","customAttributes","replacedNode","newTransform","bindBuffer","ARRAY_BUFFER","bufferData","DYNAMIC_DRAW","uniformMatrix4fv","uniform2f","screenSize","vertexAttribPointer","FLOAT","BYTES_PER_ELEMENT","nativeObject","refreshTexture","ensureAtlasTextureUpdated","drawArrays","TRIANGLES","deleteTexture","activeTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","uniform1i","webglGraphics","webglInputEvents","boundRect","mouseCapturedNode","mouseEnterCallback","mouseLeaveCallback","mouseDownCallback","mouseUpCallback","mouseMoveCallback","clickCallback","dblClickCallback","lastFound","lastUpdate","lastClickTime","invoke","updateBoundRect","getBoundingClientRect","clickTime","nodeAtClientPos","sameNode","startListen","mouseEnter","mouseLeave","click","dblClick","half","callbacksChain","parseColor","BYTES_PER_LINK","Uint32Array","linksFS","linksVS","storage","positions","colors","linkUi","extendedStorage","extendedPositions","extendedColors","ensureEnoughStorage","LINES","BYTES_PER_NODE","POINTS","Viva","lazyExtend","Graph","serializer","loadFromJSON","storeToJSON","operations","geom","intersectRect","webgl","generator","Input","Utils","Layout","constant","View","webglAtlas","webglImageNodeProgram","webglImage","_webglUtil","renderer","cssGraphics","svgNodeFactory","community","BrowserInfo","webpackAsyncContext","req","__webpack_require__","ids","webpackContext","webpackContextResolve","ReferenceError","__esModule","Constructor","_defineProperties","protoProps","staticProps","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","_getPrototypeOf","__proto__","subClass","superClass","sham","Proxy","Boolean","_typeof","assertThisInitialized","_setPrototypeOf","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","getProto","ns","def","definition","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","doneFns","head","toStringTag","nmd","paths","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Context","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_inheritsLoose","_extends","isAbsolute","pathname","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","every","aValue","bValue","invariant","condition","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","canGo","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","newValue","changedBits","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","emitter","_proto","nextProps","oldValue","_Component2","_this2","onUpdate","observedBits","_proto2","_objectWithoutPropertiesLoose","excluded","sourceKeys","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","RouterContext","HistoryContext","Lifecycle","onMount","prevProps","onUnmount","cacheCount","generatePath","compilePath","Redirect","computedMatch","matchPath","cacheKey","pathCache","regexp","Route","isEmptyChildren","createURL","staticHandler","methodName","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","rest","ex","isModifiedEvent","isDuplicateNavigation","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","_defineProperty","ownKeys","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_superPropBase","_get","receiver","desc","_inherits","_isNativeReflectConstruct","_assertThisInitialized","_possibleConstructorReturn","_createSuper","_path","_excluded","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","SvgExplorer","title","titleId","viewBox","xmlns","SvgHome","_path2","_path3","_path4","SvgMoon","SvgPadlockUnlocked","SvgPadlock","SvgPeers","fillRule","clipRule","_path5","_path6","_path7","_path8","_path9","SvgPlugins","SvgSun","WebSocketTopic","SvgVisualizer","ServiceFactory","instanceCallback","_services","_instances","EventAggregator","subscriberId","_subscriptions","BrandHelper","_brandId","_brandConfiguration","theme","logo","banner","process","AsyncComponent","Breakpoint","_resize","resize","isVisible","calculateVisible","windowSize","innerWidth","aboveBelow","SIZE_BREAKPOINTS","Bech32","humanReadablePart","encode5BitArray","to5Bit","data5Bit","checksum","createChecksum","SEPARATOR","CHARSET","bech","decodeTo5BitArray","from5Bit","separatorPos","verifyChecksum","convertBits","fiveBit","bech32Text","expanded","humanReadablePartExpand","polymod","chk","GENERATOR","fromBits","toBits","padding","maxV","B1T6","TRITS_PER_TRYTE","startIndex","rem","trunc","quo","TRYTE_VALUE_TO_TRITS","Blake2b","outlen","_v","_m","compress","BLAKE2B_IV32","keylen","b2bGet32","b2bG","SIGMA82","o0","o1","b0","ix","iy","x0","y0","add64AA","add64AC","xor0","xor1","b2b","SIZE_160","final","SIZE_256","SIZE_512","SIGMA8","Curl","rounds","NUMBER_OF_ROUNDS","_state","Int8Array","STATE_LENGTH","_rounds","HASH_LENGTH","trits","curlState","stateCopy","lastVal","nextVal","TRUTH_TABLE","Sha1","blocks","h0","h1","h2","h3","h4","hBytes","lastByteIndex","finalized","hashed","_SHIFT","finalize","_EXTRA","Sha256","_blocks","SIZE_224","_h0","_h1","_h2","_h3","_h4","_h5","_h6","_h7","_bits","_block","_start","_bytes","_hBytes","_lastByteIndex","_finalized","_hashed","_first","SHIFT","h5","h6","h7","EXTRA","s0","s1","maj","t1","Sha512","SIZE_384","_h0h","_h0l","_h1h","_h1l","_h2h","_h2l","_h3h","_h3l","_h4h","_h4l","_h5h","_h5l","_h6h","_h6l","_h7h","_h7l","h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","s0h","s0l","s1h","s1l","c3","c4","abh","abl","dah","dal","cdh","cdl","bch","bcl","majh","majl","t1h","t1l","t2h","t2l","chh","chl","RandomHelper","randomPolyfill","randomBytes","crypto","getRandomValues","Base32","base32","_ALPHABET","Base58","base58","zeroes","b256","_ALPHABET_REVERSE","b58","Base64","getLengths","calcByteLength","_REVERSE_LOOKUP","_LOOKUP","tripletToBase64","HexHelper","BIG_INT_MAX_256_BIT","addPrefix","hex","stripPrefix","startsWith","Converter","utf8","charcode","includePrefix","buildHexLookups","ENCODE_LOOKUP","strippedHex","sizeof","DECODE_LOOKUP","bytesToHex","bytesToUtf8","hexToBytes","allowPrefix","localHex","padStart","binary","decode","BigIntHelper","v0","generate","ReadStream","readStartIndex","_storage","_readIndex","readIndex","moveIndex","hasRemaining","unused","read8","read32","WriteStream","CHUNK_SIZE","_writeIndex","writeIndex","strippedVal","expand","write8","write32","additional","newArr","HmacSha256","_sha256","_oKeyPad","iKeyPad","innerHash","finalSha256","HmacSha512","_sha512","finalSha512","Pbkdf2","salt","deriveKey","pass","sum256","macLength","sumFunc","DK","block1","destPos","english","Bip39","wordlistData","joiningChar","_wordlist","_joiningChar","entropyToMnemonic","entropy","setWordList","bin","entropyChecksumBits","mnemonic","wordIndexBits","wordIndex","mnemonicBytes","normalize","sha512","words","dividerIndex","entropyBits","checksumBits","newChecksum","ArrayHelper","BIG_1_SHIFTL_20","BIG_1_SHIFTL_24","BIG_1_SHIFTL_25","BIG_ARR","BIG_38","BIG_666643","BIG_470296","BIG_654183","BIG_997805","BIG_136657","BIG_683901","BIG_2097151","BIG_8388607","FieldElement","Int32Array","FIELD_ELEMENT_SIZE","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","f12","f32","f52","f72","f92","g0","g1","g2","g3","g4","g5","g6","g7","g8","g9","g119","g219","g319","g419","g519","g619","g719","g819","g919","h8","h9","combine","c0","c5","c6","c7","c8","c9","internalSquare","f02","f22","f42","f62","f538","f619","f738","f819","f938","read4","read3","toBytes","t0","t2","t3","CachedGroupElement","yPlusX","yMinusX","T2d","CompletedGroupElement","xy2d","PreComputedGroupElement","cMove","minusT","bNegative","negative","bAbs","CONST_BASE","equal","CONST_D","CONST_D2","CONST_SQRT_M1","CONST_ORDER","CONST_BI","ProjectiveGroupElement","square2","recip","invert","aSlide","bSlide","ExtendedGroupElement","A2","slide","toCached","double","toExtended","mixedAdd","mixedSub","toProjective","cachedGroupElement","cacheGroupElement","projectiveGroupElement","v3","vxx","fromBytes","pow22523","tmpX","tmp2","isNonZero","selectPoint","xBytes","yBytes","zBytes","scalarReduce","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","Ed25519","privateKey","privateKeyFromSeed","SEED_SIZE","publicKey","publicKeyFromPrivateKey","scalarMultBase","publicKeyBytes","PRIVATE_KEY_SIZE","digest1","expandedSecretKey","blockDigest","blockDigestReduced","encodedR","hramDigest","hramDigestReduced","a0","a3","a4","a5","a6","a7","a8","a9","a10","a11","b3","b4","b5","b6","b7","b8","b9","b10","b11","c10","c11","scalarMulAdd","signature","SIGNATURE_SIZE","sig","PUBLIC_KEY_SIZE","hReduced","scalar","scalarMinimal","doubleScalarMultVartime","checkR","PowHelper","powRelevantData","powDigest","nonce","zeros","trailingZeros","targetScore","LN3","digestTritsLen","biArr","curl","absorb","squeeze","trinaryTrailingZeros","endPos","targetZeros","powInterval","returnNonce","POSITIVE_INFINITY","Ed25519Address","_publicKey","address","toAddress","ADDRESS_LENGTH","NFT_ADDRESS_TYPE","BLOCK_ID_LENGTH","TRANSACTION_ID_LENGTH","MERKLE_PROOF_LENGTH","ALIAS_ID_LENGTH","serializeAliasAddress","writeStream","writeFixedHex","aliasId","MIN_ED25519_ADDRESS_LENGTH","NFT_ID_LENGTH","MIN_ADDRESS_LENGTH","SMALL_TYPE_LENGTH","deserializeAddress","readStream","pubKeyHash","readFixedHex","deserializeEd25519Address","deserializeAliasAddress","nftId","deserializeNftAddress","serializeAddress","serializeEd25519Address","serializeNftAddress","MIN_ISSUER_FEATURE_LENGTH","MIN_SENDER_FEATURE_LENGTH","MIN_FEATURE_LENGTH","deserializeFeatures","numFeatures","features","deserializeFeature","serializeFeatures","objects","serializeFeature","deserializeSenderFeature","deserializeIssuerFeature","dataLength","readUInt16","deserializeMetadataFeature","deserializeTagFeature","serializeSenderFeature","serializeIssuerFeature","writeUInt16","serializeMetadataFeature","serializeTagFeature","MIN_MIGRATED_FUNDS_LENGTH","deserializeMigratedFunds","tailTransactionHash","deposit","readUInt64","serializeMigratedFunds","writeUInt64","MIN_TREASURY_INPUT_LENGTH","deserializeTreasuryInput","milestoneId","serializeTreasuryInput","MIN_UTXO_INPUT_LENGTH","MIN_INPUT_LENGTH","deserializeInput","transactionId","transactionOutputIndex","deserializeUTXOInput","serializeInput","serializeUTXOInput","MIN_RECEIPT_MILESTONE_OPTION_LENGTH","deserializeReceiptMilestoneOption","migratedAt","readUInt32","readBoolean","funds","numFunds","deserializeFunds","treasuryTransactionPayload","deserializePayload","transaction","serializeReceiptMilestoneOption","writeUInt32","writeBoolean","serializeFunds","serializePayload","MIN_MILESTONE_OPTION_LENGTH","deserializeMilestoneOption","option","targetMilestoneIndex","protocolVersion","paramsLength","deserializeProtocolParamsMilestoneOption","serializeMilestoneOption","serializeProtocolParamsMilestoneOption","MIN_ED25519_SIGNATURE_LENGTH","MIN_SIGNATURE_LENGTH","deserializeSignature","deserializeEd25519Signature","serializeSignature","serializeEd25519Signature","MIN_MILESTONE_PAYLOAD_LENGTH","TYPE_LENGTH","deserializeMilestonePayload","timestamp","previousMilestoneId","numParents","parents","parentBlockId","inclusionMerkleRoot","appliedMerkleRoot","metadataLength","metadata","optionsCount","milestoneOptions","deserializeMilestoneOptions","signaturesCount","signatures","serializeMilestonePayload","MIN_NUMBER_PARENTS","MAX_NUMBER_PARENTS","sorted","serializeMilestoneOptions","serializeMilestoneEssence","INPUTS_COMMITMENT_SIZE","_arrayLikeToArray","_unsupportedIterableToArray","minLen","allowArrayLike","_e","normalCompletion","didErr","_e2","deserializeNativeTokens","numNativeTokens","nativeTokens","deserializeNativeToken","serializeNativeTokens","serializeNativeToken","MIN_ALIAS_ADDRESS_LENGTH","amount","readUInt256","writeUInt256","MIN_ADDRESS_UNLOCK_CONDITION_LENGTH","MIN_EXPIRATION_UNLOCK_CONDITION_LENGTH","MIN_IMMUTABLE_ALIAS_UNLOCK_CONDITION_LENGTH","MIN_GOVERNOR_ADDRESS_UNLOCK_CONDITION_LENGTH","MIN_STATE_CONTROLLER_ADDRESS_UNLOCK_CONDITION_LENGTH","MIN_STORAGE_DEPOSIT_RETURN_UNLOCK_CONDITION_LENGTH","MIN_UNLOCK_CONDITION_LENGTH","deserializeUnlockConditions","numUnlockConditions","unlockConditions","deserializeUnlockCondition","serializeUnlockConditions","serializeUnlockCondition","deserializeAddressUnlockCondition","returnAddress","deserializeStorageDepositReturnUnlockCondition","unixTime","deserializeTimelockUnlockCondition","deserializeExpirationUnlockCondition","deserializeStateControllerAddressUnlockCondition","deserializeGovernorAddressUnlockCondition","deserializeImmutableAliasUnlockCondition","serializeAddressUnlockCondition","serializeStorageDepositReturnUnlockCondition","serializeTimelockUnlockCondition","serializeExpirationUnlockCondition","serializeStateControllerAddressUnlockCondition","serializeGovernorAddressUnlockCondition","serializeImmutableAliasUnlockCondition","MIN_BASIC_OUTPUT_LENGTH","deserializeTokenScheme","tokenScheme","mintedTokens","meltedTokens","maximumSupply","deserializeSimpleTokenScheme","serializeTokenScheme","serializeSimpleTokenScheme","MIN_NFT_OUTPUT_LENGTH","deserializeTreasuryOutput","serializeTreasuryOutput","MIN_OUTPUT_LENGTH","deserializeOutput","deserializeBasicOutput","serialNumber","immutableFeatures","deserializeFoundryOutput","deserializeNftOutput","stateIndex","stateMetadataLength","stateMetadata","foundryCounter","deserializeAliasOutput","serializeOutput","serializeBasicOutput","serializeFoundryOutput","serializeNftOutput","_b","_c","serializeAliasOutput","MIN_TRANSACTION_ESSENCE_LENGTH","deserializeTransactionEssence","networkId","inputs","numInputs","deserializeInputs","inputsCommitment","outputs","numOutputs","deserializeOutputs","serializeTransactionEssence","serializeInputs","nativeTokenCount","serializeOutputs","MIN_SIGNATURE_UNLOCK_LENGTH","MIN_UNLOCK_LENGTH","deserializeUnlock","unlock","deserializeSignatureUnlock","reference","deserializeReferenceUnlock","deserializeAliasUnlock","deserializeNftUnlock","serializeUnlock","serializeSignatureUnlock","serializeReferenceUnlock","serializeAliasUnlock","serializeNftUnlock","deserializeTransactionPayload","essence","unlocks","numUnlocks","deserializeUnlocks","serializeTransactionPayload","serializeUnlocks","MIN_TREASURY_TRANSACTION_PAYLOAD_LENGTH","MIN_PAYLOAD_LENGTH","payloadLength","payloadType","deserializeTreasuryTransactionPayload","deserializeTaggedDataPayload","payloadLengthWriteIndex","getWriteIndex","serializeTreasuryTransactionPayload","serializeTaggedDataPayload","endOfPayloadWriteIndex","setWriteIndex","MIN_BLOCK_LENGTH","UINT8_SIZE","MAX_BLOCK_LENGTH","deserializeBlock","serializeBlock","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","ClientError","httpStatus","SingleNodeClient","endpoint","_endpoint","_basePath","basePath","_coreApiPath","_powProvider","powProvider","_timeout","_userName","userName","_password","_headers","headers","_protocolVersion","authorization","Authorization","fetchStatus","status","fetchJson","blockId","fetchBinary","blockPartial","maxPowAttempts","minPowScore","_protocol","populateProtocolInfoCache","tips","blockBytes","finalBytes","response","NONCE_ZERO","rs","blockObject","outputId","multiAddress","peerId","basePluginPath","methodPath","queryParams","combineQueryParams","fetchWithTimeout","networkIdBytes","protocol","networkName","bech32Hrp","requestData","json","responseData","errorMessage","errorCode","statusText","arrayBuffer","controller","AbortController","timerId","abort","finalHeaders","header","userPass","fetch","signal","IndexerPluginClient","client","_client","_basePluginPath","filterOptions","addressBech32","hasStorageDepositReturn","storageDepositReturnAddressBech32","hasExpiration","expirationReturnAddressBech32","expiresBefore","expiresAfter","hasTimelock","timelockedBefore","timelockedAfter","hasNativeTokens","minNativeTokenCount","maxNativeTokenCount","senderBech32","tagHex","createdBefore","createdAfter","pageSize","cursor","pluginFetch","stateControllerBech32","governorBech32","issuerBech32","aliasAddressBech32","foundryId","ConflictReason","Bech32Helper","addressType","addressBytes","addressData","decoded","bech32Address","fromBech32","BECH32_DEFAULT_HRP_MAIN","BECH32_DEFAULT_HRP_DEV","CONFLICT_REASON_STRINGS","none","inputUTXOAlreadySpent","inputUTXOAlreadySpentInThisMilestone","inputUTXONotFound","inputOutputSumMismatch","invalidSignature","invalidTimelock","invalidNativeTokens","returnAmountMismatch","invalidInputUnlock","invalidInputsCommitment","invalidSender","invalidChainState","semanticValidationFailed","blockIdFromMilestonePayload","blockFinal","blockHash","_toConsumableArray","TransactionHelper","outputIndex","outputIdBytes","essenceFinal","transactionPayload","txBytes","inputsCommitmentHasher","rentStructure","outputBytes","vByteFactorKey","OUTPUT_ID_LENGTH","vByteFactorData","CONFIRMED_MILESTONE_INDEX_LENGTH","CONFIRMED_UINIX_TIMESTAMP_LENGTH","vByteSize","vByteCost","tokenSchemeType","wsAddress","aliasAddressBytes","wsSerialNumber","serialNumberBytes","wsToken","tokenSchemeTypeBytes","tokenIdBytes","UnitsHelper","decimalPlaces","formatUnits","calculateBest","magnitude","MAGNITUDE_MAP","convertUnits","bestUnits","checkLength","dp","multiplier","scaledValue","numDecimals","fixed","FormatHelper","_baseToken","nodeConfigService","getBaseToken","formatFull","subunit","baseTokeValue","decimals","useMetricPrefix","formatBest","valueInMs","human","timeMoment","moment","formatted","postDate","resolveIdFromOutputId","_circle","_circle2","SvgHealthBad","SvgHealthGood","HealthIndicator","healthy","label","MicroGraph","_graphWidth","_graphHeight","graphWidth","graphHeight","calculateGraph","graphPoints","stroke","circle","graphPointCount","lastItems","circleX","circleY","lastY","xIncrement","SvgSearch","SearchInput","query","compact","onSearch","onChange","onKeyDown","placeholder","Header","_authService","_metricsService","_nodeStatusSubscription","_publicNodeStatusSubscription","_databaseSizeSubscription","_bpsMetricsSubscription","syncHealth","nodeHealth","bps","bpsValues","memorySizeFormatted","memorySize","dbLedgerSizeFormatted","dbLedgerSize","dbTangleSizeFormatted","dbTangleSize","isLoggedIn","online","subscribe","PublicNodeStatus","isHealthy","isSynced","NodeStatus","iSize","memUsage","allData","nonNull","DBSizeMetric","utxo","tangle","dbLedgerSizeValues","dbTangleSizeValues","BPSMetrics","new","bpsFormatted","unsubscribe","NavMenu","_themeService","logoSrc","isOpen","getLogoNavigation","NavPanel","fullWidth","middle","hidden","icon","function","SvgConfirmation","SvgMilestone","SvgUptime","tooltipContent","tooltip","onMouseEnter","visibility","onMouseLeave","MILESTONE_CAPTION","InfoPanel","cmi","lmi","caption","milestone","backgroundStyle","Peers","_milestonesSubscription","_confirmedMsMetricsSubscription","milestones","rbps","referencedRate","Milestone","m1","m2","ConfirmedMsMetrics","blocksPerSecond","referencedBlocksPerSecond","AssociationType","SvgChevronLeft","Bech32AddressHelper","hrp","bech32","hexNoPrefix","typeLabel","NameHelper","ClipboardHelper","textArea","fontSize","border","margin","yPosition","pageYOffset","select","execCommand","SvgCopy","BlockButton","active","buttonType","activate","labelPosition","Bech32Address","addressDetails","buildAddress","getBech32Hrp","getAddressTypeName","activeLinks","showHexAddress","SvgDropdownArrow","FeatureBlock","hexData","utf8Data","jsonData","dataLabel","feature","matchHexData","showDetails","getFeatureBlockTypeName","Token","UnlockCondition","getUnlockConditionTypeName","unlockCondition","Output","isGenesis","showTokens","getOutputTypeName","getInstance","isSpent","constructTokenId","Feature","immutableFeature","Pagination","paginationRange","lastPage","isMobile","updatePaginationRange","isMobileViewPort","currentPage","page","onPageChange","pageNumber","DOTS","totalPageCount","totalCount","siblingsCount","leftSiblingIndex","rightSiblingIndex","shouldShowLeftDots","shouldShowRightDots","firstPageIndex","lastPageIndex","leftItemCount","leftRange","rightItemCount","rightRange","middleRange","rightRemainingPages","leftRemainingPages","extraPageRangeLimit","remainderMidPoint","rMiddleRange","lastItemIndex","lMiddleRange","_","Spinner","Outputs","getPageIndexes","statusBusy","currentPageOutputs","outputType","outputDetails","Address","_tangleService","_bech32Hrp","basicOutputs","nftOutputs","aliasOutputs","statusBusyBasic","statusBusyNft","statusBusyAlias","nftDetails","nft","aliasDetails","getOutputsForAddress","associatedOutputs","sortedResults","association","outputsMap","BASIC_OUTPUT","BASIC_SENDER","BASIC_EXPIRATION_RETURN","BASIC_STORAGE_RETURN","NFT_OUTPUT","NFT_STORAGE_RETURN","NFT_EXPIRATION_RETURN","NFT_SENDER","ALIAS_STATE_CONTROLLER","ALIAS_GOVERNOR","ALIAS_ISSUER","ALIAS_SENDER","FOUNDRY_ALIAS","outputIdFromTransactionData","updateOutputDetails","outputsKey","busyKey","endIndex","prevState","outputResult","SvgChevronDown","SvgDownload","DownloadHelper","dataUrl","filename","download","BlockTangleState","updateMilestone","milestoneIndex","milestoneDetails","dateShort","InclusionState","ProtocolParamsMilestonOption","MigratedFund","fund","ReceiptMilestoneOption","showReceiptDetails","MilestonePayload","showSignatures","showOptions","parent","TaggedDataPayload","utf8Index","matchHexIndex","hexIndex","indexLengthBytes","dataLengthBytes","TransactionPayload","getTransactionPayloadHash","currentOutputsPage","outputsPageSize","statusInputsBusy","Block","_pluginService","_timerId","dataUrls","selectedDataUrl","createJsonDataUrl","createBinaryDataUrl","createBase64DataUrl","createHexDataUrl","updateBlockDetails","unavailable","blockTangleStatus","referencedByMilestoneIndex","metadataStatus","isSolid","ledgerInclusionState","conflictReason","role","dowloadPoi","blockDetails","details","calculateConflictReason","calculateStatus","fetchPoi","downloadFile","SvgChevronRight","previousIndex","hasPrevious","hasNext","loadIndex","updateUrl","tangleService","checkForAdjacentMilestones","OutputRoute","outputResponse","OutputsRoute","getOutputsByTag","updatingPage","associatedOutput","SvgBannerCurve","xmlnsXlink","isolation","SvgDbIcon","strokeLinecap","strokeLinejoin","SvgMemory","SvgPruning","_graphElement","dataEqual","series","setElement","textAnchor","axis","baseVal","seriesMaxLength","actualSeriesValues","maxItems","yScale","barWidth","axisSpacing","axisLabelWidth","timeInterval","endTime","numTimeEntries","timeMarkers","timePerInterval","dt","marginLeft","getHours","getMinutes","getSeconds","calculatePath","scaledVal","pathSegments","SvgEyeClosed","SvgEye","SvgHealthWarning","DataHelper","peer","multiAddresses","extractAddress","addr","extractIp4","extractIp6","extractDns","peers","health","localeCompare","confirmedMilestoneIndex","latestMilestoneIndex","connected","calculateIsSynced","gossip","heartbeat","prunedMilestoneIndex","latestKnownMilestoneIndex","solidMilestoneIndex","PeersSummaryPanel","_settingsService","_peerSubscription","_syncStatusSubscription","blindMode","getBlindMode","PeerMetric","handleData","SyncStatus","toggleBlindMode","sortedPeers","sortPeers","calculateHealth","formatPeerAddress","setBlindMode","Home","_networkId","getNetworkId","displayVersion","displayLatestVersion","pruningIndex","memory","uptime","lastReceivedBpsTime","bpsIncoming","bpsOutgoing","bannerSrc","getBanner","nodeAlias","getConfiguration","checkVersion","latestVersion","incoming","outgoing","currentVersion","compareVersions","partsFirst","partsSecond","firstAlphabet","secondAlphabet","firstIndex","codePointAt","secondIndex","Login","user","isBusy","redirect","autoComplete","login","success","Peer","_peersSubscription","isConnected","hasPeers","latestSolidMilestoneIndex","syncedPeers","connectedPeers","newBlocksDiff","sentBlocksDiff","relation","lastUpdateTime","gossipMetrics","newBlocksTotal","sentBlocksTotal","allDataPeers","find","nodeLmi","metrics","newBlocks","sentBlocks","nodeCmi","knownBlocks","receivedBlocks","receivedBlockRequests","sentBlockRequests","receivedHeartbeats","sentHeartbeats","receivedMilestoneRequests","sentMilestoneRequests","droppedPackets","Dialog","actions","dialogPeerAddress","dialogPeerAlias","finalPeerIds","originalAddress","dialogType","dialogIsEdit","dialogPeerId","dialogStatus","dialogBusy","dialogPeerIdOriginal","peerConfigure","peerDelete","endsWith","peerAdd","TabPanel","activeTab","tabs","onTabChanged","flat","FetchHelper","baseUrl","urlParams","Participation","eventIds","eventInfo","fetchEvents","fetchEventInfo","fetchEventStatus","milestoneIndexCommence","milestoneIndexStart","milestoneIndexEnd","dialogDetailsEvent","deleteId","submitEvent","eventDelete","validateJsonOrUrl","questions","answers","idy","accumulated","staking","staked","rewarded","fetchParticipationEvents","fetchParticipationEventInfo","fetchParticipationEventStatus","eventAdd","URL","fetchEventJsonConfig","addParticipationEvent","eventId","deleteParticipationEvent","_isAvailable","routes","PLUGIN_TITLE","description","PLUGIN_DESCRIPTION","SvgUpload","ProofOfInclusion","accept","validate","isPoiValid","poi","files","fileReader","FileReader","readAsText","calculateBlockId","validatePoi","VALIDATION_SUCCESS_MESSAGE","VALIDATION_FAILED_MESSAGE","_g","_defs","SvgToggle","filterUnits","colorInterpolationFilters","in","stdDeviation","in2","ToggleButton","onChanged","Spammer","isRunning","cpu","workers","workersMax","valueSpamEnabled","pluginStatus","pluginStart","pluginStop","onBlur","validateSettings","spammerStatus","running","bpsRateLimit","cpuMaxUsage","spammerWorkers","spammerWorkersMax","spammerStart","spammerStop","numWorkers","Plugins","plugins","pluginDetailsSpammer","pluginDetailsParticipation","pluginDetailsPoi","Poi","rel","Search","trySearch","objParam","objType","Unavailable","SvgClose","SvgPause","SvgPlay","Visualizer","_graph","_renderer","_graphics","_vizualizerService","_enteredVertexId","referenced","transactions","conflicting","solid","vertex","op","updateVertex","deleteVertex","counts","referencedId","excludedIds","referenceVertex","styleAllLinks","clearRect","setupGraph","toggleActivity","selectNode","fullId","calculateBlockLink","calculateTotal","graphElement","stableThreshold","calculateSize","STATE_COLOR_MAP","calculateState","THEME_COLOR_LINKS","open","connectedLinkStyle","shortId","updateNodeUI","added","isMilestone","isTip","isConflicting","isReferenced","isTransaction","isSelected","startNode","dfsIterator","nodeCallback","linkCallback","seenNodes","pointer","linkNode","payloadTitle","host","vertexId","highlight","COLOR_LINK_CHILDREN","COLOR_LINK_PARENTS","Solid","Unsolid","Referenced","Conflicting","Transaction","Tip","Unknown","dark","light","App","_storageService","_statusSubscription","_alias","_lmi","_cmi","_lastStatus","_statusTimer","_tokenExpiryTimer","updateTitle","validateTokenPeriodically","smi","publish","setInterval","clearInterval","clearTokenExpiryInterval","sections","logout","endSections","jwt","expiryTimestamp","getTokenExpiry","expiryDate","refreshTokenDate","initialize","decodedToken","atob","AuthService","_jwt","_csrf","cookie","csrf","storageService","save","LocalStorageService","localStorage","getItem","setItem","removeItem","rootKey","keysToRemove","MetricsService","_webSocketService","_webSocketSubscriptions","_cached","topics","topic","isPublic","triggerCallbacks","singleCallback","multipleCallback","subscriptionId","subscriptionIdx","findIndex","subscriber","NodeConfigService","tickerSymbol","setBech32Hrp","setNetworkId","setBaseToken","baseToken","PluginService","buildClient","valid","buildAuthHeaders","SessionStorageService","sessionStorage","SettingsService","_blindMode","OutputsHelper","indexerPlugin","tryFetchOutputs","TAG","nfts","foundries","NFT_ISSUER","items","SearchQueryBuilder","networkBechHrp","queryLower","blockIdOrTransactionId","typeByte","maybeAddress","hexWithPrefix","TangleService","_nodeInfo","bech32HRP","searchQuery","build","milestoneByIndex","checkForUnavailable","milestoneById","transactionIncludedBlock","addressOutputIds","foundry","foundryOutputs","taggedOutputs","helper","fetchAssociatedOutputs","fetchOutputsByTag","blockMetadata","peerAddress","peerAlias","ThemeService","_theme","currentTheme","classList","VisualizerService","_vertices","_verticesOrder","_counts","_verticesLimit","_vertexCallback","_countsCallback","_referencedCallback","vertexCallback","countsCallback","referencedCallback","Vertex","updateVertices","MilestoneInfo","updateMilestoneInfo","TipInfo","updateTipInfo","ConfirmedInfo","updateConfirmedInfo","SolidInfo","updateSolidInfo","subscription","vert","shortVertId","checkLimit","removeVertex","WebSocketService","_reconnectTimer","_lastMessage","_webSocket","requiresAuth","isSubscribed","subs","readyState","WebSocket","OPEN","subscribeTopic","connectSocket","unsubscribeTopic","clearTimer","disconnectSocket","uri","hostname","port","onopen","onclose","handleMessage","reconnect","close","topicId","arrayBuf","send","initServices","register","settingsService","authService","webSocketService","themeService","metricsService","resubscribe","brandConfiguration"],"sourceRoot":""}
    \n
    \n \n \n

    Back to Explorer

    \n \n
    \n
    \n

    \n Block\n

    \n {this.state.blockTangleStatus && (\n this.props.history.push(\n `/explorer/search/${this.state.metadata?.referencedByMilestoneIndex}`)\n : undefined}\n />\n )}\n
    \n
    \n Id\n
    \n
    \n {this.props.match.params.blockId}\n ClipboardHelper.copy(\n this.props.match.params.blockId\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n
    \n {this.state.block?.parents?.map((parent, idx) => (\n \n
    \n Parent Block {idx + 1}\n
    \n
    \n {parent !== \"0\".repeat(64) && (\n \n \n {parent}\n \n ClipboardHelper.copy(\n parent\n )}\n buttonType=\"copy\"\n labelPosition=\"top\"\n />\n \n )}\n {parent === \"0\".repeat(64) && (\n Genesis\n )}\n
    \n
    \n ))}\n
    \n Nonce\n
    \n
    \n {this.state.block?.nonce}\n
    \n
    \n
    \n

    \n Metadata\n

    \n {!this.state.metadata && !this.state.metadataStatus && (\n \n )}\n {this.state.metadataStatus && (\n

    {this.state.metadataStatus}

    \n )}\n {this.state.metadata && (\n \n
    \n Is Solid\n
    \n
    \n \n {this.state.metadata?.isSolid ? \"Yes\" : \"No\"}\n \n
    \n
    \n Ledger Inclusion\n
    \n
    \n \n
    \n {this.state.conflictReason && (\n \n
    \n Conflict Reason\n
    \n
    \n {this.state.conflictReason}\n
    \n
    \n )}\n
    \n )}\n
    \n {this.state.block?.payload && (\n \n {this.state.block.payload.type === TRANSACTION_PAYLOAD_TYPE && (\n \n \n {this.state.block.payload.essence.payload && (\n
    \n \n
    \n )}\n
    \n )}\n {this.state.block.payload.type === MILESTONE_PAYLOAD_TYPE && (\n
    \n \n
    \n )}\n {this.state.block.payload.type === TAGGED_DATA_PAYLOAD_TYPE && (\n
    \n \n
    \n )}\n
    \n )}\n
    \n
    \n