{"version":3,"file":"static/js/main.6214de7e.js","mappings":"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AAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,I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","sources":["../node_modules/@react-pdf/yoga/src/build/Release/nbind.js","../node_modules/@react-pdf/yoga/src/dist/YGEnums.js","../node_modules/@react-pdf/yoga/src/dist/entry-browser.js","../node_modules/@react-pdf/yoga/src/dist/entry-common.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/debounce/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-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/react-reconciler/constants.js","../node_modules/react-reconciler/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/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@r2wc/core/dist/core.js","../node_modules/@r2wc/react-to-web-component/dist/react-to-web-component.js","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","components/Icons/AddSceneIcon.tsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/index.mjs","api/Zustand.ts","api/calls/Axios.ts","api/calls/Queries.ts","components/TourEditPage/bottom-bar/BottomBarThumbnail.tsx","state management/zustand/editor-elements-stores.ts","../node_modules/three/build/three.module.js","state management/zustand/gl-stores.ts","components/common/GetLanguageFile.ts","components/TourEditPage/bottom-bar/BottomBar.tsx","components/TourEditPage/bottom-bar/bottom-bar.css","components/Icons/LoadingSplashIcon.tsx","components/TourEditPage/LoadingScreen.tsx","components/TourEditPage/SceneDelConfirmPanel.tsx","components/Icons/gui-elements-icons.tsx","components/TourEditPage/GuiElements/FileSelectorButton.tsx","components/TourEditPage/RightSidePanel/UiElements.tsx","components/TourEditPage/RightSidePanel/SceneEditing.tsx","components/Icons/LinkInputIcon.tsx","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-hook-form/src/useForm.ts","components/TourEditPage/RightSidePanel/OtherHotspots.tsx","components/TourEditPage/RightSidePanel/LinkEditing.tsx","components/Icons/left-side-bar-icons.tsx","components/TourEditPage/RightSidePanel/WaypointEditing.tsx","components/Icons/PopupExpIcon.tsx","api/calls/OpenAi.ts","components/TourEditPage/RightSidePanel/PopupEditing.tsx","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","state management/zustand/viewer-stores.ts","components/TourViewer/escape-room/zustand.ts","api/calls/Quiz.ts","components/TourEditPage/RightSidePanel/QuizSelector.tsx","components/TourEditPage/RightSidePanel/TourInfoEditing.tsx","components/Icons/WaypointExpIcon.tsx","components/TourEditPage/RightSidePanel/GroupsEditing.tsx","components/TourEditPage/RightSidePanel/QuizEditing.tsx","components/Icons/Player.tsx","components/Icons/Headphones.tsx","components/TourEditPage/RightSidePanel/AudioPopupEditing.tsx","components/TourEditPage/escape-room/EscapeRoomPopupsEditor.tsx","components/TourEditPage/escape-room/escape-room.css","components/TourEditPage/RightSidePanel.tsx","../node_modules/@react-three/fiber/node_modules/zustand/esm/index.js","../node_modules/suspend-react/index.js","../node_modules/@react-three/fiber/dist/index-99983b2d.esm.js","../node_modules/react-use-measure/dist/web.js","../node_modules/its-fine/src/index.tsx","../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","components/TourEditPage/Experience/Hotspots/QuizSpot.tsx","components/TourEditPage/Hotspots/OpenTextPopup.tsx","components/TourEditPage/Hotspots/OpenVideoPopup.tsx","components/TourEditPage/Hotspots/OpenImagePopup.tsx","components/TourEditPage/Experience/Hotspots/ExpHotspot.tsx","components/TourEditPage/Experience/BottomOverlay.tsx","components/common/DownloadProgressBar.tsx","components/Icons/exp-overlay-icons.tsx","components/TourEditPage/Experience/Overlay.tsx","components/common/LoadingExp.tsx","components/common/WebGLSphere.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@react-three/drei/core/shapes.js","../node_modules/@react-three/drei/web/Html.js","components/TourEditPage/Hotspots/Waypoint.tsx","components/TourEditPage/Hotspots/Popup.tsx","components/TourEditPage/Hotspots/Link.tsx","components/TourEditPage/Hotspots/Quiz.tsx","components/Icons/IconSound.tsx","components/TourEditPage/Hotspots/Audio.tsx","components/TourEditPage/Experience/Spot.tsx","../node_modules/src/controls/OrbitControls.ts","../node_modules/@react-three/drei/core/OrbitControls.js","components/common/Controls.tsx","../node_modules/@egjs/agent/src/utils.ts","../node_modules/@egjs/agent/src/presets.ts","../node_modules/@egjs/agent/src/userAgent.ts","../node_modules/@egjs/agent/src/userAgentData.ts","../node_modules/@egjs/agent/src/agent.ts","../node_modules/framework-utils/src/index.ts","../node_modules/@daybrush/utils/src/consts.ts","../node_modules/@daybrush/utils/src/utils.ts","../node_modules/@daybrush/utils/src/dom.ts","../node_modules/@scena/matrix/src/index.ts","../node_modules/css-to-mat/node_modules/tslib/tslib.es6.js","../node_modules/css-to-mat/src/CssToMatrix.ts","../node_modules/@egjs/list-differ/src/PolyMap.ts","../node_modules/@egjs/list-differ/src/HashMap.ts","../node_modules/@egjs/list-differ/src/consts.ts","../node_modules/@egjs/list-differ/src/Link.ts","../node_modules/@egjs/list-differ/src/Result.ts","../node_modules/@egjs/list-differ/src/utils.ts","../node_modules/@egjs/list-differ/src/ListDiffer.ts","../node_modules/@egjs/children-differ/src/consts.ts","../node_modules/@egjs/children-differ/src/ChildrenDiffer.ts","../node_modules/@scena/event-emitter/src/EventEmitter.ts","../node_modules/@scena/dragscroll/src/DragScroll.ts","../node_modules/overlap-area/src/utils.ts","../node_modules/overlap-area/src/index.ts","../node_modules/gesto/node_modules/tslib/tslib.es6.js","../node_modules/gesto/src/utils.ts","../node_modules/gesto/src/ClientStore.ts","../node_modules/gesto/src/Gesto.ts","../node_modules/css-styled/src/utils.ts","../node_modules/css-styled/src/styled.ts","../node_modules/react-css-styled/src/react-css-styled/styled.tsx","../node_modules/react-moveable/src/ables/AbleManager.ts","../node_modules/react-moveable/src/consts.ts","../node_modules/react-moveable/src/gesto/CustomGesto.ts","../node_modules/react-moveable/src/utils/calculateElementPosition.ts","../node_modules/react-moveable/src/gesto/GestoUtils.ts","../node_modules/react-moveable/src/utils.tsx","../node_modules/react-moveable/src/utils/getMatrixStackInfo.ts","../node_modules/react-moveable/src/store/Store.ts","../node_modules/react-moveable/src/groupUtils.ts","../node_modules/react-moveable/src/renderDirections.tsx","../node_modules/react-moveable/src/ables/snappable/bounds.ts","../node_modules/react-moveable/src/ables/snappable/utils.ts","../node_modules/react-moveable/src/ables/snappable/names.ts","../node_modules/react-moveable/src/ables/snappable/snap.ts","../node_modules/react-moveable/src/ables/snappable/innerBounds.ts","../node_modules/react-moveable/src/ables/snappable/snapBounds.ts","../node_modules/react-moveable/src/ables/Draggable.tsx","../node_modules/react-moveable/src/ables/Snappable.tsx","../node_modules/react-moveable/src/utils/getFixedDirection.ts","../node_modules/react-moveable/src/ables/Resizable.ts","../node_modules/react-moveable/src/ables/Rotatable.tsx","../node_modules/react-moveable/src/ables/snappable/render.tsx","../node_modules/react-moveable/src/ables/snappable/getTotalGuidelines.ts","../node_modules/@egjs/children-differ/src/utils.ts","../node_modules/react-moveable/src/gesto/GestoData.ts","../node_modules/react-moveable/src/ables/Pinchable.ts","../node_modules/react-moveable/src/ables/Scalable.ts","../node_modules/react-moveable/src/ables/Warpable.tsx","../node_modules/react-moveable/src/classNames.ts","../node_modules/react-moveable/src/ables/DragArea.tsx","../node_modules/react-moveable/src/ables/Origin.tsx","../node_modules/react-moveable/src/ables/Scrollable.ts","../node_modules/react-moveable/src/ables/Default.ts","../node_modules/react-moveable/src/ables/Padding.tsx","../node_modules/react-moveable/src/ables/roundable/borderRadius.tsx","../node_modules/react-moveable/src/ables/clippable/utils.tsx","../node_modules/react-moveable/src/ables/Clippable.tsx","../node_modules/react-moveable/src/ables/OriginDraggable.tsx","../node_modules/react-moveable/src/ables/Roundable.tsx","../node_modules/react-moveable/src/ables/BeforeRenderable.ts","../node_modules/react-moveable/src/ables/Renderable.ts","../node_modules/react-moveable/src/gesto/getAbleGesto.ts","../node_modules/react-moveable/src/EventManager.ts","../node_modules/react-moveable/src/utils/calculateMatrixStack.ts","../node_modules/react-moveable/src/utils/getElementInfo.ts","../node_modules/react-moveable/src/utils/getMoveableTargetInfo.ts","../node_modules/react-moveable/src/utils/persist.ts","../node_modules/react-moveable/src/MoveableManager.tsx","../node_modules/react-moveable/src/ables/Groupable.tsx","../node_modules/react-moveable/src/ables/Clickable.ts","../node_modules/react-moveable/src/ables/edgeDraggable.tsx","../node_modules/react-moveable/src/ables/IndividualGroupable.tsx","../node_modules/react-moveable/src/ables/consts.ts","../node_modules/react-moveable/src/Snappable/utils.ts","../node_modules/react-moveable/src/MoveableGroup.tsx","../node_modules/react-moveable/src/MoveableIndividualGroup.tsx","../node_modules/react-moveable/src/InitialMoveable.tsx","../node_modules/react-moveable/src/Moveable.tsx","components/TourEditPage/OpenAi/PromptSubmitter.tsx","components/TourEditPage/OpenAi/Messages.tsx","components/TourEditPage/OpenAi/OpenAiWrapper.tsx","components/TourEditPage/Experience/ScreenshotRectangle.tsx","../node_modules/@react-three/drei/core/PerspectiveCamera.js","../node_modules/@react-three/drei/core/useFBO.js","state management/zustand/common-stores.ts","components/common/Camera.tsx","components/TourEditPage/Experience/Experience.tsx","components/TourEditPage/Experience/exp.css","components/NewTourPage/NewTourPage.tsx","components/TourEditPage/LeftSidePanel.tsx","components/common/buttons.css","components/Icons/InsideepLogo.tsx","components/TourEditPage/ErrorScreen.tsx","components/TourEditPage/GuiElements/ProgressBar.tsx","components/common/ImageReducer.ts","components/Icons/AudioFileIcon.tsx","components/TourEditPage/AssetList/AudioPreview.tsx","components/TourEditPage/AssetList/UploadPage.tsx","components/Icons/ImagePopupIcons.tsx","components/TourEditPage/AssetList/ListElement.tsx","components/TourEditPage/AssetList/GeneratedImagesGrid.tsx","components/TourEditPage/AssetList/DalleWrapper.tsx","components/TourEditPage/AssetList/AssetPreview.tsx","components/TourEditPage/AssetList/assetlist.css","components/TourEditPage/AssetList/AssetList.tsx","components/TourEditPage/MapEditor/MapList.tsx","components/Icons/MapPin.tsx","components/TourEditPage/MapEditor/MapDetails.tsx","components/TourEditPage/MapEditor/MapEditor.tsx","components/TourEditPage/WidePopup/WidePopup.tsx","components/TourEditPage/TourEditPage.tsx","components/TourEditPage/RightSidePanel/forms.css","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","Query.ts","components/TourViewer/TourViewerErrorPage.tsx","components/Icons/Menu.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ViewerWaypoint.tsx","components/TourViewer/TourViewerHeader.tsx","../node_modules/@react-three/drei/core/Preload.js","../node_modules/@react-three/xr/node_modules/zustand/esm/index.js","../node_modules/@react-three/xr/src/XRController.ts","../node_modules/@react-three/xr/src/utils.ts","../node_modules/@react-three/xr/src/XREvents.ts","../node_modules/@react-three/xr/src/Interactions.tsx","../node_modules/@react-three/xr/src/context.ts","../node_modules/@react-three/xr/src/XR.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ViewerLink.tsx","components/Icons/MapPinIcon.tsx","components/TourViewer/TourViewerHotspots/exp-spots/TextPopup.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ImagePopup.tsx","components/Icons/VideoIcon.tsx","components/TourViewer/TourViewerHotspots/exp-spots/VideoPopup.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ViewerHotspot.tsx","../node_modules/fscreen/src/fscreen.js","../node_modules/react-full-screen/src/index.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ViewerQuiz.tsx","../node_modules/src/utils/BufferGeometryUtils.ts","../node_modules/src/_polyfill/constants.ts","../node_modules/src/_polyfill/LoaderUtils.js","../node_modules/src/loaders/GLTFLoader.js","../node_modules/src/libs/MotionControllers.ts","../node_modules/@react-three/xr/src/XRControllerModel.ts","../node_modules/@react-three/xr/src/Controllers.tsx","../node_modules/@react-three/xr/src/XRControllerModelFactory.ts","../node_modules/@react-three/xr/src/XRHandMeshModel.ts","../node_modules/@react-three/xr/src/OculusHandModel.ts","../node_modules/@react-three/xr/src/Hands.tsx","components/TourViewer/XR/UI/LoadingText.tsx","../node_modules/@react-three/drei/core/Mask.js","components/TourViewer/XR/UI/CursorNew.tsx","../node_modules/@react-three/drei/core/Center.js","../node_modules/@react-three/drei/core/Resize.js","../node_modules/src/loaders/SVGLoader.js","../node_modules/@react-three/drei/core/Svg.js","../node_modules/troika-worker-utils/dist/troika-worker-utils.esm.js","../node_modules/webgl-sdf-generator/dist/webgl-sdf-generator.mjs","../node_modules/bidi-js/dist/bidi.mjs","../node_modules/troika-three-utils/dist/troika-three-utils.esm.js","../node_modules/troika-three-text/dist/troika-three-text.esm.js","../node_modules/@react-three/drei/core/Text.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/three-mesh-ui/build/three-mesh-ui.module.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-merge-refs/src/index.tsx","../node_modules/@react-three/flex/dist/index.js","components/TourViewer/XR/FixedComponents/Spinner.tsx","components/TourViewer/XR/FixedComponents/CloseBtn.tsx","components/TourViewer/XR/Popups/Open/XRImagePop.tsx","components/TourViewer/XR/Popups/Closed/XRHotspotLabel.tsx","components/TourViewer/XR/Popups/Closed/XRWaypoint.tsx","../node_modules/@react-three/drei/core/useTexture.js","components/TourViewer/XR/Popups/Open/XROpenPopup.tsx","components/TourViewer/XR/Popups/Closed/XRPopup.tsx","../node_modules/@react-three/drei/core/RoundedBox.js","../node_modules/src/lines/LineSegmentsGeometry.js","../node_modules/src/lines/LineMaterial.js","../node_modules/src/lines/LineSegments2.js","../node_modules/src/lines/LineGeometry.js","../node_modules/src/lines/Line2.js","../node_modules/@react-three/drei/core/Line.js","../node_modules/@react-three/drei/core/Edges.js","components/TourViewer/XR/Popups/Open/QuizElements/QuestionHeader.tsx","components/TourViewer/XR/Popups/Open/QuizElements/QuestionContainer.tsx","components/TourViewer/XR/UI/QuizButtonElement.tsx","components/TourViewer/XR/Popups/Open/QuizElements/SmallTextLabel.tsx","components/TourViewer/XR/Popups/Open/QuizElements/ErrorPage.tsx","components/TourViewer/XR/Popups/Open/XROpenQuiz.tsx","components/TourViewer/XR/Popups/Closed/XRQuiz.tsx","components/TourViewer/XR/Popups/Closed/XRAudio.tsx","components/TourViewer/XR/Popups/Closed/XRExternalLink.tsx","components/TourViewer/XR/Popups/XRHotspots.tsx","components/TourViewer/XR/Popups/Open/PopupsBackground.tsx","components/TourViewer/XR/UI/Map.tsx","components/TourViewer/XR/UI/Exit.tsx","components/TourViewer/XR/Popups/Open/NavigationCheck.tsx","components/TourViewer/XR/XRSession.tsx","components/Icons/IconCardboards.tsx","components/Icons/EnterFullscreen.tsx","components/TourViewer/GL/ExpOverlay.tsx","components/TourViewer/TourViewerHotspots/exp-spots/ViewerAudio.tsx","components/TourViewer/GL/Controls.tsx","components/TourViewer/GL/TourViewerExperience.tsx","components/TourViewer/TourViewerHotspots/open-pops/OpenQuizPopup.tsx","components/TourViewer/TourViewerHotspots/open-pops/OpenImagePopup.tsx","components/TourViewer/TourViewerHotspots/open-pops/OpenVideoPopup.tsx","components/TourViewer/TourViewerHotspots/open-pops/OpenMap.tsx","components/TourViewer/TourViewerPopup.tsx","components/TourViewer/TourViewerHotspots/open-pops/experience-popups-styles.css","components/TourViewer/TourViewerLoading.tsx","components/TourViewer/TourViewer.tsx","components/TourViewer/tourviewer.css","../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../node_modules/jwt-decode/build/esm/index.js","App.tsx","App.css","index.js"],"sourcesContent":["(function (root, wrapper) {\n if (typeof define == \"function\" && define.amd) define([], function () {\n return wrapper;\n });else if (typeof module == \"object\" && module.exports) module.exports = wrapper;else (root.nbind = root.nbind || {}).init = wrapper;\n})(this, function (Module, cb) {\n if (typeof Module == \"function\") {\n cb = Module;Module = {};\n }Module.onRuntimeInitialized = function (init, cb) {\n return function () {\n if (init) init.apply(this, arguments);try {\n Module.ccall(\"nbind_init\");\n } catch (err) {\n cb(err);return;\n }cb(null, { bind: Module._nbind_value, reflect: Module.NBind.reflect, queryType: Module.NBind.queryType, toggleLightGC: Module.toggleLightGC, lib: Module });\n };\n }(Module.onRuntimeInitialized, cb);var Module;if (!Module) Module = (typeof Module !== \"undefined\" ? Module : null) || {};var moduleOverrides = {};for (var key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }var ENVIRONMENT_IS_WEB = false;var ENVIRONMENT_IS_WORKER = false;var ENVIRONMENT_IS_NODE = false;var ENVIRONMENT_IS_SHELL = false;if (Module[\"ENVIRONMENT\"]) {\n if (Module[\"ENVIRONMENT\"] === \"WEB\") {\n ENVIRONMENT_IS_WEB = true;\n } else if (Module[\"ENVIRONMENT\"] === \"WORKER\") {\n ENVIRONMENT_IS_WORKER = true;\n } else if (Module[\"ENVIRONMENT\"] === \"NODE\") {\n ENVIRONMENT_IS_NODE = true;\n } else if (Module[\"ENVIRONMENT\"] === \"SHELL\") {\n ENVIRONMENT_IS_SHELL = true;\n } else {\n throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");\n }\n } else {\n ENVIRONMENT_IS_WEB = typeof window === \"object\";ENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";ENVIRONMENT_IS_NODE = typeof process === \"object\" && typeof require === \"function\" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n }if (ENVIRONMENT_IS_NODE) {\n if (!Module[\"print\"]) Module[\"print\"] = console.log;if (!Module[\"printErr\"]) Module[\"printErr\"] = console.warn;var nodeFS;var nodePath;Module[\"read\"] = function shell_read(filename, binary) {\n if (!nodeFS) nodeFS = {}(\"\");if (!nodePath) nodePath = {}(\"\");filename = nodePath[\"normalize\"](filename);var ret = nodeFS[\"readFileSync\"](filename);return binary ? ret : ret.toString();\n };Module[\"readBinary\"] = function readBinary(filename) {\n var ret = Module[\"read\"](filename, true);if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }assert(ret.buffer);return ret;\n };Module[\"load\"] = function load(f) {\n globalEval(read(f));\n };if (!Module[\"thisProgram\"]) {\n if (process[\"argv\"].length > 1) {\n Module[\"thisProgram\"] = process[\"argv\"][1].replace(/\\\\/g, \"/\");\n } else {\n Module[\"thisProgram\"] = \"unknown-program\";\n }\n }Module[\"arguments\"] = process[\"argv\"].slice(2);if (typeof module !== \"undefined\") {\n module[\"exports\"] = Module;\n }process[\"on\"](\"uncaughtException\", function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });Module[\"inspect\"] = function () {\n return \"[Emscripten Module object]\";\n };\n } else if (ENVIRONMENT_IS_SHELL) {\n if (!Module[\"print\"]) Module[\"print\"] = print;if (typeof printErr != \"undefined\") Module[\"printErr\"] = printErr;if (typeof read != \"undefined\") {\n Module[\"read\"] = read;\n } else {\n Module[\"read\"] = function shell_read() {\n throw \"no read() available\";\n };\n }Module[\"readBinary\"] = function readBinary(f) {\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }var data = read(f, \"binary\");assert(typeof data === \"object\");return data;\n };if (typeof scriptArgs != \"undefined\") {\n Module[\"arguments\"] = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n Module[\"arguments\"] = arguments;\n }if (typeof quit === \"function\") {\n Module[\"quit\"] = function (status, toThrow) {\n quit(status);\n };\n }\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n Module[\"read\"] = function shell_read(url) {\n var xhr = new XMLHttpRequest();xhr.open(\"GET\", url, false);xhr.send(null);return xhr.responseText;\n };if (ENVIRONMENT_IS_WORKER) {\n Module[\"readBinary\"] = function readBinary(url) {\n var xhr = new XMLHttpRequest();xhr.open(\"GET\", url, false);xhr.responseType = \"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response);\n };\n }Module[\"readAsync\"] = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();xhr.open(\"GET\", url, true);xhr.responseType = \"arraybuffer\";xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n } else {\n onerror();\n }\n };xhr.onerror = onerror;xhr.send(null);\n };if (typeof arguments != \"undefined\") {\n Module[\"arguments\"] = arguments;\n }if (typeof console !== \"undefined\") {\n if (!Module[\"print\"]) Module[\"print\"] = function shell_print(x) {\n console.log(x);\n };if (!Module[\"printErr\"]) Module[\"printErr\"] = function shell_printErr(x) {\n console.warn(x);\n };\n } else {\n var TRY_USE_DUMP = false;if (!Module[\"print\"]) Module[\"print\"] = TRY_USE_DUMP && typeof dump !== \"undefined\" ? function (x) {\n dump(x);\n } : function (x) {};\n }if (ENVIRONMENT_IS_WORKER) {\n Module[\"load\"] = importScripts;\n }if (typeof Module[\"setWindowTitle\"] === \"undefined\") {\n Module[\"setWindowTitle\"] = function (title) {\n document.title = title;\n };\n }\n } else {\n throw \"Unknown runtime environment. Where are we?\";\n }function globalEval(x) {\n eval.call(null, x);\n }if (!Module[\"load\"] && Module[\"read\"]) {\n Module[\"load\"] = function load(f) {\n globalEval(Module[\"read\"](f));\n };\n }if (!Module[\"print\"]) {\n Module[\"print\"] = function () {};\n }if (!Module[\"printErr\"]) {\n Module[\"printErr\"] = Module[\"print\"];\n }if (!Module[\"arguments\"]) {\n Module[\"arguments\"] = [];\n }if (!Module[\"thisProgram\"]) {\n Module[\"thisProgram\"] = \"./this.program\";\n }if (!Module[\"quit\"]) {\n Module[\"quit\"] = function (status, toThrow) {\n throw toThrow;\n };\n }Module.print = Module[\"print\"];Module.printErr = Module[\"printErr\"];Module[\"preRun\"] = [];Module[\"postRun\"] = [];for (var key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }moduleOverrides = undefined;var Runtime = { setTempRet0: function (value) {\n tempRet0 = value;return value;\n }, getTempRet0: function () {\n return tempRet0;\n }, stackSave: function () {\n return STACKTOP;\n }, stackRestore: function (stackTop) {\n STACKTOP = stackTop;\n }, getNativeTypeSize: function (type) {\n switch (type) {case \"i1\":case \"i8\":\n return 1;case \"i16\":\n return 2;case \"i32\":\n return 4;case \"i64\":\n return 8;case \"float\":\n return 4;case \"double\":\n return 8;default:\n {\n if (type[type.length - 1] === \"*\") {\n return Runtime.QUANTUM_SIZE;\n } else if (type[0] === \"i\") {\n var bits = parseInt(type.substr(1));assert(bits % 8 === 0);return bits / 8;\n } else {\n return 0;\n }\n }}\n }, getNativeFieldSize: function (type) {\n return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);\n }, STACK_ALIGN: 16, prepVararg: function (ptr, type) {\n if (type === \"double\" || type === \"i64\") {\n if (ptr & 7) {\n assert((ptr & 7) === 4);ptr += 4;\n }\n } else {\n assert((ptr & 3) === 0);\n }return ptr;\n }, getAlignSize: function (type, size, vararg) {\n if (!vararg && (type == \"i64\" || type == \"double\")) return 8;if (!type) return Math.min(size, 8);return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);\n }, dynCall: function (sig, ptr, args) {\n if (args && args.length) {\n return Module[\"dynCall_\" + sig].apply(null, [ptr].concat(args));\n } else {\n return Module[\"dynCall_\" + sig].call(null, ptr);\n }\n }, functionPointers: [], addFunction: function (func) {\n for (var i = 0; i < Runtime.functionPointers.length; i++) {\n if (!Runtime.functionPointers[i]) {\n Runtime.functionPointers[i] = func;return 2 * (1 + i);\n }\n }throw \"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\";\n }, removeFunction: function (index) {\n Runtime.functionPointers[(index - 2) / 2] = null;\n }, warnOnce: function (text) {\n if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};if (!Runtime.warnOnce.shown[text]) {\n Runtime.warnOnce.shown[text] = 1;Module.printErr(text);\n }\n }, funcWrappers: {}, getFuncWrapper: function (func, sig) {\n if (!func) return;assert(sig);if (!Runtime.funcWrappers[sig]) {\n Runtime.funcWrappers[sig] = {};\n }var sigCache = Runtime.funcWrappers[sig];if (!sigCache[func]) {\n if (sig.length === 1) {\n sigCache[func] = function dynCall_wrapper() {\n return Runtime.dynCall(sig, func);\n };\n } else if (sig.length === 2) {\n sigCache[func] = function dynCall_wrapper(arg) {\n return Runtime.dynCall(sig, func, [arg]);\n };\n } else {\n sigCache[func] = function dynCall_wrapper() {\n return Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments));\n };\n }\n }return sigCache[func];\n }, getCompilerSetting: function (name) {\n throw \"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\";\n }, stackAlloc: function (size) {\n var ret = STACKTOP;STACKTOP = STACKTOP + size | 0;STACKTOP = STACKTOP + 15 & -16;return ret;\n }, staticAlloc: function (size) {\n var ret = STATICTOP;STATICTOP = STATICTOP + size | 0;STATICTOP = STATICTOP + 15 & -16;return ret;\n }, dynamicAlloc: function (size) {\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];var end = (ret + size + 15 | 0) & -16;HEAP32[DYNAMICTOP_PTR >> 2] = end;if (end >= TOTAL_MEMORY) {\n var success = enlargeMemory();if (!success) {\n HEAP32[DYNAMICTOP_PTR >> 2] = ret;return 0;\n }\n }return ret;\n }, alignMemory: function (size, quantum) {\n var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);return ret;\n }, makeBigInt: function (low, high, unsigned) {\n var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;return ret;\n }, GLOBAL_BASE: 8, QUANTUM_SIZE: 4, __dummy__: 0 };Module[\"Runtime\"] = Runtime;var ABORT = 0;var EXITSTATUS = 0;function assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n }function getCFunc(ident) {\n var func = Module[\"_\" + ident];if (!func) {\n try {\n func = eval(\"_\" + ident);\n } catch (e) {}\n }assert(func, \"Cannot call unknown function \" + ident + \" (perhaps LLVM optimizations or closure removed it?)\");return func;\n }var cwrap, ccall;(function () {\n var JSfuncs = { \"stackSave\": function () {\n Runtime.stackSave();\n }, \"stackRestore\": function () {\n Runtime.stackRestore();\n }, \"arrayToC\": function (arr) {\n var ret = Runtime.stackAlloc(arr.length);writeArrayToMemory(arr, ret);return ret;\n }, \"stringToC\": function (str) {\n var ret = 0;if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;ret = Runtime.stackAlloc(len);stringToUTF8(str, ret, len);\n }return ret;\n } };var toC = { \"string\": JSfuncs[\"stringToC\"], \"array\": JSfuncs[\"arrayToC\"] };ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {\n var func = getCFunc(ident);var cArgs = [];var stack = 0;if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];if (converter) {\n if (stack === 0) stack = Runtime.stackSave();cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }var ret = func.apply(null, cArgs);if (returnType === \"string\") ret = Pointer_stringify(ret);if (stack !== 0) {\n if (opts && opts.async) {\n EmterpreterAsync.asyncFinalizers.push(function () {\n Runtime.stackRestore(stack);\n });return;\n }Runtime.stackRestore(stack);\n }return ret;\n };var sourceRegex = /^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(jsfunc) {\n var parsed = jsfunc.toString().match(sourceRegex).slice(1);return { arguments: parsed[0], body: parsed[1], returnValue: parsed[2] };\n }var JSsource = null;function ensureJSsource() {\n if (!JSsource) {\n JSsource = {};for (var fun in JSfuncs) {\n if (JSfuncs.hasOwnProperty(fun)) {\n JSsource[fun] = parseJSFunc(JSfuncs[fun]);\n }\n }\n }\n }cwrap = function cwrap(ident, returnType, argTypes) {\n argTypes = argTypes || [];var cfunc = getCFunc(ident);var numericArgs = argTypes.every(function (type) {\n return type === \"number\";\n });var numericRet = returnType !== \"string\";if (numericRet && numericArgs) {\n return cfunc;\n }var argNames = argTypes.map(function (x, i) {\n return \"$\" + i;\n });var funcstr = \"(function(\" + argNames.join(\",\") + \") {\";var nargs = argTypes.length;if (!numericArgs) {\n ensureJSsource();funcstr += \"var stack = \" + JSsource[\"stackSave\"].body + \";\";for (var i = 0; i < nargs; i++) {\n var arg = argNames[i],\n type = argTypes[i];if (type === \"number\") continue;var convertCode = JSsource[type + \"ToC\"];funcstr += \"var \" + convertCode.arguments + \" = \" + arg + \";\";funcstr += convertCode.body + \";\";funcstr += arg + \"=(\" + convertCode.returnValue + \");\";\n }\n }var cfuncname = parseJSFunc(function () {\n return cfunc;\n }).returnValue;funcstr += \"var ret = \" + cfuncname + \"(\" + argNames.join(\",\") + \");\";if (!numericRet) {\n var strgfy = parseJSFunc(function () {\n return Pointer_stringify;\n }).returnValue;funcstr += \"ret = \" + strgfy + \"(ret);\";\n }if (!numericArgs) {\n ensureJSsource();funcstr += JSsource[\"stackRestore\"].body.replace(\"()\", \"(stack)\") + \";\";\n }funcstr += \"return ret})\";return eval(funcstr);\n };\n })();Module[\"ccall\"] = ccall;Module[\"cwrap\"] = cwrap;function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";if (type.charAt(type.length - 1) === \"*\") type = \"i32\";switch (type) {case \"i1\":\n HEAP8[ptr >> 0] = value;break;case \"i8\":\n HEAP8[ptr >> 0] = value;break;case \"i16\":\n HEAP16[ptr >> 1] = value;break;case \"i32\":\n HEAP32[ptr >> 2] = value;break;case \"i64\":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];break;case \"float\":\n HEAPF32[ptr >> 2] = value;break;case \"double\":\n HEAPF64[ptr >> 3] = value;break;default:\n abort(\"invalid type for setValue: \" + type);}\n }Module[\"setValue\"] = setValue;function getValue(ptr, type, noSafe) {\n type = type || \"i8\";if (type.charAt(type.length - 1) === \"*\") type = \"i32\";switch (type) {case \"i1\":\n return HEAP8[ptr >> 0];case \"i8\":\n return HEAP8[ptr >> 0];case \"i16\":\n return HEAP16[ptr >> 1];case \"i32\":\n return HEAP32[ptr >> 2];case \"i64\":\n return HEAP32[ptr >> 2];case \"float\":\n return HEAPF32[ptr >> 2];case \"double\":\n return HEAPF64[ptr >> 3];default:\n abort(\"invalid type for setValue: \" + type);}return null;\n }Module[\"getValue\"] = getValue;var ALLOC_NORMAL = 0;var ALLOC_STACK = 1;var ALLOC_STATIC = 2;var ALLOC_DYNAMIC = 3;var ALLOC_NONE = 4;Module[\"ALLOC_NORMAL\"] = ALLOC_NORMAL;Module[\"ALLOC_STACK\"] = ALLOC_STACK;Module[\"ALLOC_STATIC\"] = ALLOC_STATIC;Module[\"ALLOC_DYNAMIC\"] = ALLOC_DYNAMIC;Module[\"ALLOC_NONE\"] = ALLOC_NONE;function allocate(slab, types, allocator, ptr) {\n var zeroinit, size;if (typeof slab === \"number\") {\n zeroinit = true;size = slab;\n } else {\n zeroinit = false;size = slab.length;\n }var singleType = typeof types === \"string\" ? types : null;var ret;if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [typeof _malloc === \"function\" ? _malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\n }if (zeroinit) {\n var ptr = ret,\n stop;assert((ret & 3) == 0);stop = ret + (size & ~3);for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }stop = ret + size;while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }return ret;\n }if (singleType === \"i8\") {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }return ret;\n }var i = 0,\n type,\n typeSize,\n previousType;while (i < size) {\n var curr = slab[i];if (typeof curr === \"function\") {\n curr = Runtime.getFunctionIndex(curr);\n }type = singleType || types[i];if (type === 0) {\n i++;continue;\n }if (type == \"i64\") type = \"i32\";setValue(ret + i, curr, type);if (previousType !== type) {\n typeSize = Runtime.getNativeTypeSize(type);previousType = type;\n }i += typeSize;\n }return ret;\n }Module[\"allocate\"] = allocate;function getMemory(size) {\n if (!staticSealed) return Runtime.staticAlloc(size);if (!runtimeInitialized) return Runtime.dynamicAlloc(size);return _malloc(size);\n }Module[\"getMemory\"] = getMemory;function Pointer_stringify(ptr, length) {\n if (length === 0 || !ptr) return \"\";var hasUtf = 0;var t;var i = 0;while (1) {\n t = HEAPU8[ptr + i >> 0];hasUtf |= t;if (t == 0 && !length) break;i++;if (length && i == length) break;\n }if (!length) length = i;var ret = \"\";if (hasUtf < 128) {\n var MAX_CHUNK = 1024;var curr;while (length > 0) {\n curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));ret = ret ? ret + curr : curr;ptr += MAX_CHUNK;length -= MAX_CHUNK;\n }return ret;\n }return Module[\"UTF8ToString\"](ptr);\n }Module[\"Pointer_stringify\"] = Pointer_stringify;function AsciiToString(ptr) {\n var str = \"\";while (1) {\n var ch = HEAP8[ptr++ >> 0];if (!ch) return str;str += String.fromCharCode(ch);\n }\n }Module[\"AsciiToString\"] = AsciiToString;function stringToAscii(str, outPtr) {\n return writeAsciiToMemory(str, outPtr, false);\n }Module[\"stringToAscii\"] = stringToAscii;var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;function UTF8ArrayToString(u8Array, idx) {\n var endPtr = idx;while (u8Array[endPtr]) ++endPtr;if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var u0, u1, u2, u3, u4, u5;var str = \"\";while (1) {\n u0 = u8Array[idx++];if (!u0) return str;if (!(u0 & 128)) {\n str += String.fromCharCode(u0);continue;\n }u1 = u8Array[idx++] & 63;if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);continue;\n }u2 = u8Array[idx++] & 63;if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u3 = u8Array[idx++] & 63;if ((u0 & 248) == 240) {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3;\n } else {\n u4 = u8Array[idx++] & 63;if ((u0 & 252) == 248) {\n u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4;\n } else {\n u5 = u8Array[idx++] & 63;u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5;\n }\n }\n }if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n }Module[\"UTF8ArrayToString\"] = UTF8ArrayToString;function UTF8ToString(ptr) {\n return UTF8ArrayToString(HEAPU8, ptr);\n }Module[\"UTF8ToString\"] = UTF8ToString;function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;var startIdx = outIdx;var endIdx = outIdx + maxBytesToWrite - 1;for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;if (u <= 127) {\n if (outIdx >= endIdx) break;outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;outU8Array[outIdx++] = 192 | u >> 6;outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;outU8Array[outIdx++] = 224 | u >> 12;outU8Array[outIdx++] = 128 | u >> 6 & 63;outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 2097151) {\n if (outIdx + 3 >= endIdx) break;outU8Array[outIdx++] = 240 | u >> 18;outU8Array[outIdx++] = 128 | u >> 12 & 63;outU8Array[outIdx++] = 128 | u >> 6 & 63;outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 67108863) {\n if (outIdx + 4 >= endIdx) break;outU8Array[outIdx++] = 248 | u >> 24;outU8Array[outIdx++] = 128 | u >> 18 & 63;outU8Array[outIdx++] = 128 | u >> 12 & 63;outU8Array[outIdx++] = 128 | u >> 6 & 63;outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 5 >= endIdx) break;outU8Array[outIdx++] = 252 | u >> 30;outU8Array[outIdx++] = 128 | u >> 24 & 63;outU8Array[outIdx++] = 128 | u >> 18 & 63;outU8Array[outIdx++] = 128 | u >> 12 & 63;outU8Array[outIdx++] = 128 | u >> 6 & 63;outU8Array[outIdx++] = 128 | u & 63;\n }\n }outU8Array[outIdx] = 0;return outIdx - startIdx;\n }Module[\"stringToUTF8Array\"] = stringToUTF8Array;function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }Module[\"stringToUTF8\"] = stringToUTF8;function lengthBytesUTF8(str) {\n var len = 0;for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;if (u <= 127) {\n ++len;\n } else if (u <= 2047) {\n len += 2;\n } else if (u <= 65535) {\n len += 3;\n } else if (u <= 2097151) {\n len += 4;\n } else if (u <= 67108863) {\n len += 5;\n } else {\n len += 6;\n }\n }return len;\n }Module[\"lengthBytesUTF8\"] = lengthBytesUTF8;var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;function demangle(func) {\n var __cxa_demangle_func = Module[\"___cxa_demangle\"] || Module[\"__cxa_demangle\"];if (__cxa_demangle_func) {\n try {\n var s = func.substr(1);var len = lengthBytesUTF8(s) + 1;var buf = _malloc(len);stringToUTF8(s, buf, len);var status = _malloc(4);var ret = __cxa_demangle_func(buf, 0, 0, status);if (getValue(status, \"i32\") === 0 && ret) {\n return Pointer_stringify(ret);\n }\n } catch (e) {} finally {\n if (buf) _free(buf);if (status) _free(status);if (ret) _free(ret);\n }return func;\n }Runtime.warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");return func;\n }function demangleAll(text) {\n var regex = /__Z[\\w\\d_]+/g;return text.replace(regex, function (x) {\n var y = demangle(x);return x === y ? x : x + \" [\" + y + \"]\";\n });\n }function jsStackTrace() {\n var err = new Error();if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }return err.stack.toString();\n }function stackTrace() {\n var js = jsStackTrace();if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();return demangleAll(js);\n }Module[\"stackTrace\"] = stackTrace;var HEAP, buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;function updateGlobalBufferViews() {\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buffer);Module[\"HEAP16\"] = HEAP16 = new Int16Array(buffer);Module[\"HEAP32\"] = HEAP32 = new Int32Array(buffer);Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buffer);Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buffer);Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buffer);Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buffer);Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buffer);\n }var STATIC_BASE, STATICTOP, staticSealed;var STACK_BASE, STACKTOP, STACK_MAX;var DYNAMIC_BASE, DYNAMICTOP_PTR;STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;staticSealed = false;function abortOnCannotGrowMemory() {\n abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \" + TOTAL_MEMORY + \", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \");\n }function enlargeMemory() {\n abortOnCannotGrowMemory();\n }var TOTAL_STACK = Module[\"TOTAL_STACK\"] || 5242880;var TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 268435456;if (TOTAL_MEMORY < TOTAL_STACK) Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" + TOTAL_MEMORY + \"! (TOTAL_STACK=\" + TOTAL_STACK + \")\");if (Module[\"buffer\"]) {\n buffer = Module[\"buffer\"];\n } else {\n {\n buffer = new ArrayBuffer(TOTAL_MEMORY);\n }\n }updateGlobalBufferViews();function getTotalMemory() {\n return TOTAL_MEMORY;\n }HEAP32[0] = 1668509029;HEAP16[1] = 25459;if (HEAPU8[2] !== 115 || HEAPU8[3] !== 99) throw \"Runtime error: expected the system to be little-endian!\";Module[\"HEAP\"] = HEAP;Module[\"buffer\"] = buffer;Module[\"HEAP8\"] = HEAP8;Module[\"HEAP16\"] = HEAP16;Module[\"HEAP32\"] = HEAP32;Module[\"HEAPU8\"] = HEAPU8;Module[\"HEAPU16\"] = HEAPU16;Module[\"HEAPU32\"] = HEAPU32;Module[\"HEAPF32\"] = HEAPF32;Module[\"HEAPF64\"] = HEAPF64;function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();if (typeof callback == \"function\") {\n callback();continue;\n }var func = callback.func;if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }var __ATPRERUN__ = [];var __ATINIT__ = [];var __ATMAIN__ = [];var __ATEXIT__ = [];var __ATPOSTRUN__ = [];var runtimeInitialized = false;var runtimeExited = false;function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }callRuntimeCallbacks(__ATPRERUN__);\n }function ensureInitRuntime() {\n if (runtimeInitialized) return;runtimeInitialized = true;callRuntimeCallbacks(__ATINIT__);\n }function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }function exitRuntime() {\n callRuntimeCallbacks(__ATEXIT__);runtimeExited = true;\n }function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }callRuntimeCallbacks(__ATPOSTRUN__);\n }function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }Module[\"addOnPreRun\"] = addOnPreRun;function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }Module[\"addOnInit\"] = addOnInit;function addOnPreMain(cb) {\n __ATMAIN__.unshift(cb);\n }Module[\"addOnPreMain\"] = addOnPreMain;function addOnExit(cb) {\n __ATEXIT__.unshift(cb);\n }Module[\"addOnExit\"] = addOnExit;function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }Module[\"addOnPostRun\"] = addOnPostRun;function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;var u8array = new Array(len);var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);if (dontAddNull) u8array.length = numBytesWritten;return u8array;\n }Module[\"intArrayFromString\"] = intArrayFromString;function intArrayToString(array) {\n var ret = [];for (var i = 0; i < array.length; i++) {\n var chr = array[i];if (chr > 255) {\n chr &= 255;\n }ret.push(String.fromCharCode(chr));\n }return ret.join(\"\");\n }Module[\"intArrayToString\"] = intArrayToString;function writeStringToMemory(string, buffer, dontAddNull) {\n Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var lastChar, end;if (dontAddNull) {\n end = buffer + lengthBytesUTF8(string);lastChar = HEAP8[end];\n }stringToUTF8(string, buffer, Infinity);if (dontAddNull) HEAP8[end] = lastChar;\n }Module[\"writeStringToMemory\"] = writeStringToMemory;function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }Module[\"writeArrayToMemory\"] = writeArrayToMemory;function writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n }Module[\"writeAsciiToMemory\"] = writeAsciiToMemory;if (!Math[\"imul\"] || Math[\"imul\"](4294967295, 5) !== -5) Math[\"imul\"] = function imul(a, b) {\n var ah = a >>> 16;var al = a & 65535;var bh = b >>> 16;var bl = b & 65535;return al * bl + (ah * bl + al * bh << 16) | 0;\n };Math.imul = Math[\"imul\"];if (!Math[\"fround\"]) {\n var froundBuffer = new Float32Array(1);Math[\"fround\"] = function (x) {\n froundBuffer[0] = x;return froundBuffer[0];\n };\n }Math.fround = Math[\"fround\"];if (!Math[\"clz32\"]) Math[\"clz32\"] = function (x) {\n x = x >>> 0;for (var i = 0; i < 32; i++) {\n if (x & 1 << 31 - i) return i;\n }return 32;\n };Math.clz32 = Math[\"clz32\"];if (!Math[\"trunc\"]) Math[\"trunc\"] = function (x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x);\n };Math.trunc = Math[\"trunc\"];var Math_abs = Math.abs;var Math_cos = Math.cos;var Math_sin = Math.sin;var Math_tan = Math.tan;var Math_acos = Math.acos;var Math_asin = Math.asin;var Math_atan = Math.atan;var Math_atan2 = Math.atan2;var Math_exp = Math.exp;var Math_log = Math.log;var Math_sqrt = Math.sqrt;var Math_ceil = Math.ceil;var Math_floor = Math.floor;var Math_pow = Math.pow;var Math_imul = Math.imul;var Math_fround = Math.fround;var Math_round = Math.round;var Math_min = Math.min;var Math_clz32 = Math.clz32;var Math_trunc = Math.trunc;var runDependencies = 0;var runDependencyWatcher = null;var dependenciesFulfilled = null;function getUniqueRunDependency(id) {\n return id;\n }function addRunDependency(id) {\n runDependencies++;if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }Module[\"addRunDependency\"] = addRunDependency;function removeRunDependency(id) {\n runDependencies--;if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);runDependencyWatcher = null;\n }if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;dependenciesFulfilled = null;callback();\n }\n }\n }Module[\"removeRunDependency\"] = removeRunDependency;Module[\"preloadedImages\"] = {};Module[\"preloadedAudios\"] = {};var ASM_CONSTS = [function ($0, $1, $2, $3, $4, $5, $6, $7) {\n return _nbind.callbackSignatureList[$0].apply(this, arguments);\n }];function _emscripten_asm_const_iiiiiiii(code, a0, a1, a2, a3, a4, a5, a6) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6);\n }function _emscripten_asm_const_iiiii(code, a0, a1, a2, a3) {\n return ASM_CONSTS[code](a0, a1, a2, a3);\n }function _emscripten_asm_const_iiidddddd(code, a0, a1, a2, a3, a4, a5, a6, a7) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6, a7);\n }function _emscripten_asm_const_iiididi(code, a0, a1, a2, a3, a4, a5) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5);\n }function _emscripten_asm_const_iiii(code, a0, a1, a2) {\n return ASM_CONSTS[code](a0, a1, a2);\n }function _emscripten_asm_const_iiiid(code, a0, a1, a2, a3) {\n return ASM_CONSTS[code](a0, a1, a2, a3);\n }function _emscripten_asm_const_iiiiii(code, a0, a1, a2, a3, a4) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4);\n }STATIC_BASE = Runtime.GLOBAL_BASE;STATICTOP = STATIC_BASE + 12800;__ATINIT__.push({ func: function () {\n __GLOBAL__sub_I_Yoga_cpp();\n } }, { func: function () {\n __GLOBAL__sub_I_nbind_cc();\n } }, { func: function () {\n __GLOBAL__sub_I_common_cc();\n } }, { func: function () {\n __GLOBAL__sub_I_Binding_cc();\n } });allocate([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 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, 192, 127, 0, 0, 192, 127, 0, 0, 192, 127, 0, 0, 192, 127, 3, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 3, 0, 0, 0, 0, 0, 192, 127, 3, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 192, 127, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 127, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 190, 12, 0, 0, 200, 12, 0, 0, 208, 12, 0, 0, 216, 12, 0, 0, 230, 12, 0, 0, 242, 12, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 192, 127, 3, 0, 0, 0, 180, 45, 0, 0, 181, 45, 0, 0, 182, 45, 0, 0, 181, 45, 0, 0, 182, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 183, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 184, 45, 0, 0, 185, 45, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 182, 45, 0, 0, 186, 45, 0, 0, 185, 45, 0, 0, 148, 4, 0, 0, 3, 0, 0, 0, 187, 45, 0, 0, 164, 4, 0, 0, 188, 45, 0, 0, 2, 0, 0, 0, 189, 45, 0, 0, 164, 4, 0, 0, 188, 45, 0, 0, 185, 45, 0, 0, 164, 4, 0, 0, 185, 45, 0, 0, 164, 4, 0, 0, 188, 45, 0, 0, 181, 45, 0, 0, 182, 45, 0, 0, 181, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 183, 45, 0, 0, 182, 45, 0, 0, 181, 45, 0, 0, 190, 45, 0, 0, 190, 45, 0, 0, 182, 45, 0, 0, 182, 45, 0, 0, 185, 45, 0, 0, 181, 45, 0, 0, 185, 45, 0, 0, 182, 45, 0, 0, 181, 45, 0, 0, 185, 45, 0, 0, 182, 45, 0, 0, 185, 45, 0, 0, 48, 5, 0, 0, 3, 0, 0, 0, 56, 5, 0, 0, 1, 0, 0, 0, 189, 45, 0, 0, 185, 45, 0, 0, 164, 4, 0, 0, 76, 5, 0, 0, 2, 0, 0, 0, 191, 45, 0, 0, 186, 45, 0, 0, 182, 45, 0, 0, 185, 45, 0, 0, 192, 45, 0, 0, 185, 45, 0, 0, 182, 45, 0, 0, 186, 45, 0, 0, 185, 45, 0, 0, 76, 5, 0, 0, 76, 5, 0, 0, 136, 5, 0, 0, 182, 45, 0, 0, 181, 45, 0, 0, 2, 0, 0, 0, 190, 45, 0, 0, 136, 5, 0, 0, 56, 19, 0, 0, 156, 5, 0, 0, 2, 0, 0, 0, 184, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 204, 5, 0, 0, 181, 45, 0, 0, 181, 45, 0, 0, 2, 0, 0, 0, 180, 45, 0, 0, 204, 5, 0, 0, 2, 0, 0, 0, 195, 45, 0, 0, 236, 5, 0, 0, 97, 19, 0, 0, 198, 45, 0, 0, 211, 45, 0, 0, 212, 45, 0, 0, 213, 45, 0, 0, 214, 45, 0, 0, 215, 45, 0, 0, 188, 45, 0, 0, 182, 45, 0, 0, 216, 45, 0, 0, 217, 45, 0, 0, 218, 45, 0, 0, 219, 45, 0, 0, 192, 45, 0, 0, 181, 45, 0, 0, 0, 0, 0, 0, 185, 45, 0, 0, 110, 19, 0, 0, 186, 45, 0, 0, 115, 19, 0, 0, 221, 45, 0, 0, 120, 19, 0, 0, 148, 4, 0, 0, 132, 19, 0, 0, 96, 6, 0, 0, 145, 19, 0, 0, 222, 45, 0, 0, 164, 19, 0, 0, 223, 45, 0, 0, 173, 19, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 104, 6, 0, 0, 1, 0, 0, 0, 187, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 185, 45, 0, 0, 224, 45, 0, 0, 164, 6, 0, 0, 188, 45, 0, 0, 172, 6, 0, 0, 180, 6, 0, 0, 2, 0, 0, 0, 188, 6, 0, 0, 7, 0, 0, 0, 224, 45, 0, 0, 7, 0, 0, 0, 164, 6, 0, 0, 1, 0, 0, 0, 213, 45, 0, 0, 185, 45, 0, 0, 224, 45, 0, 0, 172, 6, 0, 0, 185, 45, 0, 0, 224, 45, 0, 0, 164, 6, 0, 0, 185, 45, 0, 0, 224, 45, 0, 0, 211, 45, 0, 0, 211, 45, 0, 0, 222, 45, 0, 0, 211, 45, 0, 0, 224, 45, 0, 0, 222, 45, 0, 0, 211, 45, 0, 0, 224, 45, 0, 0, 172, 6, 0, 0, 222, 45, 0, 0, 211, 45, 0, 0, 224, 45, 0, 0, 188, 45, 0, 0, 222, 45, 0, 0, 211, 45, 0, 0, 40, 7, 0, 0, 188, 45, 0, 0, 2, 0, 0, 0, 224, 45, 0, 0, 185, 45, 0, 0, 188, 45, 0, 0, 188, 45, 0, 0, 188, 45, 0, 0, 188, 45, 0, 0, 222, 45, 0, 0, 224, 45, 0, 0, 148, 4, 0, 0, 185, 45, 0, 0, 148, 4, 0, 0, 148, 4, 0, 0, 148, 4, 0, 0, 148, 4, 0, 0, 148, 4, 0, 0, 185, 45, 0, 0, 164, 6, 0, 0, 148, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 148, 7, 0, 0, 2, 0, 0, 0, 225, 45, 0, 0, 183, 45, 0, 0, 188, 45, 0, 0, 168, 7, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 234, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 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, 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, 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, 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, 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, 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, 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, 148, 45, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 9, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 242, 45, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 97, 108, 108, 111, 99, 97, 116, 101, 32, 109, 101, 109, 111, 114, 121, 32, 102, 111, 114, 32, 110, 111, 100, 101, 0, 67, 97, 110, 110, 111, 116, 32, 114, 101, 115, 101, 116, 32, 97, 32, 110, 111, 100, 101, 32, 119, 104, 105, 99, 104, 32, 115, 116, 105, 108, 108, 32, 104, 97, 115, 32, 99, 104, 105, 108, 100, 114, 101, 110, 32, 97, 116, 116, 97, 99, 104, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 114, 101, 115, 101, 116, 32, 97, 32, 110, 111, 100, 101, 32, 115, 116, 105, 108, 108, 32, 97, 116, 116, 97, 99, 104, 101, 100, 32, 116, 111, 32, 97, 32, 112, 97, 114, 101, 110, 116, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 97, 108, 108, 111, 99, 97, 116, 101, 32, 109, 101, 109, 111, 114, 121, 32, 102, 111, 114, 32, 99, 111, 110, 102, 105, 103, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 116, 32, 109, 101, 97, 115, 117, 114, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 58, 32, 78, 111, 100, 101, 115, 32, 119, 105, 116, 104, 32, 109, 101, 97, 115, 117, 114, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 115, 32, 99, 97, 110, 110, 111, 116, 32, 104, 97, 118, 101, 32, 99, 104, 105, 108, 100, 114, 101, 110, 46, 0, 67, 104, 105, 108, 100, 32, 97, 108, 114, 101, 97, 100, 121, 32, 104, 97, 115, 32, 97, 32, 112, 97, 114, 101, 110, 116, 44, 32, 105, 116, 32, 109, 117, 115, 116, 32, 98, 101, 32, 114, 101, 109, 111, 118, 101, 100, 32, 102, 105, 114, 115, 116, 46, 0, 67, 97, 110, 110, 111, 116, 32, 97, 100, 100, 32, 99, 104, 105, 108, 100, 58, 32, 78, 111, 100, 101, 115, 32, 119, 105, 116, 104, 32, 109, 101, 97, 115, 117, 114, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 115, 32, 99, 97, 110, 110, 111, 116, 32, 104, 97, 118, 101, 32, 99, 104, 105, 108, 100, 114, 101, 110, 46, 0, 79, 110, 108, 121, 32, 108, 101, 97, 102, 32, 110, 111, 100, 101, 115, 32, 119, 105, 116, 104, 32, 99, 117, 115, 116, 111, 109, 32, 109, 101, 97, 115, 117, 114, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 115, 115, 104, 111, 117, 108, 100, 32, 109, 97, 110, 117, 97, 108, 108, 121, 32, 109, 97, 114, 107, 32, 116, 104, 101, 109, 115, 101, 108, 118, 101, 115, 32, 97, 115, 32, 100, 105, 114, 116, 121, 0, 67, 97, 110, 110, 111, 116, 32, 103, 101, 116, 32, 108, 97, 121, 111, 117, 116, 32, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 32, 111, 102, 32, 109, 117, 108, 116, 105, 45, 101, 100, 103, 101, 32, 115, 104, 111, 114, 116, 104, 97, 110, 100, 115, 0, 37, 115, 37, 100, 46, 123, 91, 115, 107, 105, 112, 112, 101, 100, 93, 32, 0, 119, 109, 58, 32, 37, 115, 44, 32, 104, 109, 58, 32, 37, 115, 44, 32, 97, 119, 58, 32, 37, 102, 32, 97, 104, 58, 32, 37, 102, 32, 61, 62, 32, 100, 58, 32, 40, 37, 102, 44, 32, 37, 102, 41, 32, 37, 115, 10, 0, 37, 115, 37, 100, 46, 123, 37, 115, 0, 42, 0, 119, 109, 58, 32, 37, 115, 44, 32, 104, 109, 58, 32, 37, 115, 44, 32, 97, 119, 58, 32, 37, 102, 32, 97, 104, 58, 32, 37, 102, 32, 37, 115, 10, 0, 37, 115, 37, 100, 46, 125, 37, 115, 0, 119, 109, 58, 32, 37, 115, 44, 32, 104, 109, 58, 32, 37, 115, 44, 32, 100, 58, 32, 40, 37, 102, 44, 32, 37, 102, 41, 32, 37, 115, 10, 0, 79, 117, 116, 32, 111, 102, 32, 99, 97, 99, 104, 101, 32, 101, 110, 116, 114, 105, 101, 115, 33, 10, 0, 83, 99, 97, 108, 101, 32, 102, 97, 99, 116, 111, 114, 32, 115, 104, 111, 117, 108, 100, 32, 110, 111, 116, 32, 98, 101, 32, 108, 101, 115, 115, 32, 116, 104, 97, 110, 32, 122, 101, 114, 111, 0, 105, 110, 105, 116, 105, 97, 108, 0, 37, 115, 10, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 85, 78, 68, 69, 70, 73, 78, 69, 68, 0, 69, 88, 65, 67, 84, 76, 89, 0, 65, 84, 95, 77, 79, 83, 84, 0, 76, 65, 89, 95, 85, 78, 68, 69, 70, 73, 78, 69, 68, 0, 76, 65, 89, 95, 69, 88, 65, 67, 84, 76, 89, 0, 76, 65, 89, 95, 65, 84, 95, 77, 79, 83, 84, 0, 97, 118, 97, 105, 108, 97, 98, 108, 101, 87, 105, 100, 116, 104, 32, 105, 115, 32, 105, 110, 100, 101, 102, 105, 110, 105, 116, 101, 32, 115, 111, 32, 119, 105, 100, 116, 104, 77, 101, 97, 115, 117, 114, 101, 77, 111, 100, 101, 32, 109, 117, 115, 116, 32, 98, 101, 32, 89, 71, 77, 101, 97, 115, 117, 114, 101, 77, 111, 100, 101, 85, 110, 100, 101, 102, 105, 110, 101, 100, 0, 97, 118, 97, 105, 108, 97, 98, 108, 101, 72, 101, 105, 103, 104, 116, 32, 105, 115, 32, 105, 110, 100, 101, 102, 105, 110, 105, 116, 101, 32, 115, 111, 32, 104, 101, 105, 103, 104, 116, 77, 101, 97, 115, 117, 114, 101, 77, 111, 100, 101, 32, 109, 117, 115, 116, 32, 98, 101, 32, 89, 71, 77, 101, 97, 115, 117, 114, 101, 77, 111, 100, 101, 85, 110, 100, 101, 102, 105, 110, 101, 100, 0, 102, 108, 101, 120, 0, 115, 116, 114, 101, 116, 99, 104, 0, 109, 117, 108, 116, 105, 108, 105, 110, 101, 45, 115, 116, 114, 101, 116, 99, 104, 0, 69, 120, 112, 101, 99, 116, 101, 100, 32, 110, 111, 100, 101, 32, 116, 111, 32, 104, 97, 118, 101, 32, 99, 117, 115, 116, 111, 109, 32, 109, 101, 97, 115, 117, 114, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0, 109, 101, 97, 115, 117, 114, 101, 0, 69, 120, 112, 101, 99, 116, 32, 99, 117, 115, 116, 111, 109, 32, 98, 97, 115, 101, 108, 105, 110, 101, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 116, 111, 32, 110, 111, 116, 32, 114, 101, 116, 117, 114, 110, 32, 78, 97, 78, 0, 97, 98, 115, 45, 109, 101, 97, 115, 117, 114, 101, 0, 97, 98, 115, 45, 108, 97, 121, 111, 117, 116, 0, 78, 111, 100, 101, 0, 99, 114, 101, 97, 116, 101, 68, 101, 102, 97, 117, 108, 116, 0, 99, 114, 101, 97, 116, 101, 87, 105, 116, 104, 67, 111, 110, 102, 105, 103, 0, 100, 101, 115, 116, 114, 111, 121, 0, 114, 101, 115, 101, 116, 0, 99, 111, 112, 121, 83, 116, 121, 108, 101, 0, 115, 101, 116, 80, 111, 115, 105, 116, 105, 111, 110, 84, 121, 112, 101, 0, 115, 101, 116, 80, 111, 115, 105, 116, 105, 111, 110, 0, 115, 101, 116, 80, 111, 115, 105, 116, 105, 111, 110, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 65, 108, 105, 103, 110, 67, 111, 110, 116, 101, 110, 116, 0, 115, 101, 116, 65, 108, 105, 103, 110, 73, 116, 101, 109, 115, 0, 115, 101, 116, 65, 108, 105, 103, 110, 83, 101, 108, 102, 0, 115, 101, 116, 70, 108, 101, 120, 68, 105, 114, 101, 99, 116, 105, 111, 110, 0, 115, 101, 116, 70, 108, 101, 120, 87, 114, 97, 112, 0, 115, 101, 116, 74, 117, 115, 116, 105, 102, 121, 67, 111, 110, 116, 101, 110, 116, 0, 115, 101, 116, 77, 97, 114, 103, 105, 110, 0, 115, 101, 116, 77, 97, 114, 103, 105, 110, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 77, 97, 114, 103, 105, 110, 65, 117, 116, 111, 0, 115, 101, 116, 79, 118, 101, 114, 102, 108, 111, 119, 0, 115, 101, 116, 68, 105, 115, 112, 108, 97, 121, 0, 115, 101, 116, 70, 108, 101, 120, 0, 115, 101, 116, 70, 108, 101, 120, 66, 97, 115, 105, 115, 0, 115, 101, 116, 70, 108, 101, 120, 66, 97, 115, 105, 115, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 70, 108, 101, 120, 71, 114, 111, 119, 0, 115, 101, 116, 70, 108, 101, 120, 83, 104, 114, 105, 110, 107, 0, 115, 101, 116, 87, 105, 100, 116, 104, 0, 115, 101, 116, 87, 105, 100, 116, 104, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 87, 105, 100, 116, 104, 65, 117, 116, 111, 0, 115, 101, 116, 72, 101, 105, 103, 104, 116, 0, 115, 101, 116, 72, 101, 105, 103, 104, 116, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 72, 101, 105, 103, 104, 116, 65, 117, 116, 111, 0, 115, 101, 116, 77, 105, 110, 87, 105, 100, 116, 104, 0, 115, 101, 116, 77, 105, 110, 87, 105, 100, 116, 104, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 77, 105, 110, 72, 101, 105, 103, 104, 116, 0, 115, 101, 116, 77, 105, 110, 72, 101, 105, 103, 104, 116, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 77, 97, 120, 87, 105, 100, 116, 104, 0, 115, 101, 116, 77, 97, 120, 87, 105, 100, 116, 104, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 77, 97, 120, 72, 101, 105, 103, 104, 116, 0, 115, 101, 116, 77, 97, 120, 72, 101, 105, 103, 104, 116, 80, 101, 114, 99, 101, 110, 116, 0, 115, 101, 116, 65, 115, 112, 101, 99, 116, 82, 97, 116, 105, 111, 0, 115, 101, 116, 66, 111, 114, 100, 101, 114, 0, 115, 101, 116, 80, 97, 100, 100, 105, 110, 103, 0, 115, 101, 116, 80, 97, 100, 100, 105, 110, 103, 80, 101, 114, 99, 101, 110, 116, 0, 103, 101, 116, 80, 111, 115, 105, 116, 105, 111, 110, 84, 121, 112, 101, 0, 103, 101, 116, 80, 111, 115, 105, 116, 105, 111, 110, 0, 103, 101, 116, 65, 108, 105, 103, 110, 67, 111, 110, 116, 101, 110, 116, 0, 103, 101, 116, 65, 108, 105, 103, 110, 73, 116, 101, 109, 115, 0, 103, 101, 116, 65, 108, 105, 103, 110, 83, 101, 108, 102, 0, 103, 101, 116, 70, 108, 101, 120, 68, 105, 114, 101, 99, 116, 105, 111, 110, 0, 103, 101, 116, 70, 108, 101, 120, 87, 114, 97, 112, 0, 103, 101, 116, 74, 117, 115, 116, 105, 102, 121, 67, 111, 110, 116, 101, 110, 116, 0, 103, 101, 116, 77, 97, 114, 103, 105, 110, 0, 103, 101, 116, 70, 108, 101, 120, 66, 97, 115, 105, 115, 0, 103, 101, 116, 70, 108, 101, 120, 71, 114, 111, 119, 0, 103, 101, 116, 70, 108, 101, 120, 83, 104, 114, 105, 110, 107, 0, 103, 101, 116, 87, 105, 100, 116, 104, 0, 103, 101, 116, 72, 101, 105, 103, 104, 116, 0, 103, 101, 116, 77, 105, 110, 87, 105, 100, 116, 104, 0, 103, 101, 116, 77, 105, 110, 72, 101, 105, 103, 104, 116, 0, 103, 101, 116, 77, 97, 120, 87, 105, 100, 116, 104, 0, 103, 101, 116, 77, 97, 120, 72, 101, 105, 103, 104, 116, 0, 103, 101, 116, 65, 115, 112, 101, 99, 116, 82, 97, 116, 105, 111, 0, 103, 101, 116, 66, 111, 114, 100, 101, 114, 0, 103, 101, 116, 79, 118, 101, 114, 102, 108, 111, 119, 0, 103, 101, 116, 68, 105, 115, 112, 108, 97, 121, 0, 103, 101, 116, 80, 97, 100, 100, 105, 110, 103, 0, 105, 110, 115, 101, 114, 116, 67, 104, 105, 108, 100, 0, 114, 101, 109, 111, 118, 101, 67, 104, 105, 108, 100, 0, 103, 101, 116, 67, 104, 105, 108, 100, 67, 111, 117, 110, 116, 0, 103, 101, 116, 80, 97, 114, 101, 110, 116, 0, 103, 101, 116, 67, 104, 105, 108, 100, 0, 115, 101, 116, 77, 101, 97, 115, 117, 114, 101, 70, 117, 110, 99, 0, 117, 110, 115, 101, 116, 77, 101, 97, 115, 117, 114, 101, 70, 117, 110, 99, 0, 109, 97, 114, 107, 68, 105, 114, 116, 121, 0, 105, 115, 68, 105, 114, 116, 121, 0, 99, 97, 108, 99, 117, 108, 97, 116, 101, 76, 97, 121, 111, 117, 116, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 76, 101, 102, 116, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 82, 105, 103, 104, 116, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 84, 111, 112, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 66, 111, 116, 116, 111, 109, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 87, 105, 100, 116, 104, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 72, 101, 105, 103, 104, 116, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 76, 97, 121, 111, 117, 116, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 77, 97, 114, 103, 105, 110, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 66, 111, 114, 100, 101, 114, 0, 103, 101, 116, 67, 111, 109, 112, 117, 116, 101, 100, 80, 97, 100, 100, 105, 110, 103, 0, 67, 111, 110, 102, 105, 103, 0, 99, 114, 101, 97, 116, 101, 0, 115, 101, 116, 69, 120, 112, 101, 114, 105, 109, 101, 110, 116, 97, 108, 70, 101, 97, 116, 117, 114, 101, 69, 110, 97, 98, 108, 101, 100, 0, 115, 101, 116, 80, 111, 105, 110, 116, 83, 99, 97, 108, 101, 70, 97, 99, 116, 111, 114, 0, 105, 115, 69, 120, 112, 101, 114, 105, 109, 101, 110, 116, 97, 108, 70, 101, 97, 116, 117, 114, 101, 69, 110, 97, 98, 108, 101, 100, 0, 86, 97, 108, 117, 101, 0, 76, 97, 121, 111, 117, 116, 0, 83, 105, 122, 101, 0, 103, 101, 116, 73, 110, 115, 116, 97, 110, 99, 101, 67, 111, 117, 110, 116, 0, 73, 110, 116, 54, 52, 0, 1, 1, 1, 2, 2, 4, 4, 4, 4, 8, 8, 4, 8, 118, 111, 105, 100, 0, 98, 111, 111, 108, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 99, 98, 70, 117, 110, 99, 116, 105, 111, 110, 32, 38, 0, 99, 111, 110, 115, 116, 32, 99, 98, 70, 117, 110, 99, 116, 105, 111, 110, 32, 38, 0, 69, 120, 116, 101, 114, 110, 97, 108, 0, 66, 117, 102, 102, 101, 114, 0, 78, 66, 105, 110, 100, 73, 68, 0, 78, 66, 105, 110, 100, 0, 98, 105, 110, 100, 95, 118, 97, 108, 117, 101, 0, 114, 101, 102, 108, 101, 99, 116, 0, 113, 117, 101, 114, 121, 84, 121, 112, 101, 0, 108, 97, 108, 108, 111, 99, 0, 108, 114, 101, 115, 101, 116, 0, 123, 114, 101, 116, 117, 114, 110, 40, 95, 110, 98, 105, 110, 100, 46, 99, 97, 108, 108, 98, 97, 99, 107, 83, 105, 103, 110, 97, 116, 117, 114, 101, 76, 105, 115, 116, 91, 36, 48, 93, 46, 97, 112, 112, 108, 121, 40, 116, 104, 105, 115, 44, 97, 114, 103, 117, 109, 101, 110, 116, 115, 41, 41, 59, 125, 0, 95, 110, 98, 105, 110, 100, 95, 110, 101, 119, 0, 17, 0, 10, 0, 17, 17, 17, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 10, 17, 17, 17, 3, 10, 7, 0, 1, 19, 9, 11, 11, 0, 0, 9, 6, 11, 0, 0, 11, 0, 6, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 10, 10, 17, 17, 17, 0, 10, 0, 0, 2, 0, 9, 11, 0, 0, 0, 9, 0, 11, 0, 0, 11, 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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 4, 13, 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 14, 0, 0, 14, 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 18, 0, 0, 0, 18, 18, 18, 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, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 9, 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, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 9, 11, 0, 0, 0, 0, 0, 11, 0, 0, 11, 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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 45, 43, 32, 32, 32, 48, 88, 48, 120, 0, 40, 110, 117, 108, 108, 41, 0, 45, 48, 88, 43, 48, 88, 32, 48, 88, 45, 48, 120, 43, 48, 120, 32, 48, 120, 0, 105, 110, 102, 0, 73, 78, 70, 0, 110, 97, 110, 0, 78, 65, 78, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 46, 0, 84, 33, 34, 25, 13, 1, 2, 3, 17, 75, 28, 12, 16, 4, 11, 29, 18, 30, 39, 104, 110, 111, 112, 113, 98, 32, 5, 6, 15, 19, 20, 21, 26, 8, 22, 7, 40, 36, 23, 24, 9, 10, 14, 27, 31, 37, 35, 131, 130, 125, 38, 42, 43, 60, 61, 62, 63, 67, 71, 74, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 121, 122, 123, 124, 0, 73, 108, 108, 101, 103, 97, 108, 32, 98, 121, 116, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 68, 111, 109, 97, 105, 110, 32, 101, 114, 114, 111, 114, 0, 82, 101, 115, 117, 108, 116, 32, 110, 111, 116, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 98, 108, 101, 0, 78, 111, 116, 32, 97, 32, 116, 116, 121, 0, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 100, 101, 110, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 110, 111, 116, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 78, 111, 32, 115, 117, 99, 104, 32, 112, 114, 111, 99, 101, 115, 115, 0, 70, 105, 108, 101, 32, 101, 120, 105, 115, 116, 115, 0, 86, 97, 108, 117, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 32, 102, 111, 114, 32, 100, 97, 116, 97, 32, 116, 121, 112, 101, 0, 78, 111, 32, 115, 112, 97, 99, 101, 32, 108, 101, 102, 116, 32, 111, 110, 32, 100, 101, 118, 105, 99, 101, 0, 79, 117, 116, 32, 111, 102, 32, 109, 101, 109, 111, 114, 121, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 98, 117, 115, 121, 0, 73, 110, 116, 101, 114, 114, 117, 112, 116, 101, 100, 32, 115, 121, 115, 116, 101, 109, 32, 99, 97, 108, 108, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 105, 108, 121, 32, 117, 110, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 73, 110, 118, 97, 108, 105, 100, 32, 115, 101, 101, 107, 0, 67, 114, 111, 115, 115, 45, 100, 101, 118, 105, 99, 101, 32, 108, 105, 110, 107, 0, 82, 101, 97, 100, 45, 111, 110, 108, 121, 32, 102, 105, 108, 101, 32, 115, 121, 115, 116, 101, 109, 0, 68, 105, 114, 101, 99, 116, 111, 114, 121, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 112, 101, 101, 114, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 116, 105, 109, 101, 100, 32, 111, 117, 116, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 102, 117, 115, 101, 100, 0, 72, 111, 115, 116, 32, 105, 115, 32, 100, 111, 119, 110, 0, 72, 111, 115, 116, 32, 105, 115, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 65, 100, 100, 114, 101, 115, 115, 32, 105, 110, 32, 117, 115, 101, 0, 66, 114, 111, 107, 101, 110, 32, 112, 105, 112, 101, 0, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 32, 111, 114, 32, 97, 100, 100, 114, 101, 115, 115, 0, 66, 108, 111, 99, 107, 32, 100, 101, 118, 105, 99, 101, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 0, 78, 111, 116, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 73, 115, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 84, 101, 120, 116, 32, 102, 105, 108, 101, 32, 98, 117, 115, 121, 0, 69, 120, 101, 99, 32, 102, 111, 114, 109, 97, 116, 32, 101, 114, 114, 111, 114, 0, 73, 110, 118, 97, 108, 105, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 0, 65, 114, 103, 117, 109, 101, 110, 116, 32, 108, 105, 115, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 83, 121, 109, 98, 111, 108, 105, 99, 32, 108, 105, 110, 107, 32, 108, 111, 111, 112, 0, 70, 105, 108, 101, 110, 97, 109, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 115, 32, 105, 110, 32, 115, 121, 115, 116, 101, 109, 0, 78, 111, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 66, 97, 100, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 0, 78, 111, 32, 99, 104, 105, 108, 100, 32, 112, 114, 111, 99, 101, 115, 115, 0, 66, 97, 100, 32, 97, 100, 100, 114, 101, 115, 115, 0, 70, 105, 108, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 107, 115, 0, 78, 111, 32, 108, 111, 99, 107, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 100, 101, 97, 100, 108, 111, 99, 107, 32, 119, 111, 117, 108, 100, 32, 111, 99, 99, 117, 114, 0, 83, 116, 97, 116, 101, 32, 110, 111, 116, 32, 114, 101, 99, 111, 118, 101, 114, 97, 98, 108, 101, 0, 80, 114, 101, 118, 105, 111, 117, 115, 32, 111, 119, 110, 101, 114, 32, 100, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 99, 97, 110, 99, 101, 108, 101, 100, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 0, 78, 111, 32, 109, 101, 115, 115, 97, 103, 101, 32, 111, 102, 32, 100, 101, 115, 105, 114, 101, 100, 32, 116, 121, 112, 101, 0, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 114, 101, 109, 111, 118, 101, 100, 0, 68, 101, 118, 105, 99, 101, 32, 110, 111, 116, 32, 97, 32, 115, 116, 114, 101, 97, 109, 0, 78, 111, 32, 100, 97, 116, 97, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 68, 101, 118, 105, 99, 101, 32, 116, 105, 109, 101, 111, 117, 116, 0, 79, 117, 116, 32, 111, 102, 32, 115, 116, 114, 101, 97, 109, 115, 32, 114, 101, 115, 111, 117, 114, 99, 101, 115, 0, 76, 105, 110, 107, 32, 104, 97, 115, 32, 98, 101, 101, 110, 32, 115, 101, 118, 101, 114, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 101, 114, 114, 111, 114, 0, 66, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 0, 70, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 32, 105, 110, 32, 98, 97, 100, 32, 115, 116, 97, 116, 101, 0, 78, 111, 116, 32, 97, 32, 115, 111, 99, 107, 101, 116, 0, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 77, 101, 115, 115, 97, 103, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 102, 111, 114, 32, 115, 111, 99, 107, 101, 116, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 116, 121, 112, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 78, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 65, 100, 100, 114, 101, 115, 115, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 98, 121, 32, 112, 114, 111, 116, 111, 99, 111, 108, 0, 65, 100, 100, 114, 101, 115, 115, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 78, 101, 116, 119, 111, 114, 107, 32, 105, 115, 32, 100, 111, 119, 110, 0, 78, 101, 116, 119, 111, 114, 107, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 110, 101, 116, 119, 111, 114, 107, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 97, 98, 111, 114, 116, 101, 100, 0, 78, 111, 32, 98, 117, 102, 102, 101, 114, 32, 115, 112, 97, 99, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 83, 111, 99, 107, 101, 116, 32, 105, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 32, 97, 102, 116, 101, 114, 32, 115, 111, 99, 107, 101, 116, 32, 115, 104, 117, 116, 100, 111, 119, 110, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 83, 116, 97, 108, 101, 32, 102, 105, 108, 101, 32, 104, 97, 110, 100, 108, 101, 0, 82, 101, 109, 111, 116, 101, 32, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 81, 117, 111, 116, 97, 32, 101, 120, 99, 101, 101, 100, 101, 100, 0, 78, 111, 32, 109, 101, 100, 105, 117, 109, 32, 102, 111, 117, 110, 100, 0, 87, 114, 111, 110, 103, 32, 109, 101, 100, 105, 117, 109, 32, 116, 121, 112, 101, 0, 78, 111, 32, 101, 114, 114, 111, 114, 32, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0], \"i8\", ALLOC_NONE, Runtime.GLOBAL_BASE);var tempDoublePtr = STATICTOP;STATICTOP += 16;function _atexit(func, arg) {\n __ATEXIT__.unshift({ func: func, arg: arg });\n }function ___cxa_atexit() {\n return _atexit.apply(null, arguments);\n }function _abort() {\n Module[\"abort\"]();\n }function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj() {\n Module[\"printErr\"](\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\");abort(-1);\n }function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;return c > 3 && r && Object.defineProperty(target, key, r), r;\n }function _defineHidden(value) {\n return function (target, key) {\n Object.defineProperty(target, key, { configurable: false, enumerable: false, value: value, writable: true });\n };\n }var _nbind = {};function __nbind_free_external(num) {\n _nbind.externalList[num].dereference(num);\n }function __nbind_reference_external(num) {\n _nbind.externalList[num].reference();\n }function _llvm_stackrestore(p) {\n var self = _llvm_stacksave;var ret = self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p, 1);Runtime.stackRestore(ret);\n }function __nbind_register_pool(pageSize, usedPtr, rootPtr, pagePtr) {\n _nbind.Pool.pageSize = pageSize;_nbind.Pool.usedPtr = usedPtr / 4;_nbind.Pool.rootPtr = rootPtr;_nbind.Pool.pagePtr = pagePtr / 4;HEAP32[usedPtr / 4] = 16909060;if (HEAP8[usedPtr] == 1) _nbind.bigEndian = true;HEAP32[usedPtr / 4] = 0;_nbind.makeTypeKindTbl = (_a = {}, _a[1024] = _nbind.PrimitiveType, _a[64] = _nbind.Int64Type, _a[2048] = _nbind.BindClass, _a[3072] = _nbind.BindClassPtr, _a[4096] = _nbind.SharedClassPtr, _a[5120] = _nbind.ArrayType, _a[6144] = _nbind.ArrayType, _a[7168] = _nbind.CStringType, _a[9216] = _nbind.CallbackType, _a[10240] = _nbind.BindType, _a);_nbind.makeTypeNameTbl = { \"Buffer\": _nbind.BufferType, \"External\": _nbind.ExternalType, \"Int64\": _nbind.Int64Type, \"_nbind_new\": _nbind.CreateValueType, \"bool\": _nbind.BooleanType, \"cbFunction &\": _nbind.CallbackType, \"const cbFunction &\": _nbind.CallbackType, \"const std::string &\": _nbind.StringType, \"std::string\": _nbind.StringType };Module[\"toggleLightGC\"] = _nbind.toggleLightGC;_nbind.callUpcast = Module[\"dynCall_ii\"];var globalScope = _nbind.makeType(_nbind.constructType, { flags: 2048, id: 0, name: \"\" });globalScope.proto = Module;_nbind.BindClass.list.push(globalScope);var _a;\n }function _emscripten_set_main_loop_timing(mode, value) {\n Browser.mainLoop.timingMode = mode;Browser.mainLoop.timingValue = value;if (!Browser.mainLoop.func) {\n return 1;\n }if (mode == 0) {\n Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {\n var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0;setTimeout(Browser.mainLoop.runner, timeUntilNextTick);\n };Browser.mainLoop.method = \"timeout\";\n } else if (mode == 1) {\n Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {\n Browser.requestAnimationFrame(Browser.mainLoop.runner);\n };Browser.mainLoop.method = \"rAF\";\n } else if (mode == 2) {\n if (!window[\"setImmediate\"]) {\n var setImmediates = [];var emscriptenMainLoopMessageId = \"setimmediate\";function Browser_setImmediate_messageHandler(event) {\n if (event.source === window && event.data === emscriptenMainLoopMessageId) {\n event.stopPropagation();setImmediates.shift()();\n }\n }window.addEventListener(\"message\", Browser_setImmediate_messageHandler, true);window[\"setImmediate\"] = function Browser_emulated_setImmediate(func) {\n setImmediates.push(func);if (ENVIRONMENT_IS_WORKER) {\n if (Module[\"setImmediates\"] === undefined) Module[\"setImmediates\"] = [];Module[\"setImmediates\"].push(func);window.postMessage({ target: emscriptenMainLoopMessageId });\n } else window.postMessage(emscriptenMainLoopMessageId, \"*\");\n };\n }Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {\n window[\"setImmediate\"](Browser.mainLoop.runner);\n };Browser.mainLoop.method = \"immediate\";\n }return 0;\n }function _emscripten_get_now() {\n abort();\n }function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) {\n Module[\"noExitRuntime\"] = true;assert(!Browser.mainLoop.func, \"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\");Browser.mainLoop.func = func;Browser.mainLoop.arg = arg;var browserIterationFunc;if (typeof arg !== \"undefined\") {\n browserIterationFunc = function () {\n Module[\"dynCall_vi\"](func, arg);\n };\n } else {\n browserIterationFunc = function () {\n Module[\"dynCall_v\"](func);\n };\n }var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner = function Browser_mainLoop_runner() {\n if (ABORT) return;if (Browser.mainLoop.queue.length > 0) {\n var start = Date.now();var blocker = Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if (Browser.mainLoop.remainingBlockers) {\n var remaining = Browser.mainLoop.remainingBlockers;var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);if (blocker.counted) {\n Browser.mainLoop.remainingBlockers = next;\n } else {\n next = next + .5;Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;\n }\n }console.log('main loop blocker \"' + blocker.name + '\" took ' + (Date.now() - start) + \" ms\");Browser.mainLoop.updateStatus();if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;setTimeout(Browser.mainLoop.runner, 0);return;\n }if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {\n Browser.mainLoop.scheduler();return;\n } else if (Browser.mainLoop.timingMode == 0) {\n Browser.mainLoop.tickStartTime = _emscripten_get_now();\n }if (Browser.mainLoop.method === \"timeout\" && Module.ctx) {\n Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\");Browser.mainLoop.method = \"\";\n }Browser.mainLoop.runIter(browserIterationFunc);if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;if (typeof SDL === \"object\" && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler();\n };if (!noSetTiming) {\n if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps);else _emscripten_set_main_loop_timing(1, 1);Browser.mainLoop.scheduler();\n }if (simulateInfiniteLoop) {\n throw \"SimulateInfiniteLoop\";\n }\n }var Browser = { mainLoop: { scheduler: null, method: \"\", currentlyRunningMainloop: 0, func: null, arg: 0, timingMode: 0, timingValue: 0, currentFrameNumber: 0, queue: [], pause: function () {\n Browser.mainLoop.scheduler = null;Browser.mainLoop.currentlyRunningMainloop++;\n }, resume: function () {\n Browser.mainLoop.currentlyRunningMainloop++;var timingMode = Browser.mainLoop.timingMode;var timingValue = Browser.mainLoop.timingValue;var func = Browser.mainLoop.func;Browser.mainLoop.func = null;_emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true);_emscripten_set_main_loop_timing(timingMode, timingValue);Browser.mainLoop.scheduler();\n }, updateStatus: function () {\n if (Module[\"setStatus\"]) {\n var message = Module[\"statusMessage\"] || \"Please wait...\";var remaining = Browser.mainLoop.remainingBlockers;var expected = Browser.mainLoop.expectedBlockers;if (remaining) {\n if (remaining < expected) {\n Module[\"setStatus\"](message + \" (\" + (expected - remaining) + \"/\" + expected + \")\");\n } else {\n Module[\"setStatus\"](message);\n }\n } else {\n Module[\"setStatus\"](\"\");\n }\n }\n }, runIter: function (func) {\n if (ABORT) return;if (Module[\"preMainLoop\"]) {\n var preRet = Module[\"preMainLoop\"]();if (preRet === false) {\n return;\n }\n }try {\n func();\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else {\n if (e && typeof e === \"object\" && e.stack) Module.printErr(\"exception thrown: \" + [e, e.stack]);throw e;\n }\n }if (Module[\"postMainLoop\"]) Module[\"postMainLoop\"]();\n } }, isFullscreen: false, pointerLock: false, moduleContextCreatedCallbacks: [], workers: [], init: function () {\n if (!Module[\"preloadPlugins\"]) Module[\"preloadPlugins\"] = [];if (Browser.initted) return;Browser.initted = true;try {\n new Blob();Browser.hasBlobConstructor = true;\n } catch (e) {\n Browser.hasBlobConstructor = false;console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\");\n }Browser.BlobBuilder = typeof MozBlobBuilder != \"undefined\" ? MozBlobBuilder : typeof WebKitBlobBuilder != \"undefined\" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log(\"warning: no BlobBuilder\") : null;Browser.URLObject = typeof window != \"undefined\" ? window.URL ? window.URL : window.webkitURL : undefined;if (!Module.noImageDecoding && typeof Browser.URLObject === \"undefined\") {\n console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\");Module.noImageDecoding = true;\n }var imagePlugin = {};imagePlugin[\"canHandle\"] = function imagePlugin_canHandle(name) {\n return !Module.noImageDecoding && /\\.(jpg|jpeg|png|bmp)$/i.test(name);\n };imagePlugin[\"handle\"] = function imagePlugin_handle(byteArray, name, onload, onerror) {\n var b = null;if (Browser.hasBlobConstructor) {\n try {\n b = new Blob([byteArray], { type: Browser.getMimetype(name) });if (b.size !== byteArray.length) {\n b = new Blob([new Uint8Array(byteArray).buffer], { type: Browser.getMimetype(name) });\n }\n } catch (e) {\n Runtime.warnOnce(\"Blob constructor present but fails: \" + e + \"; falling back to blob builder\");\n }\n }if (!b) {\n var bb = new Browser.BlobBuilder();bb.append(new Uint8Array(byteArray).buffer);b = bb.getBlob();\n }var url = Browser.URLObject.createObjectURL(b);var img = new Image();img.onload = function img_onload() {\n assert(img.complete, \"Image \" + name + \" could not be decoded\");var canvas = document.createElement(\"canvas\");canvas.width = img.width;canvas.height = img.height;var ctx = canvas.getContext(\"2d\");ctx.drawImage(img, 0, 0);Module[\"preloadedImages\"][name] = canvas;Browser.URLObject.revokeObjectURL(url);if (onload) onload(byteArray);\n };img.onerror = function img_onerror(event) {\n console.log(\"Image \" + url + \" could not be decoded\");if (onerror) onerror();\n };img.src = url;\n };Module[\"preloadPlugins\"].push(imagePlugin);var audioPlugin = {};audioPlugin[\"canHandle\"] = function audioPlugin_canHandle(name) {\n return !Module.noAudioDecoding && name.substr(-4) in { \".ogg\": 1, \".wav\": 1, \".mp3\": 1 };\n };audioPlugin[\"handle\"] = function audioPlugin_handle(byteArray, name, onload, onerror) {\n var done = false;function finish(audio) {\n if (done) return;done = true;Module[\"preloadedAudios\"][name] = audio;if (onload) onload(byteArray);\n }function fail() {\n if (done) return;done = true;Module[\"preloadedAudios\"][name] = new Audio();if (onerror) onerror();\n }if (Browser.hasBlobConstructor) {\n try {\n var b = new Blob([byteArray], { type: Browser.getMimetype(name) });\n } catch (e) {\n return fail();\n }var url = Browser.URLObject.createObjectURL(b);var audio = new Audio();audio.addEventListener(\"canplaythrough\", function () {\n finish(audio);\n }, false);audio.onerror = function audio_onerror(event) {\n if (done) return;console.log(\"warning: browser could not fully decode audio \" + name + \", trying slower base64 approach\");function encode64(data) {\n var BASE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var PAD = \"=\";var ret = \"\";var leftchar = 0;var leftbits = 0;for (var i = 0; i < data.length; i++) {\n leftchar = leftchar << 8 | data[i];leftbits += 8;while (leftbits >= 6) {\n var curr = leftchar >> leftbits - 6 & 63;leftbits -= 6;ret += BASE[curr];\n }\n }if (leftbits == 2) {\n ret += BASE[(leftchar & 3) << 4];ret += PAD + PAD;\n } else if (leftbits == 4) {\n ret += BASE[(leftchar & 15) << 2];ret += PAD;\n }return ret;\n }audio.src = \"data:audio/x-\" + name.substr(-3) + \";base64,\" + encode64(byteArray);finish(audio);\n };audio.src = url;Browser.safeSetTimeout(function () {\n finish(audio);\n }, 1e4);\n } else {\n return fail();\n }\n };Module[\"preloadPlugins\"].push(audioPlugin);function pointerLockChange() {\n Browser.pointerLock = document[\"pointerLockElement\"] === Module[\"canvas\"] || document[\"mozPointerLockElement\"] === Module[\"canvas\"] || document[\"webkitPointerLockElement\"] === Module[\"canvas\"] || document[\"msPointerLockElement\"] === Module[\"canvas\"];\n }var canvas = Module[\"canvas\"];if (canvas) {\n canvas.requestPointerLock = canvas[\"requestPointerLock\"] || canvas[\"mozRequestPointerLock\"] || canvas[\"webkitRequestPointerLock\"] || canvas[\"msRequestPointerLock\"] || function () {};canvas.exitPointerLock = document[\"exitPointerLock\"] || document[\"mozExitPointerLock\"] || document[\"webkitExitPointerLock\"] || document[\"msExitPointerLock\"] || function () {};canvas.exitPointerLock = canvas.exitPointerLock.bind(document);document.addEventListener(\"pointerlockchange\", pointerLockChange, false);document.addEventListener(\"mozpointerlockchange\", pointerLockChange, false);document.addEventListener(\"webkitpointerlockchange\", pointerLockChange, false);document.addEventListener(\"mspointerlockchange\", pointerLockChange, false);if (Module[\"elementPointerLock\"]) {\n canvas.addEventListener(\"click\", function (ev) {\n if (!Browser.pointerLock && Module[\"canvas\"].requestPointerLock) {\n Module[\"canvas\"].requestPointerLock();ev.preventDefault();\n }\n }, false);\n }\n }\n }, createContext: function (canvas, useWebGL, setInModule, webGLContextAttributes) {\n if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;var ctx;var contextHandle;if (useWebGL) {\n var contextAttributes = { antialias: false, alpha: false };if (webGLContextAttributes) {\n for (var attribute in webGLContextAttributes) {\n contextAttributes[attribute] = webGLContextAttributes[attribute];\n }\n }contextHandle = GL.createContext(canvas, contextAttributes);if (contextHandle) {\n ctx = GL.getContext(contextHandle).GLctx;\n }\n } else {\n ctx = canvas.getContext(\"2d\");\n }if (!ctx) return null;if (setInModule) {\n if (!useWebGL) assert(typeof GLctx === \"undefined\", \"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\");Module.ctx = ctx;if (useWebGL) GL.makeContextCurrent(contextHandle);Module.useWebGL = useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function (callback) {\n callback();\n });Browser.init();\n }return ctx;\n }, destroyContext: function (canvas, useWebGL, setInModule) {}, fullscreenHandlersInstalled: false, lockPointer: undefined, resizeCanvas: undefined, requestFullscreen: function (lockPointer, resizeCanvas, vrDevice) {\n Browser.lockPointer = lockPointer;Browser.resizeCanvas = resizeCanvas;Browser.vrDevice = vrDevice;if (typeof Browser.lockPointer === \"undefined\") Browser.lockPointer = true;if (typeof Browser.resizeCanvas === \"undefined\") Browser.resizeCanvas = false;if (typeof Browser.vrDevice === \"undefined\") Browser.vrDevice = null;var canvas = Module[\"canvas\"];function fullscreenChange() {\n Browser.isFullscreen = false;var canvasContainer = canvas.parentNode;if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvasContainer) {\n canvas.exitFullscreen = document[\"exitFullscreen\"] || document[\"cancelFullScreen\"] || document[\"mozCancelFullScreen\"] || document[\"msExitFullscreen\"] || document[\"webkitCancelFullScreen\"] || function () {};canvas.exitFullscreen = canvas.exitFullscreen.bind(document);if (Browser.lockPointer) canvas.requestPointerLock();Browser.isFullscreen = true;if (Browser.resizeCanvas) Browser.setFullscreenCanvasSize();\n } else {\n canvasContainer.parentNode.insertBefore(canvas, canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();\n }if (Module[\"onFullScreen\"]) Module[\"onFullScreen\"](Browser.isFullscreen);if (Module[\"onFullscreen\"]) Module[\"onFullscreen\"](Browser.isFullscreen);Browser.updateCanvasDimensions(canvas);\n }if (!Browser.fullscreenHandlersInstalled) {\n Browser.fullscreenHandlersInstalled = true;document.addEventListener(\"fullscreenchange\", fullscreenChange, false);document.addEventListener(\"mozfullscreenchange\", fullscreenChange, false);document.addEventListener(\"webkitfullscreenchange\", fullscreenChange, false);document.addEventListener(\"MSFullscreenChange\", fullscreenChange, false);\n }var canvasContainer = document.createElement(\"div\");canvas.parentNode.insertBefore(canvasContainer, canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen = canvasContainer[\"requestFullscreen\"] || canvasContainer[\"mozRequestFullScreen\"] || canvasContainer[\"msRequestFullscreen\"] || (canvasContainer[\"webkitRequestFullscreen\"] ? function () {\n canvasContainer[\"webkitRequestFullscreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]);\n } : null) || (canvasContainer[\"webkitRequestFullScreen\"] ? function () {\n canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]);\n } : null);if (vrDevice) {\n canvasContainer.requestFullscreen({ vrDisplay: vrDevice });\n } else {\n canvasContainer.requestFullscreen();\n }\n }, requestFullScreen: function (lockPointer, resizeCanvas, vrDevice) {\n Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\");Browser.requestFullScreen = function (lockPointer, resizeCanvas, vrDevice) {\n return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n };return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n }, nextRAF: 0, fakeRequestAnimationFrame: function (func) {\n var now = Date.now();if (Browser.nextRAF === 0) {\n Browser.nextRAF = now + 1e3 / 60;\n } else {\n while (now + 2 >= Browser.nextRAF) {\n Browser.nextRAF += 1e3 / 60;\n }\n }var delay = Math.max(Browser.nextRAF - now, 0);setTimeout(func, delay);\n }, requestAnimationFrame: function requestAnimationFrame(func) {\n if (typeof window === \"undefined\") {\n Browser.fakeRequestAnimationFrame(func);\n } else {\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = window[\"requestAnimationFrame\"] || window[\"mozRequestAnimationFrame\"] || window[\"webkitRequestAnimationFrame\"] || window[\"msRequestAnimationFrame\"] || window[\"oRequestAnimationFrame\"] || Browser.fakeRequestAnimationFrame;\n }window.requestAnimationFrame(func);\n }\n }, safeCallback: function (func) {\n return function () {\n if (!ABORT) return func.apply(null, arguments);\n };\n }, allowAsyncCallbacks: true, queuedAsyncCallbacks: [], pauseAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = false;\n }, resumeAsyncCallbacks: function () {\n Browser.allowAsyncCallbacks = true;if (Browser.queuedAsyncCallbacks.length > 0) {\n var callbacks = Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks = [];callbacks.forEach(function (func) {\n func();\n });\n }\n }, safeRequestAnimationFrame: function (func) {\n return Browser.requestAnimationFrame(function () {\n if (ABORT) return;if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n });\n }, safeSetTimeout: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;return setTimeout(function () {\n if (ABORT) return;if (Browser.allowAsyncCallbacks) {\n func();\n } else {\n Browser.queuedAsyncCallbacks.push(func);\n }\n }, timeout);\n }, safeSetInterval: function (func, timeout) {\n Module[\"noExitRuntime\"] = true;return setInterval(function () {\n if (ABORT) return;if (Browser.allowAsyncCallbacks) {\n func();\n }\n }, timeout);\n }, getMimetype: function (name) {\n return { \"jpg\": \"image/jpeg\", \"jpeg\": \"image/jpeg\", \"png\": \"image/png\", \"bmp\": \"image/bmp\", \"ogg\": \"audio/ogg\", \"wav\": \"audio/wav\", \"mp3\": \"audio/mpeg\" }[name.substr(name.lastIndexOf(\".\") + 1)];\n }, getUserMedia: function (func) {\n if (!window.getUserMedia) {\n window.getUserMedia = navigator[\"getUserMedia\"] || navigator[\"mozGetUserMedia\"];\n }window.getUserMedia(func);\n }, getMovementX: function (event) {\n return event[\"movementX\"] || event[\"mozMovementX\"] || event[\"webkitMovementX\"] || 0;\n }, getMovementY: function (event) {\n return event[\"movementY\"] || event[\"mozMovementY\"] || event[\"webkitMovementY\"] || 0;\n }, getMouseWheelDelta: function (event) {\n var delta = 0;switch (event.type) {case \"DOMMouseScroll\":\n delta = event.detail;break;case \"mousewheel\":\n delta = event.wheelDelta;break;case \"wheel\":\n delta = event[\"deltaY\"];break;default:\n throw \"unrecognized mouse wheel event: \" + event.type;}return delta;\n }, mouseX: 0, mouseY: 0, mouseMovementX: 0, mouseMovementY: 0, touches: {}, lastTouches: {}, calculateMouseEvent: function (event) {\n if (Browser.pointerLock) {\n if (event.type != \"mousemove\" && \"mozMovementX\" in event) {\n Browser.mouseMovementX = Browser.mouseMovementY = 0;\n } else {\n Browser.mouseMovementX = Browser.getMovementX(event);Browser.mouseMovementY = Browser.getMovementY(event);\n }if (typeof SDL != \"undefined\") {\n Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;\n } else {\n Browser.mouseX += Browser.mouseMovementX;Browser.mouseY += Browser.mouseMovementY;\n }\n } else {\n var rect = Module[\"canvas\"].getBoundingClientRect();var cw = Module[\"canvas\"].width;var ch = Module[\"canvas\"].height;var scrollX = typeof window.scrollX !== \"undefined\" ? window.scrollX : window.pageXOffset;var scrollY = typeof window.scrollY !== \"undefined\" ? window.scrollY : window.pageYOffset;if (event.type === \"touchstart\" || event.type === \"touchend\" || event.type === \"touchmove\") {\n var touch = event.touch;if (touch === undefined) {\n return;\n }var adjustedX = touch.pageX - (scrollX + rect.left);var adjustedY = touch.pageY - (scrollY + rect.top);adjustedX = adjustedX * (cw / rect.width);adjustedY = adjustedY * (ch / rect.height);var coords = { x: adjustedX, y: adjustedY };if (event.type === \"touchstart\") {\n Browser.lastTouches[touch.identifier] = coords;Browser.touches[touch.identifier] = coords;\n } else if (event.type === \"touchend\" || event.type === \"touchmove\") {\n var last = Browser.touches[touch.identifier];if (!last) last = coords;Browser.lastTouches[touch.identifier] = last;Browser.touches[touch.identifier] = coords;\n }return;\n }var x = event.pageX - (scrollX + rect.left);var y = event.pageY - (scrollY + rect.top);x = x * (cw / rect.width);y = y * (ch / rect.height);Browser.mouseMovementX = x - Browser.mouseX;Browser.mouseMovementY = y - Browser.mouseY;Browser.mouseX = x;Browser.mouseY = y;\n }\n }, asyncLoad: function (url, onload, onerror, noRunDep) {\n var dep = !noRunDep ? getUniqueRunDependency(\"al \" + url) : \"\";Module[\"readAsync\"](url, function (arrayBuffer) {\n assert(arrayBuffer, 'Loading data file \"' + url + '\" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if (dep) removeRunDependency(dep);\n }, function (event) {\n if (onerror) {\n onerror();\n } else {\n throw 'Loading data file \"' + url + '\" failed.';\n }\n });if (dep) addRunDependency(dep);\n }, resizeListeners: [], updateResizeListeners: function () {\n var canvas = Module[\"canvas\"];Browser.resizeListeners.forEach(function (listener) {\n listener(canvas.width, canvas.height);\n });\n }, setCanvasSize: function (width, height, noUpdates) {\n var canvas = Module[\"canvas\"];Browser.updateCanvasDimensions(canvas, width, height);if (!noUpdates) Browser.updateResizeListeners();\n }, windowedWidth: 0, windowedHeight: 0, setFullscreenCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];flags = flags | 8388608;HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;\n }Browser.updateResizeListeners();\n }, setWindowedCanvasSize: function () {\n if (typeof SDL != \"undefined\") {\n var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];flags = flags & ~8388608;HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;\n }Browser.updateResizeListeners();\n }, updateCanvasDimensions: function (canvas, wNative, hNative) {\n if (wNative && hNative) {\n canvas.widthNative = wNative;canvas.heightNative = hNative;\n } else {\n wNative = canvas.widthNative;hNative = canvas.heightNative;\n }var w = wNative;var h = hNative;if (Module[\"forcedAspectRatio\"] && Module[\"forcedAspectRatio\"] > 0) {\n if (w / h < Module[\"forcedAspectRatio\"]) {\n w = Math.round(h * Module[\"forcedAspectRatio\"]);\n } else {\n h = Math.round(w / Module[\"forcedAspectRatio\"]);\n }\n }if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvas.parentNode && typeof screen != \"undefined\") {\n var factor = Math.min(screen.width / w, screen.height / h);w = Math.round(w * factor);h = Math.round(h * factor);\n }if (Browser.resizeCanvas) {\n if (canvas.width != w) canvas.width = w;if (canvas.height != h) canvas.height = h;if (typeof canvas.style != \"undefined\") {\n canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\");\n }\n } else {\n if (canvas.width != wNative) canvas.width = wNative;if (canvas.height != hNative) canvas.height = hNative;if (typeof canvas.style != \"undefined\") {\n if (w != wNative || h != hNative) {\n canvas.style.setProperty(\"width\", w + \"px\", \"important\");canvas.style.setProperty(\"height\", h + \"px\", \"important\");\n } else {\n canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\");\n }\n }\n }\n }, wgetRequests: {}, nextWgetRequestHandle: 0, getNextWgetRequestHandle: function () {\n var handle = Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle;\n } };var SYSCALLS = { varargs: 0, get: function (varargs) {\n SYSCALLS.varargs += 4;var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];return ret;\n }, getStr: function () {\n var ret = Pointer_stringify(SYSCALLS.get());return ret;\n }, get64: function () {\n var low = SYSCALLS.get(),\n high = SYSCALLS.get();if (low >= 0) assert(high === 0);else assert(high === -1);return low;\n }, getZero: function () {\n assert(SYSCALLS.get() === 0);\n } };function ___syscall6(which, varargs) {\n SYSCALLS.varargs = varargs;try {\n var stream = SYSCALLS.getStreamFromFD();FS.close(stream);return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);return -e.errno;\n }\n }function ___syscall54(which, varargs) {\n SYSCALLS.varargs = varargs;try {\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);return -e.errno;\n }\n }function _typeModule(self) {\n var structureList = [[0, 1, \"X\"], [1, 1, \"const X\"], [128, 1, \"X *\"], [256, 1, \"X &\"], [384, 1, \"X &&\"], [512, 1, \"std::shared_ptr\"], [640, 1, \"std::unique_ptr\"], [5120, 1, \"std::vector\"], [6144, 2, \"std::array\"], [9216, -1, \"std::function\"]];function applyStructure(outerName, outerFlags, innerName, innerFlags, param, flip) {\n if (outerFlags == 1) {\n var ref = innerFlags & 896;if (ref == 128 || ref == 256 || ref == 384) outerName = \"X const\";\n }var name;if (flip) {\n name = innerName.replace(\"X\", outerName).replace(\"Y\", param);\n } else {\n name = outerName.replace(\"X\", innerName).replace(\"Y\", param);\n }return name.replace(/([*&]) (?=[*&])/g, \"$1\");\n }function reportProblem(problem, id, kind, structureType, place) {\n throw new Error(problem + \" type \" + kind.replace(\"X\", id + \"?\") + (structureType ? \" with flag \" + structureType : \"\") + \" in \" + place);\n }function getComplexType(id, constructType, getType, queryType, place, kind, prevStructure, depth) {\n if (kind === void 0) {\n kind = \"X\";\n }if (depth === void 0) {\n depth = 1;\n }var result = getType(id);if (result) return result;var query = queryType(id);var structureType = query.placeholderFlag;var structure = structureList[structureType];if (prevStructure && structure) {\n kind = applyStructure(prevStructure[2], prevStructure[0], kind, structure[0], \"?\", true);\n }var problem;if (structureType == 0) problem = \"Unbound\";if (structureType >= 10) problem = \"Corrupt\";if (depth > 20) problem = \"Deeply nested\";if (problem) reportProblem(problem, id, kind, structureType, place || \"?\");var subId = query.paramList[0];var subType = getComplexType(subId, constructType, getType, queryType, place, kind, structure, depth + 1);var srcSpec;var spec = { flags: structure[0], id: id, name: \"\", paramList: [subType] };var argList = [];var structureParam = \"?\";switch (query.placeholderFlag) {case 1:\n srcSpec = subType.spec;break;case 2:\n if ((subType.flags & 15360) == 1024 && subType.spec.ptrSize == 1) {\n spec.flags = 7168;break;\n };case 3:case 6:case 5:\n srcSpec = subType.spec;if ((subType.flags & 15360) != 2048) {}break;case 8:\n structureParam = \"\" + query.paramList[1];spec.paramList.push(query.paramList[1]);break;case 9:\n for (var _i = 0, _a = query.paramList[1]; _i < _a.length; _i++) {\n var paramId = _a[_i];var paramType = getComplexType(paramId, constructType, getType, queryType, place, kind, structure, depth + 1);argList.push(paramType.name);spec.paramList.push(paramType);\n }structureParam = argList.join(\", \");break;default:\n break;}spec.name = applyStructure(structure[2], structure[0], subType.name, subType.flags, structureParam);if (srcSpec) {\n for (var _b = 0, _c = Object.keys(srcSpec); _b < _c.length; _b++) {\n var key = _c[_b];spec[key] = spec[key] || srcSpec[key];\n }spec.flags |= srcSpec.flags;\n }return makeType(constructType, spec);\n }function makeType(constructType, spec) {\n var flags = spec.flags;var refKind = flags & 896;var kind = flags & 15360;if (!spec.name && kind == 1024) {\n if (spec.ptrSize == 1) {\n spec.name = (flags & 16 ? \"\" : (flags & 8 ? \"un\" : \"\") + \"signed \") + \"char\";\n } else {\n spec.name = (flags & 8 ? \"u\" : \"\") + (flags & 32 ? \"float\" : \"int\") + (spec.ptrSize * 8 + \"_t\");\n }\n }if (spec.ptrSize == 8 && !(flags & 32)) kind = 64;if (kind == 2048) {\n if (refKind == 512 || refKind == 640) {\n kind = 4096;\n } else if (refKind) kind = 3072;\n }return constructType(kind, spec);\n }var Type = function () {\n function Type(spec) {\n this.id = spec.id;this.name = spec.name;this.flags = spec.flags;this.spec = spec;\n }Type.prototype.toString = function () {\n return this.name;\n };return Type;\n }();var output = { Type: Type, getComplexType: getComplexType, makeType: makeType, structureList: structureList };self.output = output;return self.output || output;\n }function __nbind_register_type(id, namePtr) {\n var name = _nbind.readAsciiString(namePtr);var spec = { flags: 10240, id: id, name: name };_nbind.makeType(_nbind.constructType, spec);\n }function __nbind_register_callback_signature(typeListPtr, typeCount) {\n var typeList = _nbind.readTypeIdList(typeListPtr, typeCount);var num = _nbind.callbackSignatureList.length;_nbind.callbackSignatureList[num] = _nbind.makeJSCaller(typeList);return num;\n }function __extends(Class, Parent) {\n for (var key in Parent) if (Parent.hasOwnProperty(key)) Class[key] = Parent[key];function Base() {\n this.constructor = Class;\n }Base.prototype = Parent.prototype;Class.prototype = new Base();\n }function __nbind_register_class(idListPtr, policyListPtr, superListPtr, upcastListPtr, superCount, destructorPtr, namePtr) {\n var name = _nbind.readAsciiString(namePtr);var policyTbl = _nbind.readPolicyList(policyListPtr);var idList = HEAPU32.subarray(idListPtr / 4, idListPtr / 4 + 2);var spec = { flags: 2048 | (policyTbl[\"Value\"] ? 2 : 0), id: idList[0], name: name };var bindClass = _nbind.makeType(_nbind.constructType, spec);bindClass.ptrType = _nbind.getComplexType(idList[1], _nbind.constructType, _nbind.getType, _nbind.queryType);bindClass.destroy = _nbind.makeMethodCaller(bindClass.ptrType, { boundID: spec.id, flags: 0, name: \"destroy\", num: 0, ptr: destructorPtr, title: bindClass.name + \".free\", typeList: [\"void\", \"uint32_t\", \"uint32_t\"] });if (superCount) {\n bindClass.superIdList = Array.prototype.slice.call(HEAPU32.subarray(superListPtr / 4, superListPtr / 4 + superCount));bindClass.upcastList = Array.prototype.slice.call(HEAPU32.subarray(upcastListPtr / 4, upcastListPtr / 4 + superCount));\n }Module[bindClass.name] = bindClass.makeBound(policyTbl);_nbind.BindClass.list.push(bindClass);\n }function _removeAccessorPrefix(name) {\n var prefixMatcher = /^[Gg]et_?([A-Z]?([A-Z]?))/;return name.replace(prefixMatcher, function (match, initial, second) {\n return second ? initial : initial.toLowerCase();\n });\n }function __nbind_register_function(boundID, policyListPtr, typeListPtr, typeCount, ptr, direct, signatureType, namePtr, num, flags) {\n var bindClass = _nbind.getType(boundID);var policyTbl = _nbind.readPolicyList(policyListPtr);var typeList = _nbind.readTypeIdList(typeListPtr, typeCount);var specList;if (signatureType == 5) {\n specList = [{ direct: ptr, name: \"__nbindConstructor\", ptr: 0, title: bindClass.name + \" constructor\", typeList: [\"uint32_t\"].concat(typeList.slice(1)) }, { direct: direct, name: \"__nbindValueConstructor\", ptr: 0, title: bindClass.name + \" value constructor\", typeList: [\"void\", \"uint32_t\"].concat(typeList.slice(1)) }];\n } else {\n var name_1 = _nbind.readAsciiString(namePtr);var title = (bindClass.name && bindClass.name + \".\") + name_1;if (signatureType == 3 || signatureType == 4) {\n name_1 = _removeAccessorPrefix(name_1);\n }specList = [{ boundID: boundID, direct: direct, name: name_1, ptr: ptr, title: title, typeList: typeList }];\n }for (var _i = 0, specList_1 = specList; _i < specList_1.length; _i++) {\n var spec = specList_1[_i];spec.signatureType = signatureType;spec.policyTbl = policyTbl;spec.num = num;spec.flags = flags;bindClass.addMethod(spec);\n }\n }function _nbind_value(name, proto) {\n if (!_nbind.typeNameTbl[name]) _nbind.throwError(\"Unknown value type \" + name);Module[\"NBind\"].bind_value(name, proto);_defineHidden(_nbind.typeNameTbl[name].proto.prototype.__nbindValueConstructor)(proto.prototype, \"__nbindValueConstructor\");\n }Module[\"_nbind_value\"] = _nbind_value;function __nbind_get_value_object(num, ptr) {\n var obj = _nbind.popValue(num);if (!obj.fromJS) {\n throw new Error(\"Object \" + obj + \" has no fromJS function\");\n }obj.fromJS(function () {\n obj.__nbindValueConstructor.apply(this, Array.prototype.concat.apply([ptr], arguments));\n });\n }function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);return dest;\n }function __nbind_register_primitive(id, size, flags) {\n var spec = { flags: 1024 | flags, id: id, ptrSize: size };_nbind.makeType(_nbind.constructType, spec);\n }var cttz_i8 = allocate([8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0], \"i8\", ALLOC_STATIC);function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) HEAP32[Module[\"___errno_location\"]() >> 2] = value;return value;\n }function _llvm_stacksave() {\n var self = _llvm_stacksave;if (!self.LLVM_SAVEDSTACKS) {\n self.LLVM_SAVEDSTACKS = [];\n }self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());return self.LLVM_SAVEDSTACKS.length - 1;\n }function ___syscall140(which, varargs) {\n SYSCALLS.varargs = varargs;try {\n var stream = SYSCALLS.getStreamFromFD(),\n offset_high = SYSCALLS.get(),\n offset_low = SYSCALLS.get(),\n result = SYSCALLS.get(),\n whence = SYSCALLS.get();var offset = offset_low;FS.llseek(stream, offset, whence);HEAP32[result >> 2] = stream.position;if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);return -e.errno;\n }\n }function ___syscall146(which, varargs) {\n SYSCALLS.varargs = varargs;try {\n var stream = SYSCALLS.get(),\n iov = SYSCALLS.get(),\n iovcnt = SYSCALLS.get();var ret = 0;if (!___syscall146.buffer) {\n ___syscall146.buffers = [null, [], []];___syscall146.printChar = function (stream, curr) {\n var buffer = ___syscall146.buffers[stream];assert(buffer);if (curr === 0 || curr === 10) {\n (stream === 1 ? Module[\"print\"] : Module[\"printErr\"])(UTF8ArrayToString(buffer, 0));buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n };\n }for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];var len = HEAP32[iov + (i * 8 + 4) >> 2];for (var j = 0; j < len; j++) {\n ___syscall146.printChar(stream, HEAPU8[ptr + j]);\n }ret += len;\n }return ret;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);return -e.errno;\n }\n }function __nbind_finish() {\n for (var _i = 0, _a = _nbind.BindClass.list; _i < _a.length; _i++) {\n var bindClass = _a[_i];bindClass.finish();\n }\n }var ___dso_handle = STATICTOP;STATICTOP += 16;(function (_nbind) {\n var typeIdTbl = {};_nbind.typeNameTbl = {};var Pool = function () {\n function Pool() {}Pool.lalloc = function (size) {\n size = size + 7 & ~7;var used = HEAPU32[Pool.usedPtr];if (size > Pool.pageSize / 2 || size > Pool.pageSize - used) {\n var NBind = _nbind.typeNameTbl[\"NBind\"].proto;return NBind.lalloc(size);\n } else {\n HEAPU32[Pool.usedPtr] = used + size;return Pool.rootPtr + used;\n }\n };Pool.lreset = function (used, page) {\n var topPage = HEAPU32[Pool.pagePtr];if (topPage) {\n var NBind = _nbind.typeNameTbl[\"NBind\"].proto;NBind.lreset(used, page);\n } else {\n HEAPU32[Pool.usedPtr] = used;\n }\n };return Pool;\n }();_nbind.Pool = Pool;function constructType(kind, spec) {\n var construct = kind == 10240 ? _nbind.makeTypeNameTbl[spec.name] || _nbind.BindType : _nbind.makeTypeKindTbl[kind];var bindType = new construct(spec);typeIdTbl[spec.id] = bindType;_nbind.typeNameTbl[spec.name] = bindType;return bindType;\n }_nbind.constructType = constructType;function getType(id) {\n return typeIdTbl[id];\n }_nbind.getType = getType;function queryType(id) {\n var placeholderFlag = HEAPU8[id];var paramCount = _nbind.structureList[placeholderFlag][1];id /= 4;if (paramCount < 0) {\n ++id;paramCount = HEAPU32[id] + 1;\n }var paramList = Array.prototype.slice.call(HEAPU32.subarray(id + 1, id + 1 + paramCount));if (placeholderFlag == 9) {\n paramList = [paramList[0], paramList.slice(1)];\n }return { paramList: paramList, placeholderFlag: placeholderFlag };\n }_nbind.queryType = queryType;function getTypes(idList, place) {\n return idList.map(function (id) {\n return typeof id == \"number\" ? _nbind.getComplexType(id, constructType, getType, queryType, place) : _nbind.typeNameTbl[id];\n });\n }_nbind.getTypes = getTypes;function readTypeIdList(typeListPtr, typeCount) {\n return Array.prototype.slice.call(HEAPU32, typeListPtr / 4, typeListPtr / 4 + typeCount);\n }_nbind.readTypeIdList = readTypeIdList;function readAsciiString(ptr) {\n var endPtr = ptr;while (HEAPU8[endPtr++]);return String.fromCharCode.apply(\"\", HEAPU8.subarray(ptr, endPtr - 1));\n }_nbind.readAsciiString = readAsciiString;function readPolicyList(policyListPtr) {\n var policyTbl = {};if (policyListPtr) {\n while (1) {\n var namePtr = HEAPU32[policyListPtr / 4];if (!namePtr) break;policyTbl[readAsciiString(namePtr)] = true;policyListPtr += 4;\n }\n }return policyTbl;\n }_nbind.readPolicyList = readPolicyList;function getDynCall(typeList, name) {\n var mangleMap = { float32_t: \"d\", float64_t: \"d\", int64_t: \"d\", uint64_t: \"d\", \"void\": \"v\" };var signature = typeList.map(function (type) {\n return mangleMap[type.name] || \"i\";\n }).join(\"\");var dynCall = Module[\"dynCall_\" + signature];if (!dynCall) {\n throw new Error(\"dynCall_\" + signature + \" not found for \" + name + \"(\" + typeList.map(function (type) {\n return type.name;\n }).join(\", \") + \")\");\n }return dynCall;\n }_nbind.getDynCall = getDynCall;function addMethod(obj, name, func, arity) {\n var overload = obj[name];if (obj.hasOwnProperty(name) && overload) {\n if (overload.arity || overload.arity === 0) {\n overload = _nbind.makeOverloader(overload, overload.arity);obj[name] = overload;\n }overload.addMethod(func, arity);\n } else {\n func.arity = arity;obj[name] = func;\n }\n }_nbind.addMethod = addMethod;function throwError(message) {\n throw new Error(message);\n }_nbind.throwError = throwError;_nbind.bigEndian = false;var _a = _typeModule(_typeModule); _nbind.Type = _a.Type, _nbind.makeType = _a.makeType, _nbind.getComplexType = _a.getComplexType, _nbind.structureList = _a.structureList;var BindType = function (_super) {\n __extends(BindType, _super);function BindType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.heap = HEAPU32;_this.ptrSize = 4;return _this;\n }BindType.prototype.needsWireRead = function (policyTbl) {\n return !!this.wireRead || !!this.makeWireRead;\n };BindType.prototype.needsWireWrite = function (policyTbl) {\n return !!this.wireWrite || !!this.makeWireWrite;\n };return BindType;\n }(_nbind.Type);_nbind.BindType = BindType;var PrimitiveType = function (_super) {\n __extends(PrimitiveType, _super);function PrimitiveType(spec) {\n var _this = _super.call(this, spec) || this;var heapTbl = spec.flags & 32 ? { 32: HEAPF32, 64: HEAPF64 } : spec.flags & 8 ? { 8: HEAPU8, 16: HEAPU16, 32: HEAPU32 } : { 8: HEAP8, 16: HEAP16, 32: HEAP32 };_this.heap = heapTbl[spec.ptrSize * 8];_this.ptrSize = spec.ptrSize;return _this;\n }PrimitiveType.prototype.needsWireWrite = function (policyTbl) {\n return !!policyTbl && !!policyTbl[\"Strict\"];\n };PrimitiveType.prototype.makeWireWrite = function (expr, policyTbl) {\n return policyTbl && policyTbl[\"Strict\"] && function (arg) {\n if (typeof arg == \"number\") return arg;throw new Error(\"Type mismatch\");\n };\n };return PrimitiveType;\n }(BindType);_nbind.PrimitiveType = PrimitiveType;function pushCString(str, policyTbl) {\n if (str === null || str === undefined) {\n if (policyTbl && policyTbl[\"Nullable\"]) {\n return 0;\n } else throw new Error(\"Type mismatch\");\n }if (policyTbl && policyTbl[\"Strict\"]) {\n if (typeof str != \"string\") throw new Error(\"Type mismatch\");\n } else str = str.toString();var length = Module.lengthBytesUTF8(str) + 1;var result = _nbind.Pool.lalloc(length);Module.stringToUTF8Array(str, HEAPU8, result, length);return result;\n }_nbind.pushCString = pushCString;function popCString(ptr) {\n if (ptr === 0) return null;return Module.Pointer_stringify(ptr);\n }_nbind.popCString = popCString;var CStringType = function (_super) {\n __extends(CStringType, _super);function CStringType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireRead = popCString;_this.wireWrite = pushCString;_this.readResources = [_nbind.resources.pool];_this.writeResources = [_nbind.resources.pool];return _this;\n }CStringType.prototype.makeWireWrite = function (expr, policyTbl) {\n return function (arg) {\n return pushCString(arg, policyTbl);\n };\n };return CStringType;\n }(BindType);_nbind.CStringType = CStringType;var BooleanType = function (_super) {\n __extends(BooleanType, _super);function BooleanType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireRead = function (arg) {\n return !!arg;\n };return _this;\n }BooleanType.prototype.needsWireWrite = function (policyTbl) {\n return !!policyTbl && !!policyTbl[\"Strict\"];\n };BooleanType.prototype.makeWireRead = function (expr) {\n return \"!!(\" + expr + \")\";\n };BooleanType.prototype.makeWireWrite = function (expr, policyTbl) {\n return policyTbl && policyTbl[\"Strict\"] && function (arg) {\n if (typeof arg == \"boolean\") return arg;throw new Error(\"Type mismatch\");\n } || expr;\n };return BooleanType;\n }(BindType);_nbind.BooleanType = BooleanType;var Wrapper = function () {\n function Wrapper() {}Wrapper.prototype.persist = function () {\n this.__nbindState |= 1;\n };return Wrapper;\n }();_nbind.Wrapper = Wrapper;function makeBound(policyTbl, bindClass) {\n var Bound = function (_super) {\n __extends(Bound, _super);function Bound(marker, flags, ptr, shared) {\n var _this = _super.call(this) || this;if (!(_this instanceof Bound)) {\n return new (Function.prototype.bind.apply(Bound, Array.prototype.concat.apply([null], arguments)))();\n }var nbindFlags = flags;var nbindPtr = ptr;var nbindShared = shared;if (marker !== _nbind.ptrMarker) {\n var wirePtr = _this.__nbindConstructor.apply(_this, arguments);nbindFlags = 4096 | 512;nbindShared = HEAPU32[wirePtr / 4];nbindPtr = HEAPU32[wirePtr / 4 + 1];\n }var spec = { configurable: true, enumerable: false, value: null, writable: false };var propTbl = { \"__nbindFlags\": nbindFlags, \"__nbindPtr\": nbindPtr };if (nbindShared) {\n propTbl[\"__nbindShared\"] = nbindShared;_nbind.mark(_this);\n }for (var _i = 0, _a = Object.keys(propTbl); _i < _a.length; _i++) {\n var key = _a[_i];spec.value = propTbl[key];Object.defineProperty(_this, key, spec);\n }_defineHidden(0)(_this, \"__nbindState\");return _this;\n }Bound.prototype.free = function () {\n bindClass.destroy.call(this, this.__nbindShared, this.__nbindFlags);this.__nbindState |= 2;disableMember(this, \"__nbindShared\");disableMember(this, \"__nbindPtr\");\n };return Bound;\n }(Wrapper);__decorate([_defineHidden()], Bound.prototype, \"__nbindConstructor\", void 0);__decorate([_defineHidden()], Bound.prototype, \"__nbindValueConstructor\", void 0);__decorate([_defineHidden(policyTbl)], Bound.prototype, \"__nbindPolicies\", void 0);return Bound;\n }_nbind.makeBound = makeBound;function disableMember(obj, name) {\n function die() {\n throw new Error(\"Accessing deleted object\");\n }Object.defineProperty(obj, name, { configurable: false, enumerable: false, get: die, set: die });\n }_nbind.ptrMarker = {};var BindClass = function (_super) {\n __extends(BindClass, _super);function BindClass(spec) {\n var _this = _super.call(this, spec) || this;_this.wireRead = function (arg) {\n return _nbind.popValue(arg, _this.ptrType);\n };_this.wireWrite = function (arg) {\n return pushPointer(arg, _this.ptrType, true);\n };_this.pendingSuperCount = 0;_this.ready = false;_this.methodTbl = {};if (spec.paramList) {\n _this.classType = spec.paramList[0].classType;_this.proto = _this.classType.proto;\n } else _this.classType = _this;return _this;\n }BindClass.prototype.makeBound = function (policyTbl) {\n var Bound = _nbind.makeBound(policyTbl, this);this.proto = Bound;this.ptrType.proto = Bound;return Bound;\n };BindClass.prototype.addMethod = function (spec) {\n var overloadList = this.methodTbl[spec.name] || [];overloadList.push(spec);this.methodTbl[spec.name] = overloadList;\n };BindClass.prototype.registerMethods = function (src, staticOnly) {\n var setter;for (var _i = 0, _a = Object.keys(src.methodTbl); _i < _a.length; _i++) {\n var name_1 = _a[_i];var overloadList = src.methodTbl[name_1];for (var _b = 0, overloadList_1 = overloadList; _b < overloadList_1.length; _b++) {\n var spec = overloadList_1[_b];var target = void 0;var caller = void 0;target = this.proto.prototype;if (staticOnly && spec.signatureType != 1) continue;switch (spec.signatureType) {case 1:\n target = this.proto;case 5:\n caller = _nbind.makeCaller(spec);_nbind.addMethod(target, spec.name, caller, spec.typeList.length - 1);break;case 4:\n setter = _nbind.makeMethodCaller(src.ptrType, spec);break;case 3:\n Object.defineProperty(target, spec.name, { configurable: true, enumerable: false, get: _nbind.makeMethodCaller(src.ptrType, spec), set: setter });break;case 2:\n caller = _nbind.makeMethodCaller(src.ptrType, spec);_nbind.addMethod(target, spec.name, caller, spec.typeList.length - 1);break;default:\n break;}\n }\n }\n };BindClass.prototype.registerSuperMethods = function (src, firstSuper, visitTbl) {\n if (visitTbl[src.name]) return;visitTbl[src.name] = true;var superNum = 0;var nextFirst;for (var _i = 0, _a = src.superIdList || []; _i < _a.length; _i++) {\n var superId = _a[_i];var superClass = _nbind.getType(superId);if (superNum++ < firstSuper || firstSuper < 0) {\n nextFirst = -1;\n } else {\n nextFirst = 0;\n }this.registerSuperMethods(superClass, nextFirst, visitTbl);\n }this.registerMethods(src, firstSuper < 0);\n };BindClass.prototype.finish = function () {\n if (this.ready) return this;this.ready = true;this.superList = (this.superIdList || []).map(function (superId) {\n return _nbind.getType(superId).finish();\n });var Bound = this.proto;if (this.superList.length) {\n var Proto = function () {\n this.constructor = Bound;\n };Proto.prototype = this.superList[0].proto.prototype;Bound.prototype = new Proto();\n }if (Bound != Module) Bound.prototype.__nbindType = this;this.registerSuperMethods(this, 1, {});return this;\n };BindClass.prototype.upcastStep = function (dst, ptr) {\n if (dst == this) return ptr;for (var i = 0; i < this.superList.length; ++i) {\n var superPtr = this.superList[i].upcastStep(dst, _nbind.callUpcast(this.upcastList[i], ptr));if (superPtr) return superPtr;\n }return 0;\n };return BindClass;\n }(_nbind.BindType);BindClass.list = [];_nbind.BindClass = BindClass;function popPointer(ptr, type) {\n return ptr ? new type.proto(_nbind.ptrMarker, type.flags, ptr) : null;\n }_nbind.popPointer = popPointer;function pushPointer(obj, type, tryValue) {\n if (!(obj instanceof _nbind.Wrapper)) {\n if (tryValue) {\n return _nbind.pushValue(obj);\n } else throw new Error(\"Type mismatch\");\n }var ptr = obj.__nbindPtr;var objType = obj.__nbindType.classType;var classType = type.classType;if (obj instanceof type.proto) {\n while (objType != classType) {\n ptr = _nbind.callUpcast(objType.upcastList[0], ptr);objType = objType.superList[0];\n }\n } else {\n ptr = objType.upcastStep(classType, ptr);if (!ptr) throw new Error(\"Type mismatch\");\n }return ptr;\n }_nbind.pushPointer = pushPointer;function pushMutablePointer(obj, type) {\n var ptr = pushPointer(obj, type);if (obj.__nbindFlags & 1) {\n throw new Error(\"Passing a const value as a non-const argument\");\n }return ptr;\n }var BindClassPtr = function (_super) {\n __extends(BindClassPtr, _super);function BindClassPtr(spec) {\n var _this = _super.call(this, spec) || this;_this.classType = spec.paramList[0].classType;_this.proto = _this.classType.proto;var isConst = spec.flags & 1;var isValue = (_this.flags & 896) == 256 && spec.flags & 2;var push = isConst ? pushPointer : pushMutablePointer;var pop = isValue ? _nbind.popValue : popPointer;_this.makeWireWrite = function (expr, policyTbl) {\n return policyTbl[\"Nullable\"] ? function (arg) {\n return arg ? push(arg, _this) : 0;\n } : function (arg) {\n return push(arg, _this);\n };\n };_this.wireRead = function (arg) {\n return pop(arg, _this);\n };_this.wireWrite = function (arg) {\n return push(arg, _this);\n };return _this;\n }return BindClassPtr;\n }(_nbind.BindType);_nbind.BindClassPtr = BindClassPtr;function popShared(ptr, type) {\n var shared = HEAPU32[ptr / 4];var unsafe = HEAPU32[ptr / 4 + 1];return unsafe ? new type.proto(_nbind.ptrMarker, type.flags, unsafe, shared) : null;\n }_nbind.popShared = popShared;function pushShared(obj, type) {\n if (!(obj instanceof type.proto)) throw new Error(\"Type mismatch\");return obj.__nbindShared;\n }function pushMutableShared(obj, type) {\n if (!(obj instanceof type.proto)) throw new Error(\"Type mismatch\");if (obj.__nbindFlags & 1) {\n throw new Error(\"Passing a const value as a non-const argument\");\n }return obj.__nbindShared;\n }var SharedClassPtr = function (_super) {\n __extends(SharedClassPtr, _super);function SharedClassPtr(spec) {\n var _this = _super.call(this, spec) || this;_this.readResources = [_nbind.resources.pool];_this.classType = spec.paramList[0].classType;_this.proto = _this.classType.proto;var isConst = spec.flags & 1;var push = isConst ? pushShared : pushMutableShared;_this.wireRead = function (arg) {\n return popShared(arg, _this);\n };_this.wireWrite = function (arg) {\n return push(arg, _this);\n };return _this;\n }return SharedClassPtr;\n }(_nbind.BindType);_nbind.SharedClassPtr = SharedClassPtr;_nbind.externalList = [0];var firstFreeExternal = 0;var External = function () {\n function External(data) {\n this.refCount = 1;this.data = data;\n }External.prototype.register = function () {\n var num = firstFreeExternal;if (num) {\n firstFreeExternal = _nbind.externalList[num];\n } else num = _nbind.externalList.length;_nbind.externalList[num] = this;return num;\n };External.prototype.reference = function () {\n ++this.refCount;\n };External.prototype.dereference = function (num) {\n if (--this.refCount == 0) {\n if (this.free) this.free();_nbind.externalList[num] = firstFreeExternal;firstFreeExternal = num;\n }\n };return External;\n }();_nbind.External = External;function popExternal(num) {\n var obj = _nbind.externalList[num];obj.dereference(num);return obj.data;\n }function pushExternal(obj) {\n var external = new External(obj);external.reference();return external.register();\n }var ExternalType = function (_super) {\n __extends(ExternalType, _super);function ExternalType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireRead = popExternal;_this.wireWrite = pushExternal;return _this;\n }return ExternalType;\n }(_nbind.BindType);_nbind.ExternalType = ExternalType;_nbind.callbackSignatureList = [];var CallbackType = function (_super) {\n __extends(CallbackType, _super);function CallbackType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireWrite = function (func) {\n if (typeof func != \"function\") _nbind.throwError(\"Type mismatch\");return new _nbind.External(func).register();\n };return _this;\n }return CallbackType;\n }(_nbind.BindType);_nbind.CallbackType = CallbackType;_nbind.valueList = [0];var firstFreeValue = 0;function pushValue(value) {\n var num = firstFreeValue;if (num) {\n firstFreeValue = _nbind.valueList[num];\n } else num = _nbind.valueList.length;_nbind.valueList[num] = value;return num * 2 + 1;\n }_nbind.pushValue = pushValue;function popValue(num, type) {\n if (!num) _nbind.throwError(\"Value type JavaScript class is missing or not registered\");if (num & 1) {\n num >>= 1;var obj = _nbind.valueList[num];_nbind.valueList[num] = firstFreeValue;firstFreeValue = num;return obj;\n } else if (type) {\n return _nbind.popShared(num, type);\n } else throw new Error(\"Invalid value slot \" + num);\n }_nbind.popValue = popValue;var valueBase = 0x10000000000000000;function push64(num) {\n if (typeof num == \"number\") return num;return pushValue(num) * 4096 + valueBase;\n }function pop64(num) {\n if (num < valueBase) return num;return popValue((num - valueBase) / 4096);\n }var CreateValueType = function (_super) {\n __extends(CreateValueType, _super);function CreateValueType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }CreateValueType.prototype.makeWireWrite = function (expr) {\n return \"(_nbind.pushValue(new \" + expr + \"))\";\n };return CreateValueType;\n }(_nbind.BindType);_nbind.CreateValueType = CreateValueType;var Int64Type = function (_super) {\n __extends(Int64Type, _super);function Int64Type() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireWrite = push64;_this.wireRead = pop64;return _this;\n }return Int64Type;\n }(_nbind.BindType);_nbind.Int64Type = Int64Type;function pushArray(arr, type) {\n if (!arr) return 0;var length = arr.length;if ((type.size || type.size === 0) && length < type.size) {\n throw new Error(\"Type mismatch\");\n }var ptrSize = type.memberType.ptrSize;var result = _nbind.Pool.lalloc(4 + length * ptrSize);HEAPU32[result / 4] = length;var heap = type.memberType.heap;var ptr = (result + 4) / ptrSize;var wireWrite = type.memberType.wireWrite;var num = 0;if (wireWrite) {\n while (num < length) {\n heap[ptr++] = wireWrite(arr[num++]);\n }\n } else {\n while (num < length) {\n heap[ptr++] = arr[num++];\n }\n }return result;\n }_nbind.pushArray = pushArray;function popArray(ptr, type) {\n if (ptr === 0) return null;var length = HEAPU32[ptr / 4];var arr = new Array(length);var heap = type.memberType.heap;ptr = (ptr + 4) / type.memberType.ptrSize;var wireRead = type.memberType.wireRead;var num = 0;if (wireRead) {\n while (num < length) {\n arr[num++] = wireRead(heap[ptr++]);\n }\n } else {\n while (num < length) {\n arr[num++] = heap[ptr++];\n }\n }return arr;\n }_nbind.popArray = popArray;var ArrayType = function (_super) {\n __extends(ArrayType, _super);function ArrayType(spec) {\n var _this = _super.call(this, spec) || this;_this.wireRead = function (arg) {\n return popArray(arg, _this);\n };_this.wireWrite = function (arg) {\n return pushArray(arg, _this);\n };_this.readResources = [_nbind.resources.pool];_this.writeResources = [_nbind.resources.pool];_this.memberType = spec.paramList[0];if (spec.paramList[1]) _this.size = spec.paramList[1];return _this;\n }return ArrayType;\n }(_nbind.BindType);_nbind.ArrayType = ArrayType;function pushString(str, policyTbl) {\n if (str === null || str === undefined) {\n if (policyTbl && policyTbl[\"Nullable\"]) {\n str = \"\";\n } else throw new Error(\"Type mismatch\");\n }if (policyTbl && policyTbl[\"Strict\"]) {\n if (typeof str != \"string\") throw new Error(\"Type mismatch\");\n } else str = str.toString();var length = Module.lengthBytesUTF8(str);var result = _nbind.Pool.lalloc(4 + length + 1);HEAPU32[result / 4] = length;Module.stringToUTF8Array(str, HEAPU8, result + 4, length + 1);return result;\n }_nbind.pushString = pushString;function popString(ptr) {\n if (ptr === 0) return null;var length = HEAPU32[ptr / 4];return Module.Pointer_stringify(ptr + 4, length);\n }_nbind.popString = popString;var StringType = function (_super) {\n __extends(StringType, _super);function StringType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireRead = popString;_this.wireWrite = pushString;_this.readResources = [_nbind.resources.pool];_this.writeResources = [_nbind.resources.pool];return _this;\n }StringType.prototype.makeWireWrite = function (expr, policyTbl) {\n return function (arg) {\n return pushString(arg, policyTbl);\n };\n };return StringType;\n }(_nbind.BindType);_nbind.StringType = StringType;function makeArgList(argCount) {\n return Array.apply(null, Array(argCount)).map(function (dummy, num) {\n return \"a\" + (num + 1);\n });\n }function anyNeedsWireWrite(typeList, policyTbl) {\n return typeList.reduce(function (result, type) {\n return result || type.needsWireWrite(policyTbl);\n }, false);\n }function anyNeedsWireRead(typeList, policyTbl) {\n return typeList.reduce(function (result, type) {\n return result || !!type.needsWireRead(policyTbl);\n }, false);\n }function makeWireRead(convertParamList, policyTbl, type, expr) {\n var paramNum = convertParamList.length;if (type.makeWireRead) {\n return type.makeWireRead(expr, convertParamList, paramNum);\n } else if (type.wireRead) {\n convertParamList[paramNum] = type.wireRead;return \"(convertParamList[\" + paramNum + \"](\" + expr + \"))\";\n } else return expr;\n }function makeWireWrite(convertParamList, policyTbl, type, expr) {\n var wireWrite;var paramNum = convertParamList.length;if (type.makeWireWrite) {\n wireWrite = type.makeWireWrite(expr, policyTbl, convertParamList, paramNum);\n } else wireWrite = type.wireWrite;if (wireWrite) {\n if (typeof wireWrite == \"string\") {\n return wireWrite;\n } else {\n convertParamList[paramNum] = wireWrite;return \"(convertParamList[\" + paramNum + \"](\" + expr + \"))\";\n }\n } else return expr;\n }function buildCallerFunction(dynCall, ptrType, ptr, num, policyTbl, needsWireWrite, prefix, returnType, argTypeList, mask, err) {\n var argList = makeArgList(argTypeList.length);var convertParamList = [];var callExpression = makeWireRead(convertParamList, policyTbl, returnType, \"dynCall(\" + [prefix].concat(argList.map(function (name, index) {\n return makeWireWrite(convertParamList, policyTbl, argTypeList[index], name);\n })).join(\",\") + \")\");var resourceSet = _nbind.listResources([returnType], argTypeList);var sourceCode = \"function(\" + argList.join(\",\") + \"){\" + (mask ? \"this.__nbindFlags&mask&&err();\" : \"\") + resourceSet.makeOpen() + \"var r=\" + callExpression + \";\" + resourceSet.makeClose() + \"return r;\" + \"}\";return eval(\"(\" + sourceCode + \")\");\n }function buildJSCallerFunction(returnType, argTypeList) {\n var argList = makeArgList(argTypeList.length);var convertParamList = [];var callExpression = makeWireWrite(convertParamList, null, returnType, \"_nbind.externalList[num].data(\" + argList.map(function (name, index) {\n return makeWireRead(convertParamList, null, argTypeList[index], name);\n }).join(\",\") + \")\");var resourceSet = _nbind.listResources(argTypeList, [returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode = \"function(\" + [\"dummy\", \"num\"].concat(argList).join(\",\") + \"){\" + resourceSet.makeOpen() + \"var r=\" + callExpression + \";\" + resourceSet.makeClose() + \"return r;\" + \"}\";return eval(\"(\" + sourceCode + \")\");\n }_nbind.buildJSCallerFunction = buildJSCallerFunction;function makeJSCaller(idList) {\n var argCount = idList.length - 1;var typeList = _nbind.getTypes(idList, \"callback\");var returnType = typeList[0];var argTypeList = typeList.slice(1);var needsWireRead = anyNeedsWireRead(argTypeList, null);var needsWireWrite = returnType.needsWireWrite(null);if (!needsWireWrite && !needsWireRead) {\n switch (argCount) {case 0:\n return function (dummy, num) {\n return _nbind.externalList[num].data();\n };case 1:\n return function (dummy, num, a1) {\n return _nbind.externalList[num].data(a1);\n };case 2:\n return function (dummy, num, a1, a2) {\n return _nbind.externalList[num].data(a1, a2);\n };case 3:\n return function (dummy, num, a1, a2, a3) {\n return _nbind.externalList[num].data(a1, a2, a3);\n };default:\n break;}\n }return buildJSCallerFunction(returnType, argTypeList);\n }_nbind.makeJSCaller = makeJSCaller;function makeMethodCaller(ptrType, spec) {\n var argCount = spec.typeList.length - 1;var typeIdList = spec.typeList.slice(0);typeIdList.splice(1, 0, \"uint32_t\", spec.boundID);var typeList = _nbind.getTypes(typeIdList, spec.title);var returnType = typeList[0];var argTypeList = typeList.slice(3);var needsWireRead = returnType.needsWireRead(spec.policyTbl);var needsWireWrite = anyNeedsWireWrite(argTypeList, spec.policyTbl);var ptr = spec.ptr;var num = spec.num;var dynCall = _nbind.getDynCall(typeList, spec.title);var mask = ~spec.flags & 1;function err() {\n throw new Error(\"Calling a non-const method on a const object\");\n }if (!needsWireRead && !needsWireWrite) {\n switch (argCount) {case 0:\n return function () {\n return this.__nbindFlags & mask ? err() : dynCall(ptr, num, _nbind.pushPointer(this, ptrType));\n };case 1:\n return function (a1) {\n return this.__nbindFlags & mask ? err() : dynCall(ptr, num, _nbind.pushPointer(this, ptrType), a1);\n };case 2:\n return function (a1, a2) {\n return this.__nbindFlags & mask ? err() : dynCall(ptr, num, _nbind.pushPointer(this, ptrType), a1, a2);\n };case 3:\n return function (a1, a2, a3) {\n return this.__nbindFlags & mask ? err() : dynCall(ptr, num, _nbind.pushPointer(this, ptrType), a1, a2, a3);\n };default:\n break;}\n }return buildCallerFunction(dynCall, ptrType, ptr, num, spec.policyTbl, needsWireWrite, \"ptr,num,pushPointer(this,ptrType)\", returnType, argTypeList, mask, err);\n }_nbind.makeMethodCaller = makeMethodCaller;function makeCaller(spec) {\n var argCount = spec.typeList.length - 1;var typeList = _nbind.getTypes(spec.typeList, spec.title);var returnType = typeList[0];var argTypeList = typeList.slice(1);var needsWireRead = returnType.needsWireRead(spec.policyTbl);var needsWireWrite = anyNeedsWireWrite(argTypeList, spec.policyTbl);var direct = spec.direct;var ptr = spec.ptr;if (spec.direct && !needsWireRead && !needsWireWrite) {\n var dynCall_1 = _nbind.getDynCall(typeList, spec.title);switch (argCount) {case 0:\n return function () {\n return dynCall_1(direct);\n };case 1:\n return function (a1) {\n return dynCall_1(direct, a1);\n };case 2:\n return function (a1, a2) {\n return dynCall_1(direct, a1, a2);\n };case 3:\n return function (a1, a2, a3) {\n return dynCall_1(direct, a1, a2, a3);\n };default:\n break;}ptr = 0;\n }var prefix;if (ptr) {\n var typeIdList = spec.typeList.slice(0);typeIdList.splice(1, 0, \"uint32_t\");typeList = _nbind.getTypes(typeIdList, spec.title);prefix = \"ptr,num\";\n } else {\n ptr = direct;prefix = \"ptr\";\n }var dynCall = _nbind.getDynCall(typeList, spec.title);return buildCallerFunction(dynCall, null, ptr, spec.num, spec.policyTbl, needsWireWrite, prefix, returnType, argTypeList);\n }_nbind.makeCaller = makeCaller;function makeOverloader(func, arity) {\n var callerList = [];function call() {\n return callerList[arguments.length].apply(this, arguments);\n }call.addMethod = function (_func, _arity) {\n callerList[_arity] = _func;\n };call.addMethod(func, arity);return call;\n }_nbind.makeOverloader = makeOverloader;var Resource = function () {\n function Resource(open, close) {\n var _this = this;this.makeOpen = function () {\n return Object.keys(_this.openTbl).join(\"\");\n };this.makeClose = function () {\n return Object.keys(_this.closeTbl).join(\"\");\n };this.openTbl = {};this.closeTbl = {};if (open) this.openTbl[open] = true;if (close) this.closeTbl[close] = true;\n }Resource.prototype.add = function (other) {\n for (var _i = 0, _a = Object.keys(other.openTbl); _i < _a.length; _i++) {\n var key = _a[_i];this.openTbl[key] = true;\n }for (var _b = 0, _c = Object.keys(other.closeTbl); _b < _c.length; _b++) {\n var key = _c[_b];this.closeTbl[key] = true;\n }\n };Resource.prototype.remove = function (other) {\n for (var _i = 0, _a = Object.keys(other.openTbl); _i < _a.length; _i++) {\n var key = _a[_i];delete this.openTbl[key];\n }for (var _b = 0, _c = Object.keys(other.closeTbl); _b < _c.length; _b++) {\n var key = _c[_b];delete this.closeTbl[key];\n }\n };return Resource;\n }();_nbind.Resource = Resource;function listResources(readList, writeList) {\n var result = new Resource();for (var _i = 0, readList_1 = readList; _i < readList_1.length; _i++) {\n var bindType = readList_1[_i];for (var _a = 0, _b = bindType.readResources || []; _a < _b.length; _a++) {\n var resource = _b[_a];result.add(resource);\n }\n }for (var _c = 0, writeList_1 = writeList; _c < writeList_1.length; _c++) {\n var bindType = writeList_1[_c];for (var _d = 0, _e = bindType.writeResources || []; _d < _e.length; _d++) {\n var resource = _e[_d];result.add(resource);\n }\n }return result;\n }_nbind.listResources = listResources;_nbind.resources = { pool: new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\", \"_nbind.Pool.lreset(used,page);\") };var ExternalBuffer = function (_super) {\n __extends(ExternalBuffer, _super);function ExternalBuffer(buf, ptr) {\n var _this = _super.call(this, buf) || this;_this.ptr = ptr;return _this;\n }ExternalBuffer.prototype.free = function () {\n _free(this.ptr);\n };return ExternalBuffer;\n }(_nbind.External);function getBuffer(buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf);\n } else if (buf instanceof DataView) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n } else return buf;\n }function pushBuffer(buf, policyTbl) {\n if (buf === null || buf === undefined) {\n if (policyTbl && policyTbl[\"Nullable\"]) buf = [];\n }if (typeof buf != \"object\") throw new Error(\"Type mismatch\");var b = buf;var length = b.byteLength || b.length;if (!length && length !== 0 && b.byteLength !== 0) throw new Error(\"Type mismatch\");var result = _nbind.Pool.lalloc(8);var data = _malloc(length);var ptr = result / 4;HEAPU32[ptr++] = length;HEAPU32[ptr++] = data;HEAPU32[ptr++] = new ExternalBuffer(buf, data).register();HEAPU8.set(getBuffer(buf), data);return result;\n }var BufferType = function (_super) {\n __extends(BufferType, _super);function BufferType() {\n var _this = _super !== null && _super.apply(this, arguments) || this;_this.wireWrite = pushBuffer;_this.readResources = [_nbind.resources.pool];_this.writeResources = [_nbind.resources.pool];return _this;\n }BufferType.prototype.makeWireWrite = function (expr, policyTbl) {\n return function (arg) {\n return pushBuffer(arg, policyTbl);\n };\n };return BufferType;\n }(_nbind.BindType);_nbind.BufferType = BufferType;function commitBuffer(num, data, length) {\n var buf = _nbind.externalList[num].data;var NodeBuffer = Buffer;if (typeof Buffer != \"function\") NodeBuffer = function () {};if (buf instanceof Array) {} else {\n var src = HEAPU8.subarray(data, data + length);if (buf instanceof NodeBuffer) {\n var srcBuf = void 0;if (typeof Buffer.from == \"function\" && Buffer.from.length >= 3) {\n srcBuf = Buffer.from(src);\n } else srcBuf = Buffer.from(src);srcBuf.copy(buf);\n } else getBuffer(buf).set(src);\n }\n }_nbind.commitBuffer = commitBuffer;var dirtyList = [];var gcTimer = 0;function sweep() {\n for (var _i = 0, dirtyList_1 = dirtyList; _i < dirtyList_1.length; _i++) {\n var obj = dirtyList_1[_i];if (!(obj.__nbindState & (1 | 2))) {\n obj.free();\n }\n }dirtyList = [];gcTimer = 0;\n }_nbind.mark = function (obj) {};function toggleLightGC(enable) {\n if (enable) {\n _nbind.mark = function (obj) {\n dirtyList.push(obj);if (!gcTimer) gcTimer = setTimeout(sweep, 0);\n };\n } else {\n _nbind.mark = function (obj) {};\n }\n }_nbind.toggleLightGC = toggleLightGC;\n })(_nbind);Module[\"requestFullScreen\"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) {\n Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\");Module[\"requestFullScreen\"] = Module[\"requestFullscreen\"];Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice);\n };Module[\"requestFullscreen\"] = function Module_requestFullscreen(lockPointer, resizeCanvas, vrDevice) {\n Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);\n };Module[\"requestAnimationFrame\"] = function Module_requestAnimationFrame(func) {\n Browser.requestAnimationFrame(func);\n };Module[\"setCanvasSize\"] = function Module_setCanvasSize(width, height, noUpdates) {\n Browser.setCanvasSize(width, height, noUpdates);\n };Module[\"pauseMainLoop\"] = function Module_pauseMainLoop() {\n Browser.mainLoop.pause();\n };Module[\"resumeMainLoop\"] = function Module_resumeMainLoop() {\n Browser.mainLoop.resume();\n };Module[\"getUserMedia\"] = function Module_getUserMedia() {\n Browser.getUserMedia();\n };Module[\"createContext\"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {\n return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes);\n };if (ENVIRONMENT_IS_NODE) {\n _emscripten_get_now = function _emscripten_get_now_actual() {\n var t = process[\"hrtime\"]();return t[0] * 1e3 + t[1] / 1e6;\n };\n } else if (typeof dateNow !== \"undefined\") {\n _emscripten_get_now = dateNow;\n } else if (typeof self === \"object\" && self[\"performance\"] && typeof self[\"performance\"][\"now\"] === \"function\") {\n _emscripten_get_now = function () {\n return self[\"performance\"][\"now\"]();\n };\n } else if (typeof performance === \"object\" && typeof performance[\"now\"] === \"function\") {\n _emscripten_get_now = function () {\n return performance[\"now\"]();\n };\n } else {\n _emscripten_get_now = Date.now;\n }__ATEXIT__.push(function () {\n var fflush = Module[\"_fflush\"];if (fflush) fflush(0);var printChar = ___syscall146.printChar;if (!printChar) return;var buffers = ___syscall146.buffers;if (buffers[1].length) printChar(1, 10);if (buffers[2].length) printChar(2, 10);\n });DYNAMICTOP_PTR = allocate(1, \"i32\", ALLOC_STATIC);STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);STACK_MAX = STACK_BASE + TOTAL_STACK;DYNAMIC_BASE = Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;staticSealed = true;function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n try {\n Module[\"dynCall_viiiii\"](index, a1, a2, a3, a4, a5);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_vif(index, a1, a2) {\n try {\n Module[\"dynCall_vif\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_vid(index, a1, a2) {\n try {\n Module[\"dynCall_vid\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_fiff(index, a1, a2, a3) {\n try {\n return Module[\"dynCall_fiff\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_vi(index, a1) {\n try {\n Module[\"dynCall_vi\"](index, a1);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_vii(index, a1, a2) {\n try {\n Module[\"dynCall_vii\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_ii(index, a1) {\n try {\n return Module[\"dynCall_ii\"](index, a1);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viddi(index, a1, a2, a3, a4) {\n try {\n Module[\"dynCall_viddi\"](index, a1, a2, a3, a4);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_vidd(index, a1, a2, a3) {\n try {\n Module[\"dynCall_vidd\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_iiii(index, a1, a2, a3) {\n try {\n return Module[\"dynCall_iiii\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_diii(index, a1, a2, a3) {\n try {\n return Module[\"dynCall_diii\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_di(index, a1) {\n try {\n return Module[\"dynCall_di\"](index, a1);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_iid(index, a1, a2) {\n try {\n return Module[\"dynCall_iid\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_iii(index, a1, a2) {\n try {\n return Module[\"dynCall_iii\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viiddi(index, a1, a2, a3, a4, a5) {\n try {\n Module[\"dynCall_viiddi\"](index, a1, a2, a3, a4, a5);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n try {\n Module[\"dynCall_viiiiii\"](index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_dii(index, a1, a2) {\n try {\n return Module[\"dynCall_dii\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_i(index) {\n try {\n return Module[\"dynCall_i\"](index);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n try {\n return Module[\"dynCall_iiiiii\"](index, a1, a2, a3, a4, a5);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viiid(index, a1, a2, a3, a4) {\n try {\n Module[\"dynCall_viiid\"](index, a1, a2, a3, a4);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viififi(index, a1, a2, a3, a4, a5, a6) {\n try {\n Module[\"dynCall_viififi\"](index, a1, a2, a3, a4, a5, a6);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viii(index, a1, a2, a3) {\n try {\n Module[\"dynCall_viii\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_v(index) {\n try {\n Module[\"dynCall_v\"](index);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viid(index, a1, a2, a3) {\n try {\n Module[\"dynCall_viid\"](index, a1, a2, a3);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_idd(index, a1, a2) {\n try {\n return Module[\"dynCall_idd\"](index, a1, a2);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }function invoke_viiii(index, a1, a2, a3, a4) {\n try {\n Module[\"dynCall_viiii\"](index, a1, a2, a3, a4);\n } catch (e) {\n if (typeof e !== \"number\" && e !== \"longjmp\") throw e;Module[\"setThrew\"](1, 0);\n }\n }Module.asmGlobalArg = { \"Math\": Math, \"Int8Array\": Int8Array, \"Int16Array\": Int16Array, \"Int32Array\": Int32Array, \"Uint8Array\": Uint8Array, \"Uint16Array\": Uint16Array, \"Uint32Array\": Uint32Array, \"Float32Array\": Float32Array, \"Float64Array\": Float64Array, \"NaN\": NaN, \"Infinity\": Infinity };Module.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"enlargeMemory\": enlargeMemory, \"getTotalMemory\": getTotalMemory, \"abortOnCannotGrowMemory\": abortOnCannotGrowMemory, \"invoke_viiiii\": invoke_viiiii, \"invoke_vif\": invoke_vif, \"invoke_vid\": invoke_vid, \"invoke_fiff\": invoke_fiff, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_ii\": invoke_ii, \"invoke_viddi\": invoke_viddi, \"invoke_vidd\": invoke_vidd, \"invoke_iiii\": invoke_iiii, \"invoke_diii\": invoke_diii, \"invoke_di\": invoke_di, \"invoke_iid\": invoke_iid, \"invoke_iii\": invoke_iii, \"invoke_viiddi\": invoke_viiddi, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_dii\": invoke_dii, \"invoke_i\": invoke_i, \"invoke_iiiiii\": invoke_iiiiii, \"invoke_viiid\": invoke_viiid, \"invoke_viififi\": invoke_viififi, \"invoke_viii\": invoke_viii, \"invoke_v\": invoke_v, \"invoke_viid\": invoke_viid, \"invoke_idd\": invoke_idd, \"invoke_viiii\": invoke_viiii, \"_emscripten_asm_const_iiiii\": _emscripten_asm_const_iiiii, \"_emscripten_asm_const_iiidddddd\": _emscripten_asm_const_iiidddddd, \"_emscripten_asm_const_iiiid\": _emscripten_asm_const_iiiid, \"__nbind_reference_external\": __nbind_reference_external, \"_emscripten_asm_const_iiiiiiii\": _emscripten_asm_const_iiiiiiii, \"_removeAccessorPrefix\": _removeAccessorPrefix, \"_typeModule\": _typeModule, \"__nbind_register_pool\": __nbind_register_pool, \"__decorate\": __decorate, \"_llvm_stackrestore\": _llvm_stackrestore, \"___cxa_atexit\": ___cxa_atexit, \"__extends\": __extends, \"__nbind_get_value_object\": __nbind_get_value_object, \"__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\": __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj, \"_emscripten_set_main_loop_timing\": _emscripten_set_main_loop_timing, \"__nbind_register_primitive\": __nbind_register_primitive, \"__nbind_register_type\": __nbind_register_type, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"__nbind_register_function\": __nbind_register_function, \"___setErrNo\": ___setErrNo, \"__nbind_register_class\": __nbind_register_class, \"__nbind_finish\": __nbind_finish, \"_abort\": _abort, \"_nbind_value\": _nbind_value, \"_llvm_stacksave\": _llvm_stacksave, \"___syscall54\": ___syscall54, \"_defineHidden\": _defineHidden, \"_emscripten_set_main_loop\": _emscripten_set_main_loop, \"_emscripten_get_now\": _emscripten_get_now, \"__nbind_register_callback_signature\": __nbind_register_callback_signature, \"_emscripten_asm_const_iiiiii\": _emscripten_asm_const_iiiiii, \"__nbind_free_external\": __nbind_free_external, \"_emscripten_asm_const_iiii\": _emscripten_asm_const_iiii, \"_emscripten_asm_const_iiididi\": _emscripten_asm_const_iiididi, \"___syscall6\": ___syscall6, \"_atexit\": _atexit, \"___syscall140\": ___syscall140, \"___syscall146\": ___syscall146, \"DYNAMICTOP_PTR\": DYNAMICTOP_PTR, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX, \"cttz_i8\": cttz_i8, \"___dso_handle\": ___dso_handle }; // EMSCRIPTEN_START_ASM\n var asm = function (global, env, buffer) {\n \"use asm\";\n var a = new global.Int8Array(buffer);var b = new global.Int16Array(buffer);var c = new global.Int32Array(buffer);var d = new global.Uint8Array(buffer);var e = new global.Uint16Array(buffer);var f = new global.Uint32Array(buffer);var g = new global.Float32Array(buffer);var h = new global.Float64Array(buffer);var i = env.DYNAMICTOP_PTR | 0;var j = env.tempDoublePtr | 0;var k = env.ABORT | 0;var l = env.STACKTOP | 0;var m = env.STACK_MAX | 0;var n = env.cttz_i8 | 0;var o = env.___dso_handle | 0;var p = 0;var q = 0;var r = 0;var s = 0;var t = global.NaN,\n u = global.Infinity;var v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0.0;var A = 0;var B = global.Math.floor;var C = global.Math.abs;var D = global.Math.sqrt;var E = global.Math.pow;var F = global.Math.cos;var G = global.Math.sin;var H = global.Math.tan;var I = global.Math.acos;var J = global.Math.asin;var K = global.Math.atan;var L = global.Math.atan2;var M = global.Math.exp;var N = global.Math.log;var O = global.Math.ceil;var P = global.Math.imul;var Q = global.Math.min;var R = global.Math.max;var S = global.Math.clz32;var T = global.Math.fround;var U = env.abort;var V = env.assert;var W = env.enlargeMemory;var X = env.getTotalMemory;var Y = env.abortOnCannotGrowMemory;var Z = env.invoke_viiiii;var _ = env.invoke_vif;var $ = env.invoke_vid;var aa = env.invoke_fiff;var ba = env.invoke_vi;var ca = env.invoke_vii;var da = env.invoke_ii;var ea = env.invoke_viddi;var fa = env.invoke_vidd;var ga = env.invoke_iiii;var ha = env.invoke_diii;var ia = env.invoke_di;var ja = env.invoke_iid;var ka = env.invoke_iii;var la = env.invoke_viiddi;var ma = env.invoke_viiiiii;var na = env.invoke_dii;var oa = env.invoke_i;var pa = env.invoke_iiiiii;var qa = env.invoke_viiid;var ra = env.invoke_viififi;var sa = env.invoke_viii;var ta = env.invoke_v;var ua = env.invoke_viid;var va = env.invoke_idd;var wa = env.invoke_viiii;var xa = env._emscripten_asm_const_iiiii;var ya = env._emscripten_asm_const_iiidddddd;var za = env._emscripten_asm_const_iiiid;var Aa = env.__nbind_reference_external;var Ba = env._emscripten_asm_const_iiiiiiii;var Ca = env._removeAccessorPrefix;var Da = env._typeModule;var Ea = env.__nbind_register_pool;var Fa = env.__decorate;var Ga = env._llvm_stackrestore;var Ha = env.___cxa_atexit;var Ia = env.__extends;var Ja = env.__nbind_get_value_object;var Ka = env.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj;var La = env._emscripten_set_main_loop_timing;var Ma = env.__nbind_register_primitive;var Na = env.__nbind_register_type;var Oa = env._emscripten_memcpy_big;var Pa = env.__nbind_register_function;var Qa = env.___setErrNo;var Ra = env.__nbind_register_class;var Sa = env.__nbind_finish;var Ta = env._abort;var Ua = env._nbind_value;var Va = env._llvm_stacksave;var Wa = env.___syscall54;var Xa = env._defineHidden;var Ya = env._emscripten_set_main_loop;var Za = env._emscripten_get_now;var _a = env.__nbind_register_callback_signature;var $a = env._emscripten_asm_const_iiiiii;var ab = env.__nbind_free_external;var bb = env._emscripten_asm_const_iiii;var cb = env._emscripten_asm_const_iiididi;var db = env.___syscall6;var eb = env._atexit;var fb = env.___syscall140;var gb = env.___syscall146;var hb = T(0);const ib = T(0);\n // EMSCRIPTEN_START_FUNCS\n function Jb(a) {\n a = a | 0;var b = 0;b = l;l = l + a | 0;l = l + 15 & -16;return b | 0;\n }function Kb() {\n return l | 0;\n }function Lb(a) {\n a = a | 0;l = a;\n }function Mb(a, b) {\n a = a | 0;b = b | 0;l = a;m = b;\n }function Nb(a, b) {\n a = a | 0;b = b | 0;if (!p) {\n p = a;q = b;\n }\n }function Ob(a) {\n a = a | 0;A = a;\n }function Pb() {\n return A | 0;\n }function Qb() {\n var b = 0,\n d = 0;BC(8104, 8, 400) | 0;BC(8504, 408, 540) | 0;b = 9044;d = b + 44 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));a[9088] = 0;a[9089] = 1;c[2273] = 0;c[2274] = 948;c[2275] = 948;Ha(17, 8104, o | 0) | 0;return;\n }function Rb(a) {\n a = a | 0;oc(a + 948 | 0);return;\n }function Sb(a) {\n a = T(a);return ((af(a) | 0) & 2147483647) >>> 0 > 2139095040 | 0;\n }function Tb(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;a: do if (!(c[a + (b << 3) + 4 >> 2] | 0)) {\n if ((b | 2 | 0) == 3 ? c[a + 60 >> 2] | 0 : 0) {\n a = a + 56 | 0;break;\n }switch (b | 0) {case 0:case 2:case 4:case 5:\n {\n if (c[a + 52 >> 2] | 0) {\n a = a + 48 | 0;break a;\n }break;\n }default:\n {}}if (!(c[a + 68 >> 2] | 0)) {\n a = (b | 1 | 0) == 5 ? 948 : d;break;\n } else {\n a = a + 64 | 0;break;\n }\n } else a = a + (b << 3) | 0; while (0);return a | 0;\n }function Ub(b) {\n b = b | 0;var d = 0;d = oB(1e3) | 0;Vb(b, (d | 0) != 0, 2456);c[2276] = (c[2276] | 0) + 1;BC(d | 0, 8104, 1e3) | 0;if (a[b + 2 >> 0] | 0) {\n c[d + 4 >> 2] = 2;c[d + 12 >> 2] = 4;\n }c[d + 976 >> 2] = b;return d | 0;\n }function Vb(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;f = l;l = l + 16 | 0;e = f;if (!b) {\n c[e >> 2] = d;fe(a, 5, 3197, e);\n }l = f;return;\n }function Wb() {\n return Ub(956) | 0;\n }function Xb(a) {\n a = a | 0;var b = 0;b = qC(1e3) | 0;Yb(b, a);Vb(c[a + 976 >> 2] | 0, 1, 2456);c[2276] = (c[2276] | 0) + 1;c[b + 944 >> 2] = 0;return b | 0;\n }function Yb(a, b) {\n a = a | 0;b = b | 0;var d = 0;BC(a | 0, b | 0, 948) | 0;ie(a + 948 | 0, b + 948 | 0);d = a + 960 | 0;a = b + 960 | 0;b = d + 40 | 0;do {\n c[d >> 2] = c[a >> 2];d = d + 4 | 0;a = a + 4 | 0;\n } while ((d | 0) < (b | 0));return;\n }function Zb(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0;b = a + 944 | 0;d = c[b >> 2] | 0;if (d | 0) {\n _b(d + 948 | 0, a) | 0;c[b >> 2] = 0;\n }d = $b(a) | 0;if (d | 0) {\n b = 0;do {\n c[(ac(a, b) | 0) + 944 >> 2] = 0;b = b + 1 | 0;\n } while ((b | 0) != (d | 0));\n }d = a + 948 | 0;e = c[d >> 2] | 0;f = a + 952 | 0;b = c[f >> 2] | 0;if ((b | 0) != (e | 0)) c[f >> 2] = b + (~((b + -4 - e | 0) >>> 2) << 2);bc(d);pB(a);c[2276] = (c[2276] | 0) + -1;return;\n }function _b(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = c[a >> 2] | 0;i = a + 4 | 0;d = c[i >> 2] | 0;g = d;a: do if ((e | 0) == (d | 0)) {\n f = e;h = 4;\n } else {\n a = e;while (1) {\n if ((c[a >> 2] | 0) == (b | 0)) {\n f = a;h = 4;break a;\n }a = a + 4 | 0;if ((a | 0) == (d | 0)) {\n a = 0;break;\n }\n }\n } while (0);if ((h | 0) == 4) if ((f | 0) != (d | 0)) {\n e = f + 4 | 0;a = g - e | 0;b = a >> 2;if (b) {\n GC(f | 0, e | 0, a | 0) | 0;d = c[i >> 2] | 0;\n }a = f + (b << 2) | 0;if ((d | 0) == (a | 0)) a = 1;else {\n c[i >> 2] = d + (~((d + -4 - a | 0) >>> 2) << 2);a = 1;\n }\n } else a = 0;return a | 0;\n }function $b(a) {\n a = a | 0;return (c[a + 952 >> 2] | 0) - (c[a + 948 >> 2] | 0) >> 2 | 0;\n }function ac(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[a + 948 >> 2] | 0;if ((c[a + 952 >> 2] | 0) - d >> 2 >>> 0 > b >>> 0) a = c[d + (b << 2) >> 2] | 0;else a = 0;return a | 0;\n }function bc(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0;e = l;l = l + 32 | 0;b = e;f = c[a >> 2] | 0;d = (c[a + 4 >> 2] | 0) - f | 0;if (((c[a + 8 >> 2] | 0) - f | 0) >>> 0 > d >>> 0) {\n f = d >> 2;bf(b, f, f, a + 8 | 0);cf(a, b);df(b);\n }l = e;return;\n }function cc(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;k = $b(a) | 0;do if (k | 0) {\n if ((c[(ac(a, 0) | 0) + 944 >> 2] | 0) == (a | 0)) {\n if (!(_b(a + 948 | 0, b) | 0)) break;BC(b + 400 | 0, 8504, 540) | 0;c[b + 944 >> 2] = 0;nc(a);break;\n }h = c[(c[a + 976 >> 2] | 0) + 12 >> 2] | 0;i = a + 948 | 0;j = (h | 0) == 0;d = 0;g = 0;do {\n e = c[(c[i >> 2] | 0) + (g << 2) >> 2] | 0;if ((e | 0) == (b | 0)) nc(a);else {\n f = Xb(e) | 0;c[(c[i >> 2] | 0) + (d << 2) >> 2] = f;c[f + 944 >> 2] = a;if (!j) Ib[h & 15](e, f, a, d);d = d + 1 | 0;\n }g = g + 1 | 0;\n } while ((g | 0) != (k | 0));if (d >>> 0 < k >>> 0) {\n j = a + 948 | 0;i = a + 952 | 0;h = d;d = c[i >> 2] | 0;do {\n g = (c[j >> 2] | 0) + (h << 2) | 0;e = g + 4 | 0;f = d - e | 0;b = f >> 2;if (!b) f = d;else {\n GC(g | 0, e | 0, f | 0) | 0;d = c[i >> 2] | 0;f = d;\n }e = g + (b << 2) | 0;if ((f | 0) != (e | 0)) {\n d = f + (~((f + -4 - e | 0) >>> 2) << 2) | 0;c[i >> 2] = d;\n }h = h + 1 | 0;\n } while ((h | 0) != (k | 0));\n }\n } while (0);return;\n }function dc(b) {\n b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;ec(b, ($b(b) | 0) == 0, 2491);ec(b, (c[b + 944 >> 2] | 0) == 0, 2545);d = b + 948 | 0;e = c[d >> 2] | 0;f = b + 952 | 0;g = c[f >> 2] | 0;if ((g | 0) != (e | 0)) c[f >> 2] = g + (~((g + -4 - e | 0) >>> 2) << 2);bc(d);d = b + 976 | 0;e = c[d >> 2] | 0;BC(b | 0, 8104, 1e3) | 0;if (a[e + 2 >> 0] | 0) {\n c[b + 4 >> 2] = 2;c[b + 12 >> 2] = 4;\n }c[d >> 2] = e;return;\n }function ec(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;f = l;l = l + 16 | 0;e = f;if (!b) {\n c[e >> 2] = d;Vd(a, 5, 3197, e);\n }l = f;return;\n }function fc() {\n return c[2276] | 0;\n }function gc() {\n var a = 0;a = oB(20) | 0;hc((a | 0) != 0, 2592);c[2277] = (c[2277] | 0) + 1;c[a >> 2] = c[239];c[a + 4 >> 2] = c[240];c[a + 8 >> 2] = c[241];c[a + 12 >> 2] = c[242];c[a + 16 >> 2] = c[243];return a | 0;\n }function hc(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = l;l = l + 16 | 0;d = e;if (!a) {\n c[d >> 2] = b;Vd(0, 5, 3197, d);\n }l = e;return;\n }function ic(a) {\n a = a | 0;pB(a);c[2277] = (c[2277] | 0) + -1;return;\n }function jc(a, b) {\n a = a | 0;b = b | 0;var d = 0;if (!b) {\n d = 0;b = 0;\n } else {\n ec(a, ($b(a) | 0) == 0, 2629);d = 1;\n }c[a + 964 >> 2] = b;c[a + 988 >> 2] = d;return;\n }function kc(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;g = e + 8 | 0;f = e + 4 | 0;h = e;c[f >> 2] = b;ec(a, (c[b + 944 >> 2] | 0) == 0, 2709);ec(a, (c[a + 964 >> 2] | 0) == 0, 2763);lc(a);b = a + 948 | 0;c[h >> 2] = (c[b >> 2] | 0) + (d << 2);c[g >> 2] = c[h >> 2];mc(b, g, f) | 0;c[(c[f >> 2] | 0) + 944 >> 2] = a;nc(a);l = e;return;\n }function lc(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;d = $b(a) | 0;if (d | 0 ? (c[(ac(a, 0) | 0) + 944 >> 2] | 0) != (a | 0) : 0) {\n e = c[(c[a + 976 >> 2] | 0) + 12 >> 2] | 0;f = a + 948 | 0;g = (e | 0) == 0;b = 0;do {\n h = c[(c[f >> 2] | 0) + (b << 2) >> 2] | 0;i = Xb(h) | 0;c[(c[f >> 2] | 0) + (b << 2) >> 2] = i;c[i + 944 >> 2] = a;if (!g) Ib[e & 15](h, i, a, b);b = b + 1 | 0;\n } while ((b | 0) != (d | 0));\n }return;\n }function mc(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0;s = l;l = l + 64 | 0;n = s + 52 | 0;i = s + 48 | 0;o = s + 28 | 0;p = s + 24 | 0;q = s + 20 | 0;r = s;e = c[a >> 2] | 0;g = e;b = e + ((c[b >> 2] | 0) - g >> 2 << 2) | 0;e = a + 4 | 0;f = c[e >> 2] | 0;h = a + 8 | 0;do if (f >>> 0 < (c[h >> 2] | 0) >>> 0) {\n if ((b | 0) == (f | 0)) {\n c[b >> 2] = c[d >> 2];c[e >> 2] = (c[e >> 2] | 0) + 4;break;\n }ef(a, b, f, b + 4 | 0);if (b >>> 0 <= d >>> 0) d = (c[e >> 2] | 0) >>> 0 > d >>> 0 ? d + 4 | 0 : d;c[b >> 2] = c[d >> 2];\n } else {\n e = (f - g >> 2) + 1 | 0;f = le(a) | 0;if (f >>> 0 < e >>> 0) jC(a);m = c[a >> 2] | 0;k = (c[h >> 2] | 0) - m | 0;g = k >> 1;bf(r, k >> 2 >>> 0 < f >>> 1 >>> 0 ? g >>> 0 < e >>> 0 ? e : g : f, b - m >> 2, a + 8 | 0);m = r + 8 | 0;e = c[m >> 2] | 0;g = r + 12 | 0;k = c[g >> 2] | 0;h = k;j = e;do if ((e | 0) == (k | 0)) {\n k = r + 4 | 0;e = c[k >> 2] | 0;t = c[r >> 2] | 0;f = t;if (e >>> 0 <= t >>> 0) {\n e = h - f >> 1;e = (e | 0) == 0 ? 1 : e;bf(o, e, e >>> 2, c[r + 16 >> 2] | 0);c[p >> 2] = c[k >> 2];c[q >> 2] = c[m >> 2];c[i >> 2] = c[p >> 2];c[n >> 2] = c[q >> 2];gf(o, i, n);e = c[r >> 2] | 0;c[r >> 2] = c[o >> 2];c[o >> 2] = e;e = o + 4 | 0;t = c[k >> 2] | 0;c[k >> 2] = c[e >> 2];c[e >> 2] = t;e = o + 8 | 0;t = c[m >> 2] | 0;c[m >> 2] = c[e >> 2];c[e >> 2] = t;e = o + 12 | 0;t = c[g >> 2] | 0;c[g >> 2] = c[e >> 2];c[e >> 2] = t;df(o);e = c[m >> 2] | 0;break;\n }g = e;h = ((g - f >> 2) + 1 | 0) / -2 | 0;i = e + (h << 2) | 0;f = j - g | 0;g = f >> 2;if (g) {\n GC(i | 0, e | 0, f | 0) | 0;e = c[k >> 2] | 0;\n }t = i + (g << 2) | 0;c[m >> 2] = t;c[k >> 2] = e + (h << 2);e = t;\n } while (0);c[e >> 2] = c[d >> 2];c[m >> 2] = (c[m >> 2] | 0) + 4;b = ff(a, r, b) | 0;df(r);\n } while (0);l = s;return b | 0;\n }function nc(b) {\n b = b | 0;var d = 0;do {\n d = b + 984 | 0;if (a[d >> 0] | 0) break;a[d >> 0] = 1;g[b + 504 >> 2] = T(t);b = c[b + 944 >> 2] | 0;\n } while ((b | 0) != 0);return;\n }function oc(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -4 - e | 0) >>> 2) << 2);sC(d);\n }return;\n }function pc(a) {\n a = a | 0;return c[a + 944 >> 2] | 0;\n }function qc(a) {\n a = a | 0;ec(a, (c[a + 964 >> 2] | 0) != 0, 2832);nc(a);return;\n }function rc(b) {\n b = b | 0;return (a[b + 984 >> 0] | 0) != 0 | 0;\n }function sc(a, b) {\n a = a | 0;b = b | 0;if (BB(a, b, 400) | 0) {\n BC(a | 0, b | 0, 400) | 0;nc(a);\n }return;\n }function tc(a) {\n a = a | 0;var b = ib;b = T(g[a + 44 >> 2]);a = Sb(b) | 0;return T(a ? T(0.0) : b);\n }function uc(b) {\n b = b | 0;var d = ib;d = T(g[b + 48 >> 2]);if (Sb(d) | 0) d = a[(c[b + 976 >> 2] | 0) + 2 >> 0] | 0 ? T(1.0) : T(0.0);return T(d);\n }function vc(a, b) {\n a = a | 0;b = b | 0;c[a + 980 >> 2] = b;return;\n }function wc(a) {\n a = a | 0;return c[a + 980 >> 2] | 0;\n }function xc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 4 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function yc(a) {\n a = a | 0;return c[a + 4 >> 2] | 0;\n }function zc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 8 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Ac(a) {\n a = a | 0;return c[a + 8 >> 2] | 0;\n }function Bc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 12 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Cc(a) {\n a = a | 0;return c[a + 12 >> 2] | 0;\n }function Dc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 16 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Ec(a) {\n a = a | 0;return c[a + 16 >> 2] | 0;\n }function Fc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 20 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Gc(a) {\n a = a | 0;return c[a + 20 >> 2] | 0;\n }function Hc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 24 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Ic(a) {\n a = a | 0;return c[a + 24 >> 2] | 0;\n }function Jc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 28 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Kc(a) {\n a = a | 0;return c[a + 28 >> 2] | 0;\n }function Lc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 32 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Mc(a) {\n a = a | 0;return c[a + 32 >> 2] | 0;\n }function Nc(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 36 | 0;if ((c[d >> 2] | 0) != (b | 0)) {\n c[d >> 2] = b;nc(a);\n }return;\n }function Oc(a) {\n a = a | 0;return c[a + 36 >> 2] | 0;\n }function Pc(a, b) {\n a = a | 0;b = T(b);var c = 0;c = a + 40 | 0;if (T(g[c >> 2]) != b) {\n g[c >> 2] = b;nc(a);\n }return;\n }function Qc(a, b) {\n a = a | 0;b = T(b);var c = 0;c = a + 44 | 0;if (T(g[c >> 2]) != b) {\n g[c >> 2] = b;nc(a);\n }return;\n }function Rc(a, b) {\n a = a | 0;b = T(b);var c = 0;c = a + 48 | 0;if (T(g[c >> 2]) != b) {\n g[c >> 2] = b;nc(a);\n }return;\n }function Sc(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 52 | 0;f = a + 56 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function Tc(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0;e = a + 52 | 0;d = a + 56 | 0;if (!(!(T(g[e >> 2]) != b) ? (c[d >> 2] | 0) == 2 : 0)) {\n g[e >> 2] = b;e = Sb(b) | 0;c[d >> 2] = e ? 3 : 2;nc(a);\n }return;\n }function Uc(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 52 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function Vc(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = (h ^ 1) & 1;f = a + 132 + (b << 3) | 0;b = a + 132 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function Wc(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = h ? 0 : 2;f = a + 132 + (b << 3) | 0;b = a + 132 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function Xc(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = b + 132 + (d << 3) | 0;b = c[e + 4 >> 2] | 0;d = a;c[d >> 2] = c[e >> 2];c[d + 4 >> 2] = b;return;\n }function Yc(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = (h ^ 1) & 1;f = a + 60 + (b << 3) | 0;b = a + 60 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function Zc(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = h ? 0 : 2;f = a + 60 + (b << 3) | 0;b = a + 60 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function _c(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = b + 60 + (d << 3) | 0;b = c[e + 4 >> 2] | 0;d = a;c[d >> 2] = c[e >> 2];c[d + 4 >> 2] = b;return;\n }function $c(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = a + 60 + (b << 3) + 4 | 0;if ((c[d >> 2] | 0) != 3) {\n g[a + 60 + (b << 3) >> 2] = T(t);c[d >> 2] = 3;nc(a);\n }return;\n }function ad(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = (h ^ 1) & 1;f = a + 204 + (b << 3) | 0;b = a + 204 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function bd(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = h ? 0 : 2;f = a + 204 + (b << 3) | 0;b = a + 204 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function cd(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = b + 204 + (d << 3) | 0;b = c[e + 4 >> 2] | 0;d = a;c[d >> 2] = c[e >> 2];c[d + 4 >> 2] = b;return;\n }function dd(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0,\n h = 0;h = Sb(d) | 0;e = (h ^ 1) & 1;f = a + 276 + (b << 3) | 0;b = a + 276 + (b << 3) + 4 | 0;if (!(h | T(g[f >> 2]) == d ? (c[b >> 2] | 0) == (e | 0) : 0)) {\n g[f >> 2] = d;c[b >> 2] = e;nc(a);\n }return;\n }function ed(a, b) {\n a = a | 0;b = b | 0;return T(g[a + 276 + (b << 3) >> 2]);\n }function fd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 348 | 0;f = a + 352 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function gd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0;e = a + 348 | 0;d = a + 352 | 0;if (!(!(T(g[e >> 2]) != b) ? (c[d >> 2] | 0) == 2 : 0)) {\n g[e >> 2] = b;e = Sb(b) | 0;c[d >> 2] = e ? 3 : 2;nc(a);\n }return;\n }function hd(a) {\n a = a | 0;var b = 0;b = a + 352 | 0;if ((c[b >> 2] | 0) != 3) {\n g[a + 348 >> 2] = T(t);c[b >> 2] = 3;nc(a);\n }return;\n }function id(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 348 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function jd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 356 | 0;f = a + 360 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function kd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0;e = a + 356 | 0;d = a + 360 | 0;if (!(!(T(g[e >> 2]) != b) ? (c[d >> 2] | 0) == 2 : 0)) {\n g[e >> 2] = b;e = Sb(b) | 0;c[d >> 2] = e ? 3 : 2;nc(a);\n }return;\n }function ld(a) {\n a = a | 0;var b = 0;b = a + 360 | 0;if ((c[b >> 2] | 0) != 3) {\n g[a + 356 >> 2] = T(t);c[b >> 2] = 3;nc(a);\n }return;\n }function md(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 356 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function nd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 364 | 0;f = a + 368 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function od(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = h ? 0 : 2;e = a + 364 | 0;f = a + 368 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function pd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 364 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function qd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 372 | 0;f = a + 376 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function rd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = h ? 0 : 2;e = a + 372 | 0;f = a + 376 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function sd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 372 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function td(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 380 | 0;f = a + 384 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function ud(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = h ? 0 : 2;e = a + 380 | 0;f = a + 384 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function vd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 380 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function wd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = (h ^ 1) & 1;e = a + 388 | 0;f = a + 392 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function xd(a, b) {\n a = a | 0;b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0;h = Sb(b) | 0;d = h ? 0 : 2;e = a + 388 | 0;f = a + 392 | 0;if (!(h | T(g[e >> 2]) == b ? (c[f >> 2] | 0) == (d | 0) : 0)) {\n g[e >> 2] = b;c[f >> 2] = d;nc(a);\n }return;\n }function yd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = b + 388 | 0;d = c[e + 4 >> 2] | 0;b = a;c[b >> 2] = c[e >> 2];c[b + 4 >> 2] = d;return;\n }function zd(a, b) {\n a = a | 0;b = T(b);var c = 0;c = a + 396 | 0;if (T(g[c >> 2]) != b) {\n g[c >> 2] = b;nc(a);\n }return;\n }function Ad(a) {\n a = a | 0;return T(g[a + 396 >> 2]);\n }function Bd(a) {\n a = a | 0;return T(g[a + 400 >> 2]);\n }function Cd(a) {\n a = a | 0;return T(g[a + 404 >> 2]);\n }function Dd(a) {\n a = a | 0;return T(g[a + 408 >> 2]);\n }function Ed(a) {\n a = a | 0;return T(g[a + 412 >> 2]);\n }function Fd(a) {\n a = a | 0;return T(g[a + 416 >> 2]);\n }function Gd(a) {\n a = a | 0;return T(g[a + 420 >> 2]);\n }function Hd(a, b) {\n a = a | 0;b = b | 0;ec(a, (b | 0) < 6, 2918);switch (b | 0) {case 0:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 5 : 4;break;\n }case 2:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 4 : 5;break;\n }default:\n {}}return T(g[a + 424 + (b << 2) >> 2]);\n }function Id(a, b) {\n a = a | 0;b = b | 0;ec(a, (b | 0) < 6, 2918);switch (b | 0) {case 0:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 5 : 4;break;\n }case 2:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 4 : 5;break;\n }default:\n {}}return T(g[a + 448 + (b << 2) >> 2]);\n }function Jd(a, b) {\n a = a | 0;b = b | 0;ec(a, (b | 0) < 6, 2918);switch (b | 0) {case 0:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 5 : 4;break;\n }case 2:\n {\n b = (c[a + 496 >> 2] | 0) == 2 ? 4 : 5;break;\n }default:\n {}}return T(g[a + 472 + (b << 2) >> 2]);\n }function Kd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = ib;d = c[a + 4 >> 2] | 0;if ((d | 0) == (c[b + 4 >> 2] | 0)) {\n if (!d) a = 1;else {\n e = T(g[a >> 2]);a = T(C(T(e - T(g[b >> 2])))) < T(.0000999999974);\n }\n } else a = 0;return a | 0;\n }function Ld(a, b) {\n a = T(a);b = T(b);var c = 0;if (Sb(a) | 0) c = Sb(b) | 0;else c = T(C(T(a - b))) < T(.0000999999974);return c | 0;\n }function Md(a, b) {\n a = a | 0;b = b | 0;Nd(a, b);return;\n }function Nd(b, d) {\n b = b | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e + 4 | 0;c[f >> 2] = 0;c[f + 4 >> 2] = 0;c[f + 8 >> 2] = 0;Ka(f | 0, b | 0, d | 0, 0);Vd(b, 3, (a[f + 11 >> 0] | 0) < 0 ? c[f >> 2] | 0 : f, e);tC(f);l = e;return;\n }function Od(a, b, c, d) {\n a = T(a);b = T(b);c = c | 0;d = d | 0;var e = ib;a = T(a * b);e = T(gC(a, T(1.0)));do if (!(Ld(e, T(0.0)) | 0)) {\n a = T(a - e);if (Ld(e, T(1.0)) | 0) {\n a = T(a + T(1.0));break;\n }if (c) {\n a = T(a + T(1.0));break;\n }if (!d) {\n if (e > T(.5)) e = T(1.0);else {\n d = Ld(e, T(.5)) | 0;e = d ? T(1.0) : T(0.0);\n }a = T(a + e);\n }\n } else a = T(a - e); while (0);return T(a / b);\n }function Pd(a, b, c, d, e, f, h, i, j, k, l, m, n) {\n a = a | 0;b = T(b);c = c | 0;d = T(d);e = e | 0;f = T(f);h = h | 0;i = T(i);j = T(j);k = T(k);l = T(l);m = T(m);n = n | 0;var o = 0,\n p = ib,\n q = ib,\n r = ib,\n s = ib,\n t = ib,\n u = ib;if (j < T(0.0) | k < T(0.0)) n = 0;else {\n if ((n | 0) != 0 ? (p = T(g[n + 4 >> 2]), p != T(0.0)) : 0) {\n r = T(Od(b, p, 0, 0));s = T(Od(d, p, 0, 0));q = T(Od(f, p, 0, 0));p = T(Od(i, p, 0, 0));\n } else {\n q = f;r = b;p = i;s = d;\n }if ((e | 0) == (a | 0)) o = Ld(q, r) | 0;else o = 0;if ((h | 0) == (c | 0)) n = Ld(p, s) | 0;else n = 0;if ((!o ? (t = T(b - l), !(Qd(a, t, j) | 0)) : 0) ? !(Rd(a, t, e, j) | 0) : 0) o = Sd(a, t, e, f, j) | 0;else o = 1;if ((!n ? (u = T(d - m), !(Qd(c, u, k) | 0)) : 0) ? !(Rd(c, u, h, k) | 0) : 0) n = Sd(c, u, h, i, k) | 0;else n = 1;n = o & n;\n }return n | 0;\n }function Qd(a, b, c) {\n a = a | 0;b = T(b);c = T(c);if ((a | 0) == 1) a = Ld(b, c) | 0;else a = 0;return a | 0;\n }function Rd(a, b, c, d) {\n a = a | 0;b = T(b);c = c | 0;d = T(d);if ((a | 0) == 2 & (c | 0) == 0) {\n if (!(b >= d)) a = Ld(b, d) | 0;else a = 1;\n } else a = 0;return a | 0;\n }function Sd(a, b, c, d, e) {\n a = a | 0;b = T(b);c = c | 0;d = T(d);e = T(e);if ((a | 0) == 2 & (c | 0) == 2 & d > b) {\n if (!(e <= b)) a = Ld(b, e) | 0;else a = 1;\n } else a = 0;return a | 0;\n }function Td(b, d, e, f, i, j, k, m, n, o, p) {\n b = b | 0;d = T(d);e = T(e);f = f | 0;i = i | 0;j = j | 0;k = T(k);m = T(m);n = n | 0;o = o | 0;p = p | 0;var q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = ib,\n v = ib,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = ib,\n I = ib,\n J = ib,\n K = 0.0,\n L = 0.0;G = l;l = l + 160 | 0;D = G + 152 | 0;C = G + 120 | 0;B = G + 104 | 0;y = G + 72 | 0;t = G + 56 | 0;A = G + 8 | 0;x = G;z = (c[2279] | 0) + 1 | 0;c[2279] = z;E = b + 984 | 0;if ((a[E >> 0] | 0) != 0 ? (c[b + 512 >> 2] | 0) != (c[2278] | 0) : 0) w = 4;else if ((c[b + 516 >> 2] | 0) == (f | 0)) F = 0;else w = 4;if ((w | 0) == 4) {\n c[b + 520 >> 2] = 0;c[b + 924 >> 2] = -1;c[b + 928 >> 2] = -1;g[b + 932 >> 2] = T(-1.0);g[b + 936 >> 2] = T(-1.0);F = 1;\n }a: do if (!(c[b + 964 >> 2] | 0)) {\n if (n) {\n q = b + 916 | 0;if (!(Ld(T(g[q >> 2]), d) | 0)) {\n w = 21;break;\n }if (!(Ld(T(g[b + 920 >> 2]), e) | 0)) {\n w = 21;break;\n }if ((c[b + 924 >> 2] | 0) != (i | 0)) {\n w = 21;break;\n }q = (c[b + 928 >> 2] | 0) == (j | 0) ? q : 0;w = 22;break;\n }s = c[b + 520 >> 2] | 0;if (!s) w = 21;else {\n r = 0;while (1) {\n q = b + 524 + (r * 24 | 0) | 0;if (((Ld(T(g[q >> 2]), d) | 0 ? Ld(T(g[b + 524 + (r * 24 | 0) + 4 >> 2]), e) | 0 : 0) ? (c[b + 524 + (r * 24 | 0) + 8 >> 2] | 0) == (i | 0) : 0) ? (c[b + 524 + (r * 24 | 0) + 12 >> 2] | 0) == (j | 0) : 0) {\n w = 22;break a;\n }r = r + 1 | 0;if (r >>> 0 >= s >>> 0) {\n w = 21;break;\n }\n }\n }\n } else {\n u = T(Ud(b, 2, k));v = T(Ud(b, 0, k));q = b + 916 | 0;J = T(g[q >> 2]);I = T(g[b + 920 >> 2]);H = T(g[b + 932 >> 2]);if (!(Pd(i, d, j, e, c[b + 924 >> 2] | 0, J, c[b + 928 >> 2] | 0, I, H, T(g[b + 936 >> 2]), u, v, p) | 0)) {\n s = c[b + 520 >> 2] | 0;if (!s) w = 21;else {\n r = 0;while (1) {\n q = b + 524 + (r * 24 | 0) | 0;H = T(g[q >> 2]);I = T(g[b + 524 + (r * 24 | 0) + 4 >> 2]);J = T(g[b + 524 + (r * 24 | 0) + 16 >> 2]);if (Pd(i, d, j, e, c[b + 524 + (r * 24 | 0) + 8 >> 2] | 0, H, c[b + 524 + (r * 24 | 0) + 12 >> 2] | 0, I, J, T(g[b + 524 + (r * 24 | 0) + 20 >> 2]), u, v, p) | 0) {\n w = 22;break a;\n }r = r + 1 | 0;if (r >>> 0 >= s >>> 0) {\n w = 21;break;\n }\n }\n }\n } else w = 22;\n } while (0);do if ((w | 0) == 21) {\n if (!(a[11697] | 0)) {\n q = 0;w = 31;\n } else {\n q = 0;w = 28;\n }\n } else if ((w | 0) == 22) {\n r = (a[11697] | 0) != 0;if (!((q | 0) != 0 & (F ^ 1))) if (r) {\n w = 28;break;\n } else {\n w = 31;break;\n }t = q + 16 | 0;c[b + 908 >> 2] = c[t >> 2];s = q + 20 | 0;c[b + 912 >> 2] = c[s >> 2];if (!((a[11698] | 0) == 0 | r ^ 1)) {\n c[x >> 2] = Wd(z) | 0;c[x + 4 >> 2] = z;Vd(b, 4, 2972, x);r = c[b + 972 >> 2] | 0;if (r | 0) nb[r & 127](b);i = Xd(i, n) | 0;j = Xd(j, n) | 0;L = +T(g[t >> 2]);K = +T(g[s >> 2]);c[A >> 2] = i;c[A + 4 >> 2] = j;h[A + 8 >> 3] = +d;h[A + 16 >> 3] = +e;h[A + 24 >> 3] = L;h[A + 32 >> 3] = K;c[A + 40 >> 2] = o;Vd(b, 4, 2989, A);\n }\n } while (0);if ((w | 0) == 28) {\n r = Wd(z) | 0;c[t >> 2] = r;c[t + 4 >> 2] = z;c[t + 8 >> 2] = F ? 3047 : 11699;Vd(b, 4, 3038, t);r = c[b + 972 >> 2] | 0;if (r | 0) nb[r & 127](b);A = Xd(i, n) | 0;w = Xd(j, n) | 0;c[y >> 2] = A;c[y + 4 >> 2] = w;h[y + 8 >> 3] = +d;h[y + 16 >> 3] = +e;c[y + 24 >> 2] = o;Vd(b, 4, 3049, y);w = 31;\n }if ((w | 0) == 31) {\n Yd(b, d, e, f, i, j, k, m, n, p);if (a[11697] | 0) {\n r = c[2279] | 0;A = Wd(r) | 0;c[B >> 2] = A;c[B + 4 >> 2] = r;c[B + 8 >> 2] = F ? 3047 : 11699;Vd(b, 4, 3083, B);r = c[b + 972 >> 2] | 0;if (r | 0) nb[r & 127](b);A = Xd(i, n) | 0;B = Xd(j, n) | 0;K = +T(g[b + 908 >> 2]);L = +T(g[b + 912 >> 2]);c[C >> 2] = A;c[C + 4 >> 2] = B;h[C + 8 >> 3] = K;h[C + 16 >> 3] = L;c[C + 24 >> 2] = o;Vd(b, 4, 3092, C);\n }c[b + 516 >> 2] = f;if (!q) {\n r = b + 520 | 0;q = c[r >> 2] | 0;if ((q | 0) == 16) {\n if (a[11697] | 0) Vd(b, 4, 3124, D);c[r >> 2] = 0;q = 0;\n }if (n) q = b + 916 | 0;else {\n c[r >> 2] = q + 1;q = b + 524 + (q * 24 | 0) | 0;\n }g[q >> 2] = d;g[q + 4 >> 2] = e;c[q + 8 >> 2] = i;c[q + 12 >> 2] = j;c[q + 16 >> 2] = c[b + 908 >> 2];c[q + 20 >> 2] = c[b + 912 >> 2];q = 0;\n }\n }if (n) {\n c[b + 416 >> 2] = c[b + 908 >> 2];c[b + 420 >> 2] = c[b + 912 >> 2];a[b + 985 >> 0] = 1;a[E >> 0] = 0;\n }c[2279] = (c[2279] | 0) + -1;c[b + 512 >> 2] = c[2278];l = G;return F | (q | 0) == 0 | 0;\n }function Ud(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);var d = ib;d = T(me(a, b, c));return T(d + T(ne(a, b, c)));\n }function Vd(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;c[f >> 2] = e;if (!a) e = 0;else e = c[a + 976 >> 2] | 0;ge(e, a, b, d, f);l = g;return;\n }function Wd(a) {\n a = a | 0;return (a >>> 0 > 60 ? 3201 : 3201 + (60 - a) | 0) | 0;\n }function Xd(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 32 | 0;d = f + 12 | 0;e = f;c[d >> 2] = c[254];c[d + 4 >> 2] = c[255];c[d + 8 >> 2] = c[256];c[e >> 2] = c[257];c[e + 4 >> 2] = c[258];c[e + 8 >> 2] = c[259];if ((a | 0) > 2) a = 11699;else a = c[(b ? e : d) + (a << 2) >> 2] | 0;l = f;return a | 0;\n }function Yd(b, e, f, h, i, k, m, n, o, p) {\n b = b | 0;e = T(e);f = T(f);h = h | 0;i = i | 0;k = k | 0;m = T(m);n = T(n);o = o | 0;p = p | 0;var q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = ib,\n v = ib,\n w = ib,\n x = ib,\n y = ib,\n z = ib,\n A = ib,\n B = 0,\n C = 0,\n D = 0,\n E = ib,\n F = ib,\n G = 0,\n H = ib,\n I = 0,\n J = 0,\n K = 0,\n L = 0,\n M = 0,\n N = 0,\n O = 0,\n P = 0,\n Q = 0,\n R = 0,\n S = 0,\n U = 0,\n V = 0,\n W = 0,\n X = 0,\n Y = 0,\n Z = 0,\n _ = 0,\n $ = ib,\n aa = ib,\n ba = ib,\n ca = ib,\n da = ib,\n ea = 0,\n fa = 0,\n ga = 0,\n ha = 0,\n ia = 0,\n ja = ib,\n ka = ib,\n la = ib,\n ma = ib,\n na = ib,\n oa = ib,\n pa = 0,\n qa = ib,\n ra = ib,\n sa = ib,\n ta = ib,\n ua = ib,\n va = ib,\n wa = 0,\n xa = 0,\n ya = ib,\n za = ib,\n Aa = 0,\n Ba = 0,\n Ca = 0,\n Da = 0,\n Ea = ib,\n Fa = 0,\n Ga = 0,\n Ha = 0,\n Ia = 0,\n Ja = 0,\n Ka = 0,\n La = 0,\n Ma = ib,\n Na = 0,\n Oa = 0;La = l;l = l + 16 | 0;ea = La + 12 | 0;fa = La + 8 | 0;ga = La + 4 | 0;ha = La;ec(b, (i | 0) == 0 | (Sb(e) | 0) ^ 1, 3326);ec(b, (k | 0) == 0 | (Sb(f) | 0) ^ 1, 3406);Ga = qe(b, h) | 0;c[b + 496 >> 2] = Ga;Ja = re(2, Ga) | 0;Ka = re(0, Ga) | 0;g[b + 440 >> 2] = T(me(b, Ja, m));g[b + 444 >> 2] = T(ne(b, Ja, m));g[b + 428 >> 2] = T(me(b, Ka, m));g[b + 436 >> 2] = T(ne(b, Ka, m));g[b + 464 >> 2] = T(se(b, Ja));g[b + 468 >> 2] = T(te(b, Ja));g[b + 452 >> 2] = T(se(b, Ka));g[b + 460 >> 2] = T(te(b, Ka));g[b + 488 >> 2] = T(ue(b, Ja, m));g[b + 492 >> 2] = T(ve(b, Ja, m));g[b + 476 >> 2] = T(ue(b, Ka, m));g[b + 484 >> 2] = T(ve(b, Ka, m));do if (!(c[b + 964 >> 2] | 0)) {\n Ha = b + 948 | 0;Ia = (c[b + 952 >> 2] | 0) - (c[Ha >> 2] | 0) >> 2;if (!Ia) {\n xe(b, e, f, i, k, m, n);break;\n }if (!o ? ye(b, e, f, i, k, m, n) | 0 : 0) break;lc(b);Y = b + 508 | 0;a[Y >> 0] = 0;Ja = re(c[b + 4 >> 2] | 0, Ga) | 0;Ka = ze(Ja, Ga) | 0;Fa = oe(Ja) | 0;Z = c[b + 8 >> 2] | 0;Ba = b + 28 | 0;_ = (c[Ba >> 2] | 0) != 0;ua = Fa ? m : n;ya = Fa ? n : m;$ = T(Ae(b, Ja, m));aa = T(Be(b, Ja, m));u = T(Ae(b, Ka, m));va = T(Ce(b, Ja, m));za = T(Ce(b, Ka, m));D = Fa ? i : k;Aa = Fa ? k : i;Ea = Fa ? va : za;y = Fa ? za : va;ta = T(Ud(b, 2, m));x = T(Ud(b, 0, m));v = T(T(be(b + 364 | 0, m)) - Ea);w = T(T(be(b + 380 | 0, m)) - Ea);z = T(T(be(b + 372 | 0, n)) - y);A = T(T(be(b + 388 | 0, n)) - y);ba = Fa ? v : z;ca = Fa ? w : A;ta = T(e - ta);e = T(ta - Ea);if (Sb(e) | 0) Ea = e;else Ea = T(cC(T(eC(e, w)), v));ra = T(f - x);e = T(ra - y);if (Sb(e) | 0) sa = e;else sa = T(cC(T(eC(e, A)), z));v = Fa ? Ea : sa;qa = Fa ? sa : Ea;a: do if ((D | 0) == 1) {\n h = 0;r = 0;while (1) {\n q = ac(b, r) | 0;if (!h) {\n if (T(Ee(q)) > T(0.0) ? T(Fe(q)) > T(0.0) : 0) h = q;else h = 0;\n } else if (De(q) | 0) {\n t = 0;break a;\n }r = r + 1 | 0;if (r >>> 0 >= Ia >>> 0) {\n t = h;break;\n }\n }\n } else t = 0; while (0);B = t + 500 | 0;C = t + 504 | 0;h = 0;q = 0;e = T(0.0);s = 0;do {\n r = c[(c[Ha >> 2] | 0) + (s << 2) >> 2] | 0;if ((c[r + 36 >> 2] | 0) == 1) {\n Ge(r);a[r + 985 >> 0] = 1;a[r + 984 >> 0] = 0;\n } else {\n $d(r);if (o) ce(r, qe(r, Ga) | 0, v, qa, Ea);do if ((c[r + 24 >> 2] | 0) != 1) {\n if ((r | 0) == (t | 0)) {\n c[B >> 2] = c[2278];g[C >> 2] = T(0.0);break;\n } else {\n He(b, r, Ea, i, sa, Ea, sa, k, Ga, p);break;\n }\n } else {\n if (q | 0) c[q + 960 >> 2] = r;c[r + 960 >> 2] = 0;q = r;h = (h | 0) == 0 ? r : h;\n } while (0);oa = T(g[r + 504 >> 2]);e = T(e + T(oa + T(Ud(r, Ja, Ea))));\n }s = s + 1 | 0;\n } while ((s | 0) != (Ia | 0));K = e > v;pa = _ & ((D | 0) == 2 & K) ? 1 : D;I = (Aa | 0) == 1;M = I & (o ^ 1);N = (pa | 0) == 1;O = (pa | 0) == 2;P = 976 + (Ja << 2) | 0;Q = (Aa | 2 | 0) == 2;W = I & (_ ^ 1);R = 1040 + (Ka << 2) | 0;S = 1040 + (Ja << 2) | 0;U = 976 + (Ka << 2) | 0;V = (Aa | 0) != 1;K = _ & ((D | 0) != 0 & K);J = b + 976 | 0;I = I ^ 1;e = v;G = 0;L = 0;oa = T(0.0);da = T(0.0);while (1) {\n b: do if (G >>> 0 < Ia >>> 0) {\n C = c[Ha >> 2] | 0;s = 0;A = T(0.0);z = T(0.0);w = T(0.0);v = T(0.0);r = 0;q = 0;t = G;while (1) {\n B = c[C + (t << 2) >> 2] | 0;if ((c[B + 36 >> 2] | 0) != 1 ? (c[B + 940 >> 2] = L, (c[B + 24 >> 2] | 0) != 1) : 0) {\n x = T(Ud(B, Ja, Ea));X = c[P >> 2] | 0;f = T(be(B + 380 + (X << 3) | 0, ua));y = T(g[B + 504 >> 2]);f = T(eC(f, y));f = T(cC(T(be(B + 364 + (X << 3) | 0, ua)), f));if (_ & (s | 0) != 0 & T(x + T(z + f)) > e) {\n k = s;x = A;D = t;break b;\n }x = T(x + f);f = T(z + x);x = T(A + x);if (De(B) | 0) {\n w = T(w + T(Ee(B)));v = T(v - T(y * T(Fe(B))));\n }if (q | 0) c[q + 960 >> 2] = B;c[B + 960 >> 2] = 0;s = s + 1 | 0;q = B;r = (r | 0) == 0 ? B : r;\n } else {\n x = A;f = z;\n }t = t + 1 | 0;if (t >>> 0 < Ia >>> 0) {\n A = x;z = f;\n } else {\n k = s;D = t;break;\n }\n }\n } else {\n k = 0;x = T(0.0);w = T(0.0);v = T(0.0);r = 0;D = G;\n } while (0);X = w > T(0.0) & w < T(1.0);E = X ? T(1.0) : w;X = v > T(0.0) & v < T(1.0);A = X ? T(1.0) : v;do if (!N) {\n if (!(x < ba & ((Sb(ba) | 0) ^ 1))) {\n if (!(x > ca & ((Sb(ca) | 0) ^ 1))) {\n if (!(a[(c[J >> 2] | 0) + 3 >> 0] | 0)) {\n if (!(E == T(0.0)) ? !(T(Ee(b)) == T(0.0)) : 0) {\n X = 53;break;\n }e = x;X = 53;\n } else X = 51;\n } else {\n e = ca;X = 51;\n }\n } else {\n e = ba;X = 51;\n }\n } else X = 51; while (0);if ((X | 0) == 51) {\n X = 0;if (Sb(e) | 0) X = 53;else {\n F = T(e - x);H = e;\n }\n }if ((X | 0) == 53) {\n X = 0;if (x < T(0.0)) {\n F = T(-x);H = e;\n } else {\n F = T(0.0);H = e;\n }\n }if (!M ? (ia = (r | 0) == 0, !ia) : 0) {\n s = c[P >> 2] | 0;t = F < T(0.0);y = T(F / A);B = F > T(0.0);z = T(F / E);w = T(0.0);x = T(0.0);e = T(0.0);q = r;do {\n f = T(be(q + 380 + (s << 3) | 0, ua));v = T(be(q + 364 + (s << 3) | 0, ua));v = T(eC(f, T(cC(v, T(g[q + 504 >> 2])))));if (t) {\n f = T(v * T(Fe(q)));if (f != T(-0.0) ? (Ma = T(v - T(y * f)), ja = T(Ie(q, Ja, Ma, H, Ea)), Ma != ja) : 0) {\n w = T(w - T(ja - v));e = T(e + f);\n }\n } else if ((B ? (ka = T(Ee(q)), ka != T(0.0)) : 0) ? (Ma = T(v + T(z * ka)), la = T(Ie(q, Ja, Ma, H, Ea)), Ma != la) : 0) {\n w = T(w - T(la - v));x = T(x - ka);\n }q = c[q + 960 >> 2] | 0;\n } while ((q | 0) != 0);e = T(A + e);v = T(F + w);if (!ia) {\n y = T(E + x);t = c[P >> 2] | 0;B = v < T(0.0);C = e == T(0.0);z = T(v / e);s = v > T(0.0);y = T(v / y);e = T(0.0);do {\n Ma = T(be(r + 380 + (t << 3) | 0, ua));w = T(be(r + 364 + (t << 3) | 0, ua));w = T(eC(Ma, T(cC(w, T(g[r + 504 >> 2])))));if (B) {\n Ma = T(w * T(Fe(r)));v = T(-Ma);if (Ma != T(-0.0)) {\n Ma = T(z * v);v = T(Ie(r, Ja, T(w + (C ? v : Ma)), H, Ea));\n } else v = w;\n } else if (s ? (ma = T(Ee(r)), ma != T(0.0)) : 0) v = T(Ie(r, Ja, T(w + T(y * ma)), H, Ea));else v = w;e = T(e - T(v - w));x = T(Ud(r, Ja, Ea));f = T(Ud(r, Ka, Ea));v = T(v + x);g[fa >> 2] = v;c[ha >> 2] = 1;w = T(g[r + 396 >> 2]);c: do if (Sb(w) | 0) {\n q = Sb(qa) | 0;do if (!q) {\n if (K | (ae(r, Ka, qa) | 0 | I)) break;if ((Je(b, r) | 0) != 4) break;if ((c[(Ke(r, Ka) | 0) + 4 >> 2] | 0) == 3) break;if ((c[(Le(r, Ka) | 0) + 4 >> 2] | 0) == 3) break;g[ea >> 2] = qa;c[ga >> 2] = 1;break c;\n } while (0);if (ae(r, Ka, qa) | 0) {\n q = c[r + 992 + (c[U >> 2] << 2) >> 2] | 0;Ma = T(f + T(be(q, qa)));g[ea >> 2] = Ma;q = V & (c[q + 4 >> 2] | 0) == 2;c[ga >> 2] = ((Sb(Ma) | 0 | q) ^ 1) & 1;break;\n } else {\n g[ea >> 2] = qa;c[ga >> 2] = q ? 0 : 2;break;\n }\n } else {\n Ma = T(v - x);E = T(Ma / w);Ma = T(w * Ma);c[ga >> 2] = 1;g[ea >> 2] = T(f + (Fa ? E : Ma));\n } while (0);Me(r, Ja, H, Ea, ha, fa);Me(r, Ka, qa, Ea, ga, ea);do if (!(ae(r, Ka, qa) | 0) ? (Je(b, r) | 0) == 4 : 0) {\n if ((c[(Ke(r, Ka) | 0) + 4 >> 2] | 0) == 3) {\n q = 0;break;\n }q = (c[(Le(r, Ka) | 0) + 4 >> 2] | 0) != 3;\n } else q = 0; while (0);Ma = T(g[fa >> 2]);E = T(g[ea >> 2]);Na = c[ha >> 2] | 0;Oa = c[ga >> 2] | 0;Td(r, Fa ? Ma : E, Fa ? E : Ma, Ga, Fa ? Na : Oa, Fa ? Oa : Na, Ea, sa, o & (q ^ 1), 3488, p) | 0;a[Y >> 0] = a[Y >> 0] | a[r + 508 >> 0];r = c[r + 960 >> 2] | 0;\n } while ((r | 0) != 0);\n } else e = T(0.0);\n } else e = T(0.0);e = T(F + e);Oa = e < T(0.0) & 1;a[Y >> 0] = Oa | d[Y >> 0];if (O & e > T(0.0)) {\n q = c[P >> 2] | 0;if ((c[b + 364 + (q << 3) + 4 >> 2] | 0) != 0 ? (na = T(be(b + 364 + (q << 3) | 0, ua)), na >= T(0.0)) : 0) v = T(cC(T(0.0), T(na - T(H - e))));else v = T(0.0);\n } else v = e;B = G >>> 0 < D >>> 0;if (B) {\n t = c[Ha >> 2] | 0;s = G;q = 0;do {\n r = c[t + (s << 2) >> 2] | 0;if (!(c[r + 24 >> 2] | 0)) {\n q = ((c[(Ke(r, Ja) | 0) + 4 >> 2] | 0) == 3 & 1) + q | 0;q = q + ((c[(Le(r, Ja) | 0) + 4 >> 2] | 0) == 3 & 1) | 0;\n }s = s + 1 | 0;\n } while ((s | 0) != (D | 0));if (q) {\n x = T(0.0);f = T(0.0);\n } else X = 101;\n } else X = 101;d: do if ((X | 0) == 101) {\n X = 0;switch (Z | 0) {case 1:\n {\n q = 0;x = T(v * T(.5));f = T(0.0);break d;\n }case 2:\n {\n q = 0;x = v;f = T(0.0);break d;\n }case 3:\n {\n if (k >>> 0 <= 1) {\n q = 0;x = T(0.0);f = T(0.0);break d;\n }f = T((k + -1 | 0) >>> 0);q = 0;x = T(0.0);f = T(T(cC(v, T(0.0))) / f);break d;\n }case 5:\n {\n f = T(v / T((k + 1 | 0) >>> 0));q = 0;x = f;break d;\n }case 4:\n {\n f = T(v / T(k >>> 0));q = 0;x = T(f * T(.5));break d;\n }default:\n {\n q = 0;x = T(0.0);f = T(0.0);break d;\n }}\n } while (0);e = T($ + x);if (B) {\n w = T(v / T(q | 0));s = c[Ha >> 2] | 0;r = G;v = T(0.0);do {\n q = c[s + (r << 2) >> 2] | 0;e: do if ((c[q + 36 >> 2] | 0) != 1) {\n switch (c[q + 24 >> 2] | 0) {case 1:\n {\n if (Ne(q, Ja) | 0) {\n if (!o) break e;Ma = T(Oe(q, Ja, H));Ma = T(Ma + T(se(b, Ja)));Ma = T(Ma + T(me(q, Ja, Ea)));g[q + 400 + (c[S >> 2] << 2) >> 2] = Ma;break e;\n }break;\n }case 0:\n {\n Oa = (c[(Ke(q, Ja) | 0) + 4 >> 2] | 0) == 3;Ma = T(w + e);e = Oa ? Ma : e;if (o) {\n Oa = q + 400 + (c[S >> 2] << 2) | 0;g[Oa >> 2] = T(e + T(g[Oa >> 2]));\n }Oa = (c[(Le(q, Ja) | 0) + 4 >> 2] | 0) == 3;Ma = T(w + e);e = Oa ? Ma : e;if (M) {\n Ma = T(f + T(Ud(q, Ja, Ea)));v = qa;e = T(e + T(Ma + T(g[q + 504 >> 2])));break e;\n } else {\n e = T(e + T(f + T(Pe(q, Ja, Ea))));v = T(cC(v, T(Pe(q, Ka, Ea))));break e;\n }\n }default:\n {}}if (o) {\n Ma = T(x + T(se(b, Ja)));Oa = q + 400 + (c[S >> 2] << 2) | 0;g[Oa >> 2] = T(Ma + T(g[Oa >> 2]));\n }\n } while (0);r = r + 1 | 0;\n } while ((r | 0) != (D | 0));\n } else v = T(0.0);f = T(aa + e);if (Q) x = T(T(Ie(b, Ka, T(za + v), ya, m)) - za);else x = qa;w = T(T(Ie(b, Ka, T(za + (W ? qa : v)), ya, m)) - za);if (B & o) {\n r = G;do {\n s = c[(c[Ha >> 2] | 0) + (r << 2) >> 2] | 0;do if ((c[s + 36 >> 2] | 0) != 1) {\n if ((c[s + 24 >> 2] | 0) == 1) {\n if (Ne(s, Ka) | 0) {\n Ma = T(Oe(s, Ka, qa));Ma = T(Ma + T(se(b, Ka)));Ma = T(Ma + T(me(s, Ka, Ea)));q = c[R >> 2] | 0;g[s + 400 + (q << 2) >> 2] = Ma;if (!(Sb(Ma) | 0)) break;\n } else q = c[R >> 2] | 0;Ma = T(se(b, Ka));g[s + 400 + (q << 2) >> 2] = T(Ma + T(me(s, Ka, Ea)));break;\n }q = Je(b, s) | 0;do if ((q | 0) == 4) {\n if ((c[(Ke(s, Ka) | 0) + 4 >> 2] | 0) == 3) {\n X = 139;break;\n }if ((c[(Le(s, Ka) | 0) + 4 >> 2] | 0) == 3) {\n X = 139;break;\n }if (ae(s, Ka, qa) | 0) {\n e = u;break;\n }Na = c[s + 908 + (c[P >> 2] << 2) >> 2] | 0;c[ea >> 2] = Na;e = T(g[s + 396 >> 2]);Oa = Sb(e) | 0;v = (c[j >> 2] = Na, T(g[j >> 2]));if (Oa) e = w;else {\n F = T(Ud(s, Ka, Ea));Ma = T(v / e);e = T(e * v);e = T(F + (Fa ? Ma : e));\n }g[fa >> 2] = e;g[ea >> 2] = T(T(Ud(s, Ja, Ea)) + v);c[ga >> 2] = 1;c[ha >> 2] = 1;Me(s, Ja, H, Ea, ga, ea);Me(s, Ka, qa, Ea, ha, fa);e = T(g[ea >> 2]);F = T(g[fa >> 2]);Ma = Fa ? e : F;e = Fa ? F : e;Oa = ((Sb(Ma) | 0) ^ 1) & 1;Td(s, Ma, e, Ga, Oa, ((Sb(e) | 0) ^ 1) & 1, Ea, sa, 1, 3493, p) | 0;e = u;\n } else X = 139; while (0);f: do if ((X | 0) == 139) {\n X = 0;e = T(x - T(Pe(s, Ka, Ea)));do if ((c[(Ke(s, Ka) | 0) + 4 >> 2] | 0) == 3) {\n if ((c[(Le(s, Ka) | 0) + 4 >> 2] | 0) != 3) break;e = T(u + T(cC(T(0.0), T(e * T(.5)))));break f;\n } while (0);if ((c[(Le(s, Ka) | 0) + 4 >> 2] | 0) == 3) {\n e = u;break;\n }if ((c[(Ke(s, Ka) | 0) + 4 >> 2] | 0) == 3) {\n e = T(u + T(cC(T(0.0), e)));break;\n }switch (q | 0) {case 1:\n {\n e = u;break f;\n }case 2:\n {\n e = T(u + T(e * T(.5)));break f;\n }default:\n {\n e = T(u + e);break f;\n }}\n } while (0);Ma = T(oa + e);Oa = s + 400 + (c[R >> 2] << 2) | 0;g[Oa >> 2] = T(Ma + T(g[Oa >> 2]));\n } while (0);r = r + 1 | 0;\n } while ((r | 0) != (D | 0));\n }oa = T(oa + w);da = T(cC(da, f));k = L + 1 | 0;if (D >>> 0 >= Ia >>> 0) break;else {\n e = H;G = D;L = k;\n }\n }do if (o) {\n q = k >>> 0 > 1;if (!q ? !(Qe(b) | 0) : 0) break;if (!(Sb(qa) | 0)) {\n e = T(qa - oa);g: do switch (c[b + 12 >> 2] | 0) {case 3:\n {\n u = T(u + e);z = T(0.0);break;\n }case 2:\n {\n u = T(u + T(e * T(.5)));z = T(0.0);break;\n }case 4:\n {\n if (qa > oa) z = T(e / T(k >>> 0));else z = T(0.0);break;\n }case 7:\n if (qa > oa) {\n u = T(u + T(e / T(k << 1 >>> 0)));z = T(e / T(k >>> 0));z = q ? z : T(0.0);break g;\n } else {\n u = T(u + T(e * T(.5)));z = T(0.0);break g;\n }case 6:\n {\n z = T(e / T(L >>> 0));z = qa > oa & q ? z : T(0.0);break;\n }default:\n z = T(0.0);} while (0);if (k | 0) {\n B = 1040 + (Ka << 2) | 0;C = 976 + (Ka << 2) | 0;t = 0;r = 0;while (1) {\n h: do if (r >>> 0 < Ia >>> 0) {\n v = T(0.0);w = T(0.0);e = T(0.0);s = r;while (1) {\n q = c[(c[Ha >> 2] | 0) + (s << 2) >> 2] | 0;do if ((c[q + 36 >> 2] | 0) != 1 ? (c[q + 24 >> 2] | 0) == 0 : 0) {\n if ((c[q + 940 >> 2] | 0) != (t | 0)) break h;if (Re(q, Ka) | 0) {\n Ma = T(g[q + 908 + (c[C >> 2] << 2) >> 2]);e = T(cC(e, T(Ma + T(Ud(q, Ka, Ea)))));\n }if ((Je(b, q) | 0) != 5) break;na = T(Se(q));na = T(na + T(me(q, 0, Ea)));Ma = T(g[q + 912 >> 2]);Ma = T(T(Ma + T(Ud(q, 0, Ea))) - na);na = T(cC(w, na));Ma = T(cC(v, Ma));v = Ma;w = na;e = T(cC(e, T(na + Ma)));\n } while (0);q = s + 1 | 0;if (q >>> 0 < Ia >>> 0) s = q;else {\n s = q;break;\n }\n }\n } else {\n w = T(0.0);e = T(0.0);s = r;\n } while (0);y = T(z + e);f = u;u = T(u + y);if (r >>> 0 < s >>> 0) {\n x = T(f + w);q = r;do {\n r = c[(c[Ha >> 2] | 0) + (q << 2) >> 2] | 0;i: do if ((c[r + 36 >> 2] | 0) != 1 ? (c[r + 24 >> 2] | 0) == 0 : 0) switch (Je(b, r) | 0) {case 1:\n {\n Ma = T(f + T(me(r, Ka, Ea)));g[r + 400 + (c[B >> 2] << 2) >> 2] = Ma;break i;\n }case 3:\n {\n Ma = T(T(u - T(ne(r, Ka, Ea))) - T(g[r + 908 + (c[C >> 2] << 2) >> 2]));g[r + 400 + (c[B >> 2] << 2) >> 2] = Ma;break i;\n }case 2:\n {\n Ma = T(f + T(T(y - T(g[r + 908 + (c[C >> 2] << 2) >> 2])) * T(.5)));g[r + 400 + (c[B >> 2] << 2) >> 2] = Ma;break i;\n }case 4:\n {\n Ma = T(f + T(me(r, Ka, Ea)));g[r + 400 + (c[B >> 2] << 2) >> 2] = Ma;if (ae(r, Ka, qa) | 0) break i;if (Fa) {\n v = T(g[r + 908 >> 2]);e = T(v + T(Ud(r, Ja, Ea)));w = y;\n } else {\n w = T(g[r + 912 >> 2]);w = T(w + T(Ud(r, Ka, Ea)));e = y;v = T(g[r + 908 >> 2]);\n }if (Ld(e, v) | 0 ? Ld(w, T(g[r + 912 >> 2])) | 0 : 0) break i;Td(r, e, w, Ga, 1, 1, Ea, sa, 1, 3501, p) | 0;break i;\n }case 5:\n {\n g[r + 404 >> 2] = T(T(x - T(Se(r))) + T(Oe(r, 0, qa)));break i;\n }default:\n break i;} while (0);q = q + 1 | 0;\n } while ((q | 0) != (s | 0));\n }t = t + 1 | 0;if ((t | 0) == (k | 0)) break;else r = s;\n }\n }\n }\n } while (0);g[b + 908 >> 2] = T(Ie(b, 2, ta, m, m));g[b + 912 >> 2] = T(Ie(b, 0, ra, n, m));if ((pa | 0) != 0 ? (wa = c[b + 32 >> 2] | 0, xa = (pa | 0) == 2, !(xa & (wa | 0) != 2)) : 0) {\n if (xa & (wa | 0) == 2) {\n e = T(va + H);e = T(cC(T(eC(e, T(Te(b, Ja, da, ua)))), va));X = 198;\n }\n } else {\n e = T(Ie(b, Ja, da, ua, m));X = 198;\n }if ((X | 0) == 198) g[b + 908 + (c[976 + (Ja << 2) >> 2] << 2) >> 2] = e;if ((Aa | 0) != 0 ? (Ca = c[b + 32 >> 2] | 0, Da = (Aa | 0) == 2, !(Da & (Ca | 0) != 2)) : 0) {\n if (Da & (Ca | 0) == 2) {\n e = T(za + qa);e = T(cC(T(eC(e, T(Te(b, Ka, T(za + oa), ya)))), za));X = 204;\n }\n } else {\n e = T(Ie(b, Ka, T(za + oa), ya, m));X = 204;\n }if ((X | 0) == 204) g[b + 908 + (c[976 + (Ka << 2) >> 2] << 2) >> 2] = e;if (o) {\n if ((c[Ba >> 2] | 0) == 2) {\n r = 976 + (Ka << 2) | 0;s = 1040 + (Ka << 2) | 0;q = 0;do {\n t = ac(b, q) | 0;if (!(c[t + 24 >> 2] | 0)) {\n Na = c[r >> 2] | 0;Ma = T(g[b + 908 + (Na << 2) >> 2]);Oa = t + 400 + (c[s >> 2] << 2) | 0;Ma = T(Ma - T(g[Oa >> 2]));g[Oa >> 2] = T(Ma - T(g[t + 908 + (Na << 2) >> 2]));\n }q = q + 1 | 0;\n } while ((q | 0) != (Ia | 0));\n }if (h | 0) {\n q = Fa ? pa : i;do {\n Ue(b, h, Ea, q, sa, Ga, p);h = c[h + 960 >> 2] | 0;\n } while ((h | 0) != 0);\n }q = (Ja | 2 | 0) == 3;r = (Ka | 2 | 0) == 3;if (q | r) {\n h = 0;do {\n s = c[(c[Ha >> 2] | 0) + (h << 2) >> 2] | 0;if ((c[s + 36 >> 2] | 0) != 1) {\n if (q) Ve(b, s, Ja);if (r) Ve(b, s, Ka);\n }h = h + 1 | 0;\n } while ((h | 0) != (Ia | 0));\n }\n }\n } else we(b, e, f, i, k, m, n); while (0);l = La;return;\n }function Zd(a, b) {\n a = a | 0;b = T(b);var c = 0;Vb(a, b >= T(0.0), 3147);c = b == T(0.0);g[a + 4 >> 2] = c ? T(0.0) : b;return;\n }function _d(b, d, e, f) {\n b = b | 0;d = T(d);e = T(e);f = f | 0;var h = ib,\n i = ib,\n j = 0,\n k = 0,\n l = 0;c[2278] = (c[2278] | 0) + 1;$d(b);if (!(ae(b, 2, d) | 0)) {\n h = T(be(b + 380 | 0, d));if (!(h >= T(0.0))) {\n l = ((Sb(d) | 0) ^ 1) & 1;h = d;\n } else l = 2;\n } else {\n h = T(be(c[b + 992 >> 2] | 0, d));l = 1;h = T(h + T(Ud(b, 2, d)));\n }if (!(ae(b, 0, e) | 0)) {\n i = T(be(b + 388 | 0, e));if (!(i >= T(0.0))) {\n k = ((Sb(e) | 0) ^ 1) & 1;i = e;\n } else k = 2;\n } else {\n i = T(be(c[b + 996 >> 2] | 0, e));k = 1;i = T(i + T(Ud(b, 0, d)));\n }j = b + 976 | 0;if (Td(b, h, i, f, l, k, d, e, 1, 3189, c[j >> 2] | 0) | 0 ? (ce(b, c[b + 496 >> 2] | 0, d, e, d), de(b, T(g[(c[j >> 2] | 0) + 4 >> 2]), T(0.0), T(0.0)), a[11696] | 0) : 0) Md(b, 7);return;\n }function $d(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;h = i + 24 | 0;g = i + 16 | 0;e = i + 8 | 0;f = i;d = 0;do {\n b = a + 380 + (d << 3) | 0;if (!((c[a + 380 + (d << 3) + 4 >> 2] | 0) != 0 ? (j = b, k = c[j + 4 >> 2] | 0, m = e, c[m >> 2] = c[j >> 2], c[m + 4 >> 2] = k, m = a + 364 + (d << 3) | 0, k = c[m + 4 >> 2] | 0, j = f, c[j >> 2] = c[m >> 2], c[j + 4 >> 2] = k, c[g >> 2] = c[e >> 2], c[g + 4 >> 2] = c[e + 4 >> 2], c[h >> 2] = c[f >> 2], c[h + 4 >> 2] = c[f + 4 >> 2], Kd(g, h) | 0) : 0)) b = a + 348 + (d << 3) | 0;c[a + 992 + (d << 2) >> 2] = b;d = d + 1 | 0;\n } while ((d | 0) != 2);l = i;return;\n }function ae(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0;a = c[a + 992 + (c[976 + (b << 2) >> 2] << 2) >> 2] | 0;switch (c[a + 4 >> 2] | 0) {case 0:case 3:\n {\n a = 0;break;\n }case 1:\n {\n if (T(g[a >> 2]) < T(0.0)) a = 0;else e = 5;break;\n }case 2:\n {\n if (T(g[a >> 2]) < T(0.0)) a = 0;else a = (Sb(d) | 0) ^ 1;break;\n }default:\n e = 5;}if ((e | 0) == 5) a = 1;return a | 0;\n }function be(a, b) {\n a = a | 0;b = T(b);switch (c[a + 4 >> 2] | 0) {case 2:\n {\n b = T(T(T(g[a >> 2]) * b) / T(100.0));break;\n }case 1:\n {\n b = T(g[a >> 2]);break;\n }default:\n b = T(t);}return T(b);\n }function ce(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = T(d);e = T(e);f = T(f);var h = 0,\n i = ib;b = c[a + 944 >> 2] | 0 ? b : 1;h = re(c[a + 4 >> 2] | 0, b) | 0;b = ze(h, b) | 0;d = T($e(a, h, d));e = T($e(a, b, e));i = T(d + T(me(a, h, f)));g[a + 400 + (c[1040 + (h << 2) >> 2] << 2) >> 2] = i;d = T(d + T(ne(a, h, f)));g[a + 400 + (c[1e3 + (h << 2) >> 2] << 2) >> 2] = d;d = T(e + T(me(a, b, f)));g[a + 400 + (c[1040 + (b << 2) >> 2] << 2) >> 2] = d;f = T(e + T(ne(a, b, f)));g[a + 400 + (c[1e3 + (b << 2) >> 2] << 2) >> 2] = f;return;\n }function de(a, b, d, e) {\n a = a | 0;b = T(b);d = T(d);e = T(e);var f = 0,\n h = 0,\n i = ib,\n j = ib,\n k = 0,\n l = 0,\n m = ib,\n n = 0,\n o = ib,\n p = ib,\n q = ib,\n r = ib;if (!(b == T(0.0))) {\n f = a + 400 | 0;r = T(g[f >> 2]);h = a + 404 | 0;q = T(g[h >> 2]);n = a + 416 | 0;p = T(g[n >> 2]);l = a + 420 | 0;i = T(g[l >> 2]);o = T(r + d);m = T(q + e);e = T(o + p);j = T(m + i);k = (c[a + 988 >> 2] | 0) == 1;g[f >> 2] = T(Od(r, b, 0, k));g[h >> 2] = T(Od(q, b, 0, k));d = T(gC(T(p * b), T(1.0)));if (Ld(d, T(0.0)) | 0) h = 0;else h = (Ld(d, T(1.0)) | 0) ^ 1;d = T(gC(T(i * b), T(1.0)));if (Ld(d, T(0.0)) | 0) f = 0;else f = (Ld(d, T(1.0)) | 0) ^ 1;r = T(Od(e, b, k & h, k & (h ^ 1)));g[n >> 2] = T(r - T(Od(o, b, 0, k)));r = T(Od(j, b, k & f, k & (f ^ 1)));g[l >> 2] = T(r - T(Od(m, b, 0, k)));h = (c[a + 952 >> 2] | 0) - (c[a + 948 >> 2] | 0) >> 2;if (h | 0) {\n f = 0;do {\n de(ac(a, f) | 0, b, o, m);f = f + 1 | 0;\n } while ((f | 0) != (h | 0));\n }\n }return;\n }function ee(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;switch (d | 0) {case 5:case 0:\n {\n a = CB(c[489] | 0, e, f) | 0;break;\n }default:\n a = iC(e, f) | 0;}return a | 0;\n }function fe(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;f = l;l = l + 16 | 0;g = f;c[g >> 2] = e;ge(a, 0, b, d, g);l = f;return;\n }function ge(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;a = a | 0 ? a : 956;Bb[c[a + 8 >> 2] & 1](a, b, d, e, f) | 0;if ((d | 0) == 5) Ta();else return;\n }function he(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;a[b + c >> 0] = d & 1;return;\n }function ie(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;c[a >> 2] = 0;c[a + 4 >> 2] = 0;c[a + 8 >> 2] = 0;d = b + 4 | 0;e = (c[d >> 2] | 0) - (c[b >> 2] | 0) >> 2;if (e | 0) {\n je(a, e);ke(a, c[b >> 2] | 0, c[d >> 2] | 0, e);\n }return;\n }function je(a, b) {\n a = a | 0;b = b | 0;var d = 0;if ((le(a) | 0) >>> 0 < b >>> 0) jC(a);if (b >>> 0 > 1073741823) Ta();else {\n d = qC(b << 2) | 0;c[a + 4 >> 2] = d;c[a >> 2] = d;c[a + 8 >> 2] = d + (b << 2);return;\n }\n }function ke(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;e = a + 4 | 0;a = d - b | 0;if ((a | 0) > 0) {\n BC(c[e >> 2] | 0, b | 0, a | 0) | 0;c[e >> 2] = (c[e >> 2] | 0) + (a >>> 2 << 2);\n }return;\n }function le(a) {\n a = a | 0;return 1073741823;\n }function me(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);if (oe(b) | 0 ? (c[a + 96 >> 2] | 0) != 0 : 0) a = a + 92 | 0;else a = Tb(a + 60 | 0, c[1040 + (b << 2) >> 2] | 0, 992) | 0;return T(pe(a, d));\n }function ne(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);if (oe(b) | 0 ? (c[a + 104 >> 2] | 0) != 0 : 0) a = a + 100 | 0;else a = Tb(a + 60 | 0, c[1e3 + (b << 2) >> 2] | 0, 992) | 0;return T(pe(a, d));\n }function oe(a) {\n a = a | 0;return (a | 1 | 0) == 3 | 0;\n }function pe(a, b) {\n a = a | 0;b = T(b);if ((c[a + 4 >> 2] | 0) == 3) b = T(0.0);else b = T(be(a, b));return T(b);\n }function qe(a, b) {\n a = a | 0;b = b | 0;a = c[a >> 2] | 0;return ((a | 0) == 0 ? (b | 0) > 1 ? b : 1 : a) | 0;\n }function re(a, b) {\n a = a | 0;b = b | 0;var c = 0;a: do if ((b | 0) == 2) {\n switch (a | 0) {case 2:\n {\n a = 3;break a;\n }case 3:\n break;default:\n {\n c = 4;break a;\n }}a = 2;\n } else c = 4; while (0);return a | 0;\n }function se(a, b) {\n a = a | 0;b = b | 0;var d = ib;if (!((oe(b) | 0 ? (c[a + 312 >> 2] | 0) != 0 : 0) ? (d = T(g[a + 308 >> 2]), d >= T(0.0)) : 0)) d = T(cC(T(g[(Tb(a + 276 | 0, c[1040 + (b << 2) >> 2] | 0, 992) | 0) >> 2]), T(0.0)));return T(d);\n }function te(a, b) {\n a = a | 0;b = b | 0;var d = ib;if (!((oe(b) | 0 ? (c[a + 320 >> 2] | 0) != 0 : 0) ? (d = T(g[a + 316 >> 2]), d >= T(0.0)) : 0)) d = T(cC(T(g[(Tb(a + 276 | 0, c[1e3 + (b << 2) >> 2] | 0, 992) | 0) >> 2]), T(0.0)));return T(d);\n }function ue(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = ib;if (!((oe(b) | 0 ? (c[a + 240 >> 2] | 0) != 0 : 0) ? (e = T(be(a + 236 | 0, d)), e >= T(0.0)) : 0)) e = T(cC(T(be(Tb(a + 204 | 0, c[1040 + (b << 2) >> 2] | 0, 992) | 0, d)), T(0.0)));return T(e);\n }function ve(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = ib;if (!((oe(b) | 0 ? (c[a + 248 >> 2] | 0) != 0 : 0) ? (e = T(be(a + 244 | 0, d)), e >= T(0.0)) : 0)) e = T(cC(T(be(Tb(a + 204 | 0, c[1e3 + (b << 2) >> 2] | 0, 992) | 0, d)), T(0.0)));return T(e);\n }function we(a, b, d, e, f, h, i) {\n a = a | 0;b = T(b);d = T(d);e = e | 0;f = f | 0;h = T(h);i = T(i);var j = ib,\n k = ib,\n m = ib,\n n = ib,\n o = ib,\n p = ib,\n q = 0,\n r = 0,\n s = 0;s = l;l = l + 16 | 0;q = s;r = a + 964 | 0;ec(a, (c[r >> 2] | 0) != 0, 3519);j = T(Ce(a, 2, b));k = T(Ce(a, 0, b));m = T(Ud(a, 2, b));n = T(Ud(a, 0, b));if (Sb(b) | 0) o = b;else o = T(cC(T(0.0), T(T(b - m) - j)));if (Sb(d) | 0) p = d;else p = T(cC(T(0.0), T(T(d - n) - k)));if ((e | 0) == 1 & (f | 0) == 1) {\n g[a + 908 >> 2] = T(Ie(a, 2, T(b - m), h, h));b = T(Ie(a, 0, T(d - n), i, h));\n } else {\n Db[c[r >> 2] & 1](q, a, o, e, p, f);o = T(j + T(g[q >> 2]));p = T(b - m);g[a + 908 >> 2] = T(Ie(a, 2, (e | 2 | 0) == 2 ? o : p, h, h));p = T(k + T(g[q + 4 >> 2]));b = T(d - n);b = T(Ie(a, 0, (f | 2 | 0) == 2 ? p : b, i, h));\n }g[a + 912 >> 2] = b;l = s;return;\n }function xe(a, b, c, d, e, f, h) {\n a = a | 0;b = T(b);c = T(c);d = d | 0;e = e | 0;f = T(f);h = T(h);var i = ib,\n j = ib,\n k = ib,\n l = ib;k = T(Ce(a, 2, f));i = T(Ce(a, 0, f));l = T(Ud(a, 2, f));j = T(Ud(a, 0, f));b = T(b - l);g[a + 908 >> 2] = T(Ie(a, 2, (d | 2 | 0) == 2 ? k : b, f, f));c = T(c - j);g[a + 912 >> 2] = T(Ie(a, 0, (e | 2 | 0) == 2 ? i : c, h, f));return;\n }function ye(a, b, c, d, e, f, h) {\n a = a | 0;b = T(b);c = T(c);d = d | 0;e = e | 0;f = T(f);h = T(h);var i = 0,\n j = ib,\n k = ib;i = (d | 0) == 2;if ((!(b <= T(0.0) & i) ? !(c <= T(0.0) & (e | 0) == 2) : 0) ? !((d | 0) == 1 & (e | 0) == 1) : 0) a = 0;else {\n j = T(Ud(a, 0, f));k = T(Ud(a, 2, f));i = b < T(0.0) & i | (Sb(b) | 0);b = T(b - k);g[a + 908 >> 2] = T(Ie(a, 2, i ? T(0.0) : b, f, f));b = T(c - j);i = c < T(0.0) & (e | 0) == 2 | (Sb(c) | 0);g[a + 912 >> 2] = T(Ie(a, 0, i ? T(0.0) : b, h, f));a = 1;\n }return a | 0;\n }function ze(a, b) {\n a = a | 0;b = b | 0;if (We(a) | 0) a = re(2, b) | 0;else a = 0;return a | 0;\n }function Ae(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);c = T(ue(a, b, c));return T(c + T(se(a, b)));\n }function Be(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);c = T(ve(a, b, c));return T(c + T(te(a, b)));\n }function Ce(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);var d = ib;d = T(Ae(a, b, c));return T(d + T(Be(a, b, c)));\n }function De(a) {\n a = a | 0;if (!(c[a + 24 >> 2] | 0)) {\n if (T(Ee(a)) != T(0.0)) a = 1;else a = T(Fe(a)) != T(0.0);\n } else a = 0;return a | 0;\n }function Ee(a) {\n a = a | 0;var b = ib;if (c[a + 944 >> 2] | 0) {\n b = T(g[a + 44 >> 2]);if (Sb(b) | 0) {\n b = T(g[a + 40 >> 2]);a = b > T(0.0) & ((Sb(b) | 0) ^ 1);return T(a ? b : T(0.0));\n }\n } else b = T(0.0);return T(b);\n }function Fe(b) {\n b = b | 0;var d = ib,\n e = 0,\n f = ib;do if (c[b + 944 >> 2] | 0) {\n d = T(g[b + 48 >> 2]);if (Sb(d) | 0) {\n e = a[(c[b + 976 >> 2] | 0) + 2 >> 0] | 0;if (e << 24 >> 24 == 0 ? (f = T(g[b + 40 >> 2]), f < T(0.0) & ((Sb(f) | 0) ^ 1)) : 0) {\n d = T(-f);break;\n }d = e << 24 >> 24 ? T(1.0) : T(0.0);\n }\n } else d = T(0.0); while (0);return T(d);\n }function Ge(b) {\n b = b | 0;var d = 0,\n e = 0;yC(b + 400 | 0, 0, 540) | 0;a[b + 985 >> 0] = 1;lc(b);e = $b(b) | 0;if (e | 0) {\n d = b + 948 | 0;b = 0;do {\n Ge(c[(c[d >> 2] | 0) + (b << 2) >> 2] | 0);b = b + 1 | 0;\n } while ((b | 0) != (e | 0));\n }return;\n }function He(a, b, d, e, f, h, i, j, k, m) {\n a = a | 0;b = b | 0;d = T(d);e = e | 0;f = T(f);h = T(h);i = T(i);j = j | 0;k = k | 0;m = m | 0;var n = 0,\n o = ib,\n p = 0,\n q = 0,\n r = ib,\n s = ib,\n u = 0,\n v = ib,\n w = 0,\n x = ib,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0;G = l;l = l + 16 | 0;A = G + 12 | 0;B = G + 8 | 0;C = G + 4 | 0;D = G;F = re(c[a + 4 >> 2] | 0, k) | 0;y = oe(F) | 0;o = T(be(Xe(b) | 0, y ? h : i));z = ae(b, 2, h) | 0;E = ae(b, 0, i) | 0;do if (!(Sb(o) | 0) ? !(Sb(y ? d : f) | 0) : 0) {\n n = b + 504 | 0;if (!(Sb(T(g[n >> 2])) | 0)) {\n if (!(Ye(c[b + 976 >> 2] | 0, 0) | 0)) break;if ((c[b + 500 >> 2] | 0) == (c[2278] | 0)) break;\n }g[n >> 2] = T(cC(o, T(Ce(b, F, h))));\n } else p = 7; while (0);do if ((p | 0) == 7) {\n w = y ^ 1;if (!(w | z ^ 1)) {\n i = T(be(c[b + 992 >> 2] | 0, h));g[b + 504 >> 2] = T(cC(i, T(Ce(b, 2, h))));break;\n }if (!(y | E ^ 1)) {\n i = T(be(c[b + 996 >> 2] | 0, i));g[b + 504 >> 2] = T(cC(i, T(Ce(b, 0, h))));break;\n }g[A >> 2] = T(t);g[B >> 2] = T(t);c[C >> 2] = 0;c[D >> 2] = 0;v = T(Ud(b, 2, h));x = T(Ud(b, 0, h));if (z) {\n r = T(v + T(be(c[b + 992 >> 2] | 0, h)));g[A >> 2] = r;c[C >> 2] = 1;q = 1;\n } else {\n q = 0;r = T(t);\n }if (E) {\n o = T(x + T(be(c[b + 996 >> 2] | 0, i)));g[B >> 2] = o;c[D >> 2] = 1;n = 1;\n } else {\n n = 0;o = T(t);\n }p = c[a + 32 >> 2] | 0;if (!(y & (p | 0) == 2)) {\n if (Sb(r) | 0 ? !(Sb(d) | 0) : 0) {\n g[A >> 2] = d;c[C >> 2] = 2;q = 2;r = d;\n }\n } else p = 2;if ((!((p | 0) == 2 & w) ? Sb(o) | 0 : 0) ? !(Sb(f) | 0) : 0) {\n g[B >> 2] = f;c[D >> 2] = 2;n = 2;o = f;\n }s = T(g[b + 396 >> 2]);u = Sb(s) | 0;do if (!u) {\n if ((q | 0) == 1 & w) {\n g[B >> 2] = T(T(r - v) / s);c[D >> 2] = 1;n = 1;p = 1;break;\n }if (y & (n | 0) == 1) {\n g[A >> 2] = T(s * T(o - x));c[C >> 2] = 1;n = 1;p = 1;\n } else p = q;\n } else p = q; while (0);H = Sb(d) | 0;q = (Je(a, b) | 0) != 4;if (!(y | z | ((e | 0) != 1 | H) | (q | (p | 0) == 1)) ? (g[A >> 2] = d, c[C >> 2] = 1, !u) : 0) {\n g[B >> 2] = T(T(d - v) / s);c[D >> 2] = 1;n = 1;\n }if (!(E | w | ((j | 0) != 1 | (Sb(f) | 0)) | (q | (n | 0) == 1)) ? (g[B >> 2] = f, c[D >> 2] = 1, !u) : 0) {\n g[A >> 2] = T(s * T(f - x));c[C >> 2] = 1;\n }Me(b, 2, h, h, C, A);Me(b, 0, i, h, D, B);d = T(g[A >> 2]);f = T(g[B >> 2]);Td(b, d, f, k, c[C >> 2] | 0, c[D >> 2] | 0, h, i, 0, 3565, m) | 0;i = T(g[b + 908 + (c[976 + (F << 2) >> 2] << 2) >> 2]);g[b + 504 >> 2] = T(cC(i, T(Ce(b, F, h))));\n } while (0);c[b + 500 >> 2] = c[2278];l = G;return;\n }function Ie(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = T(c);d = T(d);e = T(e);d = T(Te(a, b, c, d));return T(cC(d, T(Ce(a, b, e))));\n }function Je(a, b) {\n a = a | 0;b = b | 0;b = b + 20 | 0;b = c[((c[b >> 2] | 0) == 0 ? a + 16 | 0 : b) >> 2] | 0;if ((b | 0) == 5 ? We(c[a + 4 >> 2] | 0) | 0 : 0) b = 1;return b | 0;\n }function Ke(a, b) {\n a = a | 0;b = b | 0;if (oe(b) | 0 ? (c[a + 96 >> 2] | 0) != 0 : 0) b = 4;else b = c[1040 + (b << 2) >> 2] | 0;return a + 60 + (b << 3) | 0;\n }function Le(a, b) {\n a = a | 0;b = b | 0;if (oe(b) | 0 ? (c[a + 104 >> 2] | 0) != 0 : 0) b = 5;else b = c[1e3 + (b << 2) >> 2] | 0;return a + 60 + (b << 3) | 0;\n }function Me(a, b, d, e, f, h) {\n a = a | 0;b = b | 0;d = T(d);e = T(e);f = f | 0;h = h | 0;d = T(be(a + 380 + (c[976 + (b << 2) >> 2] << 3) | 0, d));d = T(d + T(Ud(a, b, e)));switch (c[f >> 2] | 0) {case 2:case 1:\n {\n f = Sb(d) | 0;e = T(g[h >> 2]);g[h >> 2] = f | e < d ? e : d;break;\n }case 0:\n {\n if (!(Sb(d) | 0)) {\n c[f >> 2] = 2;g[h >> 2] = d;\n }break;\n }default:\n {}}return;\n }function Ne(a, b) {\n a = a | 0;b = b | 0;a = a + 132 | 0;if (oe(b) | 0 ? (c[(Tb(a, 4, 948) | 0) + 4 >> 2] | 0) != 0 : 0) a = 1;else a = (c[(Tb(a, c[1040 + (b << 2) >> 2] | 0, 948) | 0) + 4 >> 2] | 0) != 0;return a | 0;\n }function Oe(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0;a = a + 132 | 0;if (oe(b) | 0 ? (e = Tb(a, 4, 948) | 0, (c[e + 4 >> 2] | 0) != 0) : 0) f = 4;else {\n e = Tb(a, c[1040 + (b << 2) >> 2] | 0, 948) | 0;if (!(c[e + 4 >> 2] | 0)) d = T(0.0);else f = 4;\n }if ((f | 0) == 4) d = T(be(e, d));return T(d);\n }function Pe(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = ib;e = T(g[a + 908 + (c[976 + (b << 2) >> 2] << 2) >> 2]);e = T(e + T(me(a, b, d)));return T(e + T(ne(a, b, d)));\n }function Qe(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;a: do if (!(We(c[a + 4 >> 2] | 0) | 0)) {\n if ((c[a + 16 >> 2] | 0) != 5) {\n d = $b(a) | 0;if (!d) b = 0;else {\n b = 0;while (1) {\n e = ac(a, b) | 0;if ((c[e + 24 >> 2] | 0) == 0 ? (c[e + 20 >> 2] | 0) == 5 : 0) {\n b = 1;break a;\n }b = b + 1 | 0;if (b >>> 0 >= d >>> 0) {\n b = 0;break;\n }\n }\n }\n } else b = 1;\n } else b = 0; while (0);return b | 0;\n }function Re(a, b) {\n a = a | 0;b = b | 0;var d = ib;d = T(g[a + 908 + (c[976 + (b << 2) >> 2] << 2) >> 2]);return d >= T(0.0) & ((Sb(d) | 0) ^ 1) | 0;\n }function Se(a) {\n a = a | 0;var b = ib,\n d = 0,\n e = 0,\n f = 0,\n h = 0,\n i = 0,\n j = 0,\n k = ib;d = c[a + 968 >> 2] | 0;if (!d) {\n h = $b(a) | 0;do if (h | 0) {\n d = 0;f = 0;while (1) {\n e = ac(a, f) | 0;if (c[e + 940 >> 2] | 0) {\n i = 8;break;\n }if ((c[e + 24 >> 2] | 0) != 1) {\n j = (Je(a, e) | 0) == 5;if (j) {\n d = e;break;\n } else d = (d | 0) == 0 ? e : d;\n }f = f + 1 | 0;if (f >>> 0 >= h >>> 0) {\n i = 8;break;\n }\n }if ((i | 0) == 8) if (!d) break;b = T(Se(d));return T(b + T(g[d + 404 >> 2]));\n } while (0);b = T(g[a + 912 >> 2]);\n } else {\n k = T(g[a + 908 >> 2]);b = T(g[a + 912 >> 2]);b = T(mb[d & 0](a, k, b));ec(a, (Sb(b) | 0) ^ 1, 3573);\n }return T(b);\n }function Te(a, b, c, d) {\n a = a | 0;b = b | 0;c = T(c);d = T(d);var e = ib,\n f = 0;if (!(We(b) | 0)) {\n if (oe(b) | 0) {\n b = 0;f = 3;\n } else {\n d = T(t);e = T(t);\n }\n } else {\n b = 1;f = 3;\n }if ((f | 0) == 3) {\n e = T(be(a + 364 + (b << 3) | 0, d));d = T(be(a + 380 + (b << 3) | 0, d));\n }f = d < c & (d >= T(0.0) & ((Sb(d) | 0) ^ 1));c = f ? d : c;f = e >= T(0.0) & ((Sb(e) | 0) ^ 1) & c < e;return T(f ? e : c);\n }function Ue(a, b, d, e, f, h, i) {\n a = a | 0;b = b | 0;d = T(d);e = e | 0;f = T(f);h = h | 0;i = i | 0;var j = ib,\n k = ib,\n l = 0,\n m = 0,\n n = ib,\n o = ib,\n p = ib,\n q = 0,\n r = 0,\n s = 0,\n u = 0,\n v = ib,\n w = 0;s = re(c[a + 4 >> 2] | 0, h) | 0;q = ze(s, h) | 0;r = oe(s) | 0;n = T(Ud(b, 2, d));o = T(Ud(b, 0, d));if (!(ae(b, 2, d) | 0)) {\n if (Ne(b, 2) | 0 ? Ze(b, 2) | 0 : 0) {\n j = T(g[a + 908 >> 2]);k = T(se(a, 2));k = T(j - T(k + T(te(a, 2))));j = T(Oe(b, 2, d));j = T(Ie(b, 2, T(k - T(j + T(_e(b, 2, d)))), d, d));\n } else j = T(t);\n } else j = T(n + T(be(c[b + 992 >> 2] | 0, d)));if (!(ae(b, 0, f) | 0)) {\n if (Ne(b, 0) | 0 ? Ze(b, 0) | 0 : 0) {\n k = T(g[a + 912 >> 2]);v = T(se(a, 0));v = T(k - T(v + T(te(a, 0))));k = T(Oe(b, 0, f));k = T(Ie(b, 0, T(v - T(k + T(_e(b, 0, f)))), f, d));\n } else k = T(t);\n } else k = T(o + T(be(c[b + 996 >> 2] | 0, f)));l = Sb(j) | 0;m = Sb(k) | 0;do if (l ^ m ? (p = T(g[b + 396 >> 2]), !(Sb(p) | 0)) : 0) if (l) {\n j = T(n + T(T(k - o) * p));break;\n } else {\n v = T(o + T(T(j - n) / p));k = m ? v : k;break;\n } while (0);m = Sb(j) | 0;l = Sb(k) | 0;if (m | l) {\n w = (m ^ 1) & 1;e = d > T(0.0) & ((e | 0) != 0 & m);j = r ? j : e ? d : j;Td(b, j, k, h, r ? w : e ? 2 : w, m & (l ^ 1) & 1, j, k, 0, 3623, i) | 0;j = T(g[b + 908 >> 2]);j = T(j + T(Ud(b, 2, d)));k = T(g[b + 912 >> 2]);k = T(k + T(Ud(b, 0, d)));\n }Td(b, j, k, h, 1, 1, j, k, 1, 3635, i) | 0;if (Ze(b, s) | 0 ? !(Ne(b, s) | 0) : 0) {\n w = c[976 + (s << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(v - T(g[b + 908 + (w << 2) >> 2]));v = T(v - T(te(a, s)));v = T(v - T(ne(b, s, d)));v = T(v - T(_e(b, s, r ? d : f)));g[b + 400 + (c[1040 + (s << 2) >> 2] << 2) >> 2] = v;\n } else u = 21;do if ((u | 0) == 21) {\n if (!(Ne(b, s) | 0) ? (c[a + 8 >> 2] | 0) == 1 : 0) {\n w = c[976 + (s << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(T(v - T(g[b + 908 + (w << 2) >> 2])) * T(.5));g[b + 400 + (c[1040 + (s << 2) >> 2] << 2) >> 2] = v;break;\n }if (!(Ne(b, s) | 0) ? (c[a + 8 >> 2] | 0) == 2 : 0) {\n w = c[976 + (s << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(v - T(g[b + 908 + (w << 2) >> 2]));g[b + 400 + (c[1040 + (s << 2) >> 2] << 2) >> 2] = v;\n }\n } while (0);if (Ze(b, q) | 0 ? !(Ne(b, q) | 0) : 0) {\n w = c[976 + (q << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(v - T(g[b + 908 + (w << 2) >> 2]));v = T(v - T(te(a, q)));v = T(v - T(ne(b, q, d)));v = T(v - T(_e(b, q, r ? f : d)));g[b + 400 + (c[1040 + (q << 2) >> 2] << 2) >> 2] = v;\n } else u = 30;do if ((u | 0) == 30 ? !(Ne(b, q) | 0) : 0) {\n if ((Je(a, b) | 0) == 2) {\n w = c[976 + (q << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(T(v - T(g[b + 908 + (w << 2) >> 2])) * T(.5));g[b + 400 + (c[1040 + (q << 2) >> 2] << 2) >> 2] = v;break;\n }w = (Je(a, b) | 0) == 3;if (w ^ (c[a + 28 >> 2] | 0) == 2) {\n w = c[976 + (q << 2) >> 2] | 0;v = T(g[a + 908 + (w << 2) >> 2]);v = T(v - T(g[b + 908 + (w << 2) >> 2]));g[b + 400 + (c[1040 + (q << 2) >> 2] << 2) >> 2] = v;\n }\n } while (0);return;\n }function Ve(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = ib,\n f = 0;f = c[976 + (d << 2) >> 2] | 0;e = T(g[b + 908 + (f << 2) >> 2]);e = T(T(g[a + 908 + (f << 2) >> 2]) - e);e = T(e - T(g[b + 400 + (c[1040 + (d << 2) >> 2] << 2) >> 2]));g[b + 400 + (c[1e3 + (d << 2) >> 2] << 2) >> 2] = e;return;\n }function We(a) {\n a = a | 0;return (a | 1 | 0) == 1 | 0;\n }function Xe(b) {\n b = b | 0;var d = ib;switch (c[b + 56 >> 2] | 0) {case 0:case 3:\n {\n d = T(g[b + 40 >> 2]);if (d > T(0.0) & ((Sb(d) | 0) ^ 1)) b = a[(c[b + 976 >> 2] | 0) + 2 >> 0] | 0 ? 1056 : 992;else b = 1056;break;\n }default:\n b = b + 52 | 0;}return b | 0;\n }function Ye(b, c) {\n b = b | 0;c = c | 0;return (a[b + c >> 0] | 0) != 0 | 0;\n }function Ze(a, b) {\n a = a | 0;b = b | 0;a = a + 132 | 0;if (oe(b) | 0 ? (c[(Tb(a, 5, 948) | 0) + 4 >> 2] | 0) != 0 : 0) a = 1;else a = (c[(Tb(a, c[1e3 + (b << 2) >> 2] | 0, 948) | 0) + 4 >> 2] | 0) != 0;return a | 0;\n }function _e(a, b, d) {\n a = a | 0;b = b | 0;d = T(d);var e = 0,\n f = 0;a = a + 132 | 0;if (oe(b) | 0 ? (e = Tb(a, 5, 948) | 0, (c[e + 4 >> 2] | 0) != 0) : 0) f = 4;else {\n e = Tb(a, c[1e3 + (b << 2) >> 2] | 0, 948) | 0;if (!(c[e + 4 >> 2] | 0)) d = T(0.0);else f = 4;\n }if ((f | 0) == 4) d = T(be(e, d));return T(d);\n }function $e(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);if (Ne(a, b) | 0) c = T(Oe(a, b, c));else c = T(-T(_e(a, b, c)));return T(c);\n }function af(a) {\n a = T(a);return (g[j >> 2] = a, c[j >> 2] | 0) | 0;\n }function bf(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 1073741823) Ta();else {\n f = qC(b << 2) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 2) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 2);return;\n }function cf(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 2) << 2) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function df(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -4 - b | 0) >>> 2) << 2);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function ef(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;h = a + 4 | 0;i = c[h >> 2] | 0;f = i - e | 0;g = f >> 2;a = b + (g << 2) | 0;if (a >>> 0 < d >>> 0) {\n e = i;do {\n c[e >> 2] = c[a >> 2];a = a + 4 | 0;e = (c[h >> 2] | 0) + 4 | 0;c[h >> 2] = e;\n } while (a >>> 0 < d >>> 0);\n }if (g | 0) GC(i + (0 - g << 2) | 0, b | 0, f | 0) | 0;return;\n }function ff(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = b + 4 | 0;j = c[i >> 2] | 0;f = c[a >> 2] | 0;h = d;g = h - f | 0;e = j + (0 - (g >> 2) << 2) | 0;c[i >> 2] = e;if ((g | 0) > 0) BC(e | 0, f | 0, g | 0) | 0;f = a + 4 | 0;g = b + 8 | 0;e = (c[f >> 2] | 0) - h | 0;if ((e | 0) > 0) {\n BC(c[g >> 2] | 0, d | 0, e | 0) | 0;c[g >> 2] = (c[g >> 2] | 0) + (e >>> 2 << 2);\n }h = c[a >> 2] | 0;c[a >> 2] = c[i >> 2];c[i >> 2] = h;h = c[f >> 2] | 0;c[f >> 2] = c[g >> 2];c[g >> 2] = h;h = a + 8 | 0;d = b + 12 | 0;a = c[h >> 2] | 0;c[h >> 2] = c[d >> 2];c[d >> 2] = a;c[b >> 2] = c[i >> 2];return j | 0;\n }function gf(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;h = c[b >> 2] | 0;g = c[d >> 2] | 0;if ((h | 0) != (g | 0)) {\n f = a + 8 | 0;d = ((g + -4 - h | 0) >>> 2) + 1 | 0;a = h;e = c[f >> 2] | 0;do {\n c[e >> 2] = c[a >> 2];e = (c[f >> 2] | 0) + 4 | 0;c[f >> 2] = e;a = a + 4 | 0;\n } while ((a | 0) != (g | 0));c[b >> 2] = h + (d << 2);\n }return;\n }function hf() {\n Qb();return;\n }function jf() {\n var a = 0;a = qC(4) | 0;kf(a);return a | 0;\n }function kf(a) {\n a = a | 0;c[a >> 2] = gc() | 0;return;\n }function lf(a) {\n a = a | 0;if (a | 0) {\n mf(a);sC(a);\n }return;\n }function mf(a) {\n a = a | 0;ic(c[a >> 2] | 0);return;\n }function nf(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;he(c[a >> 2] | 0, b, d);return;\n }function of(a, b) {\n a = a | 0;b = T(b);Zd(c[a >> 2] | 0, b);return;\n }function pf(a, b) {\n a = a | 0;b = b | 0;return Ye(c[a >> 2] | 0, b) | 0;\n }function qf() {\n var a = 0;a = qC(8) | 0;rf(a, 0);return a | 0;\n }function rf(a, b) {\n a = a | 0;b = b | 0;if (!b) b = Wb() | 0;else b = Ub(c[b >> 2] | 0) | 0;c[a >> 2] = b;c[a + 4 >> 2] = 0;vc(b, a);return;\n }function sf(a) {\n a = a | 0;var b = 0;b = qC(8) | 0;rf(b, a);return b | 0;\n }function tf(a) {\n a = a | 0;if (a | 0) {\n uf(a);sC(a);\n }return;\n }function uf(a) {\n a = a | 0;var b = 0;Zb(c[a >> 2] | 0);b = a + 4 | 0;a = c[b >> 2] | 0;c[b >> 2] = 0;if (a | 0) {\n vf(a);sC(a);\n }return;\n }function vf(a) {\n a = a | 0;wf(a);return;\n }function wf(a) {\n a = a | 0;a = c[a >> 2] | 0;if (a | 0) ab(a | 0);return;\n }function xf(a) {\n a = a | 0;return wc(a) | 0;\n }function yf(a) {\n a = a | 0;var b = 0,\n d = 0;d = a + 4 | 0;b = c[d >> 2] | 0;c[d >> 2] = 0;if (b | 0) {\n vf(b);sC(b);\n }dc(c[a >> 2] | 0);return;\n }function zf(a, b) {\n a = a | 0;b = b | 0;sc(c[a >> 2] | 0, c[b >> 2] | 0);return;\n }function Af(a, b) {\n a = a | 0;b = b | 0;Hc(c[a >> 2] | 0, b);return;\n }function Bf(a, b, d) {\n a = a | 0;b = b | 0;d = +d;Vc(c[a >> 2] | 0, b, T(d));return;\n }function Cf(a, b, d) {\n a = a | 0;b = b | 0;d = +d;Wc(c[a >> 2] | 0, b, T(d));return;\n }function Df(a, b) {\n a = a | 0;b = b | 0;Bc(c[a >> 2] | 0, b);return;\n }function Ef(a, b) {\n a = a | 0;b = b | 0;Dc(c[a >> 2] | 0, b);return;\n }function Ff(a, b) {\n a = a | 0;b = b | 0;Fc(c[a >> 2] | 0, b);return;\n }function Gf(a, b) {\n a = a | 0;b = b | 0;xc(c[a >> 2] | 0, b);return;\n }function Hf(a, b) {\n a = a | 0;b = b | 0;Jc(c[a >> 2] | 0, b);return;\n }function If(a, b) {\n a = a | 0;b = b | 0;zc(c[a >> 2] | 0, b);return;\n }function Jf(a, b, d) {\n a = a | 0;b = b | 0;d = +d;Yc(c[a >> 2] | 0, b, T(d));return;\n }function Kf(a, b, d) {\n a = a | 0;b = b | 0;d = +d;Zc(c[a >> 2] | 0, b, T(d));return;\n }function Lf(a, b) {\n a = a | 0;b = b | 0;$c(c[a >> 2] | 0, b);return;\n }function Mf(a, b) {\n a = a | 0;b = b | 0;Lc(c[a >> 2] | 0, b);return;\n }function Nf(a, b) {\n a = a | 0;b = b | 0;Nc(c[a >> 2] | 0, b);return;\n }function Of(a, b) {\n a = a | 0;b = +b;Pc(c[a >> 2] | 0, T(b));return;\n }function Pf(a, b) {\n a = a | 0;b = +b;Sc(c[a >> 2] | 0, T(b));return;\n }function Qf(a, b) {\n a = a | 0;b = +b;Tc(c[a >> 2] | 0, T(b));return;\n }function Rf(a, b) {\n a = a | 0;b = +b;Qc(c[a >> 2] | 0, T(b));return;\n }function Sf(a, b) {\n a = a | 0;b = +b;Rc(c[a >> 2] | 0, T(b));return;\n }function Tf(a, b) {\n a = a | 0;b = +b;fd(c[a >> 2] | 0, T(b));return;\n }function Uf(a, b) {\n a = a | 0;b = +b;gd(c[a >> 2] | 0, T(b));return;\n }function Vf(a) {\n a = a | 0;hd(c[a >> 2] | 0);return;\n }function Wf(a, b) {\n a = a | 0;b = +b;jd(c[a >> 2] | 0, T(b));return;\n }function Xf(a, b) {\n a = a | 0;b = +b;kd(c[a >> 2] | 0, T(b));return;\n }function Yf(a) {\n a = a | 0;ld(c[a >> 2] | 0);return;\n }function Zf(a, b) {\n a = a | 0;b = +b;nd(c[a >> 2] | 0, T(b));return;\n }function _f(a, b) {\n a = a | 0;b = +b;od(c[a >> 2] | 0, T(b));return;\n }function $f(a, b) {\n a = a | 0;b = +b;qd(c[a >> 2] | 0, T(b));return;\n }function ag(a, b) {\n a = a | 0;b = +b;rd(c[a >> 2] | 0, T(b));return;\n }function bg(a, b) {\n a = a | 0;b = +b;td(c[a >> 2] | 0, T(b));return;\n }function cg(a, b) {\n a = a | 0;b = +b;ud(c[a >> 2] | 0, T(b));return;\n }function dg(a, b) {\n a = a | 0;b = +b;wd(c[a >> 2] | 0, T(b));return;\n }function eg(a, b) {\n a = a | 0;b = +b;xd(c[a >> 2] | 0, T(b));return;\n }function fg(a, b) {\n a = a | 0;b = +b;zd(c[a >> 2] | 0, T(b));return;\n }function gg(a, b, d) {\n a = a | 0;b = b | 0;d = +d;dd(c[a >> 2] | 0, b, T(d));return;\n }function hg(a, b, d) {\n a = a | 0;b = b | 0;d = +d;ad(c[a >> 2] | 0, b, T(d));return;\n }function ig(a, b, d) {\n a = a | 0;b = b | 0;d = +d;bd(c[a >> 2] | 0, b, T(d));return;\n }function jg(a) {\n a = a | 0;return Ic(c[a >> 2] | 0) | 0;\n }function kg(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e;Xc(f, c[b >> 2] | 0, d);lg(a, f);l = e;return;\n }function lg(a, b) {\n a = a | 0;b = b | 0;mg(a, c[b + 4 >> 2] | 0, +T(g[b >> 2]));return;\n }function mg(a, b, d) {\n a = a | 0;b = b | 0;d = +d;c[a >> 2] = b;h[a + 8 >> 3] = d;return;\n }function ng(a) {\n a = a | 0;return Cc(c[a >> 2] | 0) | 0;\n }function og(a) {\n a = a | 0;return Ec(c[a >> 2] | 0) | 0;\n }function pg(a) {\n a = a | 0;return Gc(c[a >> 2] | 0) | 0;\n }function qg(a) {\n a = a | 0;return yc(c[a >> 2] | 0) | 0;\n }function rg(a) {\n a = a | 0;return Kc(c[a >> 2] | 0) | 0;\n }function sg(a) {\n a = a | 0;return Ac(c[a >> 2] | 0) | 0;\n }function tg(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e;_c(f, c[b >> 2] | 0, d);lg(a, f);l = e;return;\n }function ug(a) {\n a = a | 0;return Mc(c[a >> 2] | 0) | 0;\n }function vg(a) {\n a = a | 0;return Oc(c[a >> 2] | 0) | 0;\n }function wg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;Uc(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function xg(a) {\n a = a | 0;return + +T(tc(c[a >> 2] | 0));\n }function yg(a) {\n a = a | 0;return + +T(uc(c[a >> 2] | 0));\n }function zg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;id(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Ag(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;md(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Bg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;pd(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Cg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;sd(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Dg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;vd(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Eg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;yd(e, c[b >> 2] | 0);lg(a, e);l = d;return;\n }function Fg(a) {\n a = a | 0;return + +T(Ad(c[a >> 2] | 0));\n }function Gg(a, b) {\n a = a | 0;b = b | 0;return + +T(ed(c[a >> 2] | 0, b));\n }function Hg(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e;cd(f, c[b >> 2] | 0, d);lg(a, f);l = e;return;\n }function Ig(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;kc(c[a >> 2] | 0, c[b >> 2] | 0, d);return;\n }function Jg(a, b) {\n a = a | 0;b = b | 0;cc(c[a >> 2] | 0, c[b >> 2] | 0);return;\n }function Kg(a) {\n a = a | 0;return $b(c[a >> 2] | 0) | 0;\n }function Lg(a) {\n a = a | 0;a = pc(c[a >> 2] | 0) | 0;if (!a) a = 0;else a = xf(a) | 0;return a | 0;\n }function Mg(a, b) {\n a = a | 0;b = b | 0;a = ac(c[a >> 2] | 0, b) | 0;if (!a) a = 0;else a = xf(a) | 0;return a | 0;\n }function Ng(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;e = qC(4) | 0;Og(e, b);d = a + 4 | 0;b = c[d >> 2] | 0;c[d >> 2] = e;if (b | 0) {\n vf(b);sC(b);\n }jc(c[a >> 2] | 0, 1);return;\n }function Og(a, b) {\n a = a | 0;b = b | 0;gh(a, b);return;\n }function Pg(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = T(c);d = d | 0;e = T(e);f = f | 0;var i = 0,\n j = 0;i = l;l = l + 16 | 0;j = i;Qg(j, wc(b) | 0, +c, d, +e, f);g[a >> 2] = T(+h[j >> 3]);g[a + 4 >> 2] = T(+h[j + 8 >> 3]);l = i;return;\n }function Qg(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = +d;e = e | 0;f = +f;g = g | 0;var i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;i = l;l = l + 32 | 0;n = i + 8 | 0;m = i + 20 | 0;k = i;j = i + 16 | 0;h[n >> 3] = d;c[m >> 2] = e;h[k >> 3] = f;c[j >> 2] = g;Rg(a, c[b + 4 >> 2] | 0, n, m, k, j);l = i;return;\n }function Rg(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var i = 0,\n j = 0;i = l;l = l + 16 | 0;j = i;UA(j);b = Sg(b) | 0;Tg(a, b, +h[d >> 3], c[e >> 2] | 0, +h[f >> 3], c[g >> 2] | 0);WA(j);l = i;return;\n }function Sg(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function Tg(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = +c;d = d | 0;e = +e;f = f | 0;var g = 0;g = Vg(Ug() | 0) | 0;c = +Wg(c);d = Xg(d) | 0;e = +Wg(e);Yg(a, cb(0, g | 0, b | 0, +c, d | 0, +e, Xg(f) | 0) | 0);return;\n }function Ug() {\n var b = 0;if (!(a[7608] | 0)) {\n dh(9120);b = 7608;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 9120;\n }function Vg(a) {\n a = a | 0;return c[a + 8 >> 2] | 0;\n }function Wg(a) {\n a = +a;return + +ch(a);\n }function Xg(a) {\n a = a | 0;return bh(a) | 0;\n }function Yg(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 32 | 0;d = f;e = b;if (!(e & 1)) {\n c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = c[b + 4 >> 2];c[a + 8 >> 2] = c[b + 8 >> 2];c[a + 12 >> 2] = c[b + 12 >> 2];\n } else {\n Zg(d, 0);Ja(e | 0, d | 0) | 0;_g(a, d);$g(d);\n }l = f;return;\n }function Zg(b, d) {\n b = b | 0;d = d | 0;ah(b, d);c[b + 8 >> 2] = 0;a[b + 24 >> 0] = 0;return;\n }function _g(a, b) {\n a = a | 0;b = b | 0;b = b + 8 | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = c[b + 4 >> 2];c[a + 8 >> 2] = c[b + 8 >> 2];c[a + 12 >> 2] = c[b + 12 >> 2];return;\n }function $g(b) {\n b = b | 0;a[b + 24 >> 0] = 0;return;\n }function ah(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = b;return;\n }function bh(a) {\n a = a | 0;return a | 0;\n }function ch(a) {\n a = +a;return +a;\n }function dh(a) {\n a = a | 0;fh(a, eh() | 0, 4);return;\n }function eh() {\n return 1064;\n }function fh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;c[a + 8 >> 2] = _a(b | 0, d + 1 | 0) | 0;return;\n }function gh(a, b) {\n a = a | 0;b = b | 0;b = c[b >> 2] | 0;c[a >> 2] = b;Aa(b | 0);return;\n }function hh(a) {\n a = a | 0;var b = 0,\n d = 0;d = a + 4 | 0;b = c[d >> 2] | 0;c[d >> 2] = 0;if (b | 0) {\n vf(b);sC(b);\n }jc(c[a >> 2] | 0, 0);return;\n }function ih(a) {\n a = a | 0;qc(c[a >> 2] | 0);return;\n }function jh(a) {\n a = a | 0;return rc(c[a >> 2] | 0) | 0;\n }function kh(a, b, d, e) {\n a = a | 0;b = +b;d = +d;e = e | 0;_d(c[a >> 2] | 0, T(b), T(d), e);return;\n }function lh(a) {\n a = a | 0;return + +T(Bd(c[a >> 2] | 0));\n }function mh(a) {\n a = a | 0;return + +T(Dd(c[a >> 2] | 0));\n }function nh(a) {\n a = a | 0;return + +T(Cd(c[a >> 2] | 0));\n }function oh(a) {\n a = a | 0;return + +T(Ed(c[a >> 2] | 0));\n }function ph(a) {\n a = a | 0;return + +T(Fd(c[a >> 2] | 0));\n }function qh(a) {\n a = a | 0;return + +T(Gd(c[a >> 2] | 0));\n }function rh(a, b) {\n a = a | 0;b = b | 0;h[a >> 3] = +T(Bd(c[b >> 2] | 0));h[a + 8 >> 3] = +T(Dd(c[b >> 2] | 0));h[a + 16 >> 3] = +T(Cd(c[b >> 2] | 0));h[a + 24 >> 3] = +T(Ed(c[b >> 2] | 0));h[a + 32 >> 3] = +T(Fd(c[b >> 2] | 0));h[a + 40 >> 3] = +T(Gd(c[b >> 2] | 0));return;\n }function sh(a, b) {\n a = a | 0;b = b | 0;return + +T(Hd(c[a >> 2] | 0, b));\n }function th(a, b) {\n a = a | 0;b = b | 0;return + +T(Id(c[a >> 2] | 0, b));\n }function uh(a, b) {\n a = a | 0;b = b | 0;return + +T(Jd(c[a >> 2] | 0, b));\n }function vh() {\n return fc() | 0;\n }function wh() {\n xh();yh();zh();Ah();Bh();Ch();return;\n }function xh() {\n kv(11713, 4938, 1);return;\n }function yh() {\n yu(10448);return;\n }function zh() {\n eu(10408);return;\n }function Ah() {\n vt(10324);return;\n }function Bh() {\n or(10096);return;\n }function Ch() {\n Dh(9132);return;\n }function Dh(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0,\n I = 0,\n J = 0,\n K = 0,\n L = 0,\n M = 0,\n N = 0,\n O = 0,\n P = 0,\n Q = 0,\n R = 0,\n S = 0,\n T = 0,\n U = 0,\n V = 0,\n W = 0,\n X = 0,\n Y = 0,\n Z = 0,\n _ = 0,\n $ = 0,\n aa = 0,\n ba = 0,\n ca = 0,\n da = 0,\n ea = 0,\n fa = 0,\n ga = 0,\n ha = 0,\n ia = 0,\n ja = 0,\n ka = 0,\n la = 0,\n ma = 0,\n na = 0,\n oa = 0,\n pa = 0,\n qa = 0,\n ra = 0,\n sa = 0,\n ta = 0,\n ua = 0,\n va = 0,\n wa = 0,\n xa = 0,\n ya = 0,\n za = 0,\n Aa = 0,\n Ba = 0,\n Ca = 0,\n Da = 0,\n Ea = 0,\n Fa = 0,\n Ga = 0;b = l;l = l + 672 | 0;d = b + 656 | 0;Ga = b + 648 | 0;Fa = b + 640 | 0;Ea = b + 632 | 0;Da = b + 624 | 0;Ca = b + 616 | 0;Ba = b + 608 | 0;Aa = b + 600 | 0;za = b + 592 | 0;ya = b + 584 | 0;xa = b + 576 | 0;wa = b + 568 | 0;va = b + 560 | 0;ua = b + 552 | 0;ta = b + 544 | 0;sa = b + 536 | 0;ra = b + 528 | 0;qa = b + 520 | 0;pa = b + 512 | 0;oa = b + 504 | 0;na = b + 496 | 0;ma = b + 488 | 0;la = b + 480 | 0;ka = b + 472 | 0;ja = b + 464 | 0;ia = b + 456 | 0;ha = b + 448 | 0;ga = b + 440 | 0;fa = b + 432 | 0;ea = b + 424 | 0;da = b + 416 | 0;ca = b + 408 | 0;ba = b + 400 | 0;aa = b + 392 | 0;$ = b + 384 | 0;_ = b + 376 | 0;Z = b + 368 | 0;Y = b + 360 | 0;X = b + 352 | 0;W = b + 344 | 0;V = b + 336 | 0;U = b + 328 | 0;T = b + 320 | 0;S = b + 312 | 0;R = b + 304 | 0;Q = b + 296 | 0;P = b + 288 | 0;O = b + 280 | 0;N = b + 272 | 0;M = b + 264 | 0;L = b + 256 | 0;K = b + 248 | 0;J = b + 240 | 0;I = b + 232 | 0;H = b + 224 | 0;G = b + 216 | 0;F = b + 208 | 0;E = b + 200 | 0;D = b + 192 | 0;C = b + 184 | 0;B = b + 176 | 0;A = b + 168 | 0;z = b + 160 | 0;y = b + 152 | 0;x = b + 144 | 0;w = b + 136 | 0;v = b + 128 | 0;u = b + 120 | 0;t = b + 112 | 0;s = b + 104 | 0;r = b + 96 | 0;q = b + 88 | 0;p = b + 80 | 0;o = b + 72 | 0;n = b + 64 | 0;m = b + 56 | 0;k = b + 48 | 0;j = b + 40 | 0;i = b + 32 | 0;h = b + 24 | 0;g = b + 16 | 0;f = b + 8 | 0;e = b;Eh(a, 3646);Fh(a, 3651, 2) | 0;Gh(a, 3665, 2) | 0;Hh(a, 3682, 18) | 0;c[Ga >> 2] = 19;c[Ga + 4 >> 2] = 0;c[d >> 2] = c[Ga >> 2];c[d + 4 >> 2] = c[Ga + 4 >> 2];Ih(a, 3690, d) | 0;c[Fa >> 2] = 1;c[Fa + 4 >> 2] = 0;c[d >> 2] = c[Fa >> 2];c[d + 4 >> 2] = c[Fa + 4 >> 2];Jh(a, 3696, d) | 0;c[Ea >> 2] = 2;c[Ea + 4 >> 2] = 0;c[d >> 2] = c[Ea >> 2];c[d + 4 >> 2] = c[Ea + 4 >> 2];Kh(a, 3706, d) | 0;c[Da >> 2] = 1;c[Da + 4 >> 2] = 0;c[d >> 2] = c[Da >> 2];c[d + 4 >> 2] = c[Da + 4 >> 2];Lh(a, 3722, d) | 0;c[Ca >> 2] = 2;c[Ca + 4 >> 2] = 0;c[d >> 2] = c[Ca >> 2];c[d + 4 >> 2] = c[Ca + 4 >> 2];Lh(a, 3734, d) | 0;c[Ba >> 2] = 3;c[Ba + 4 >> 2] = 0;c[d >> 2] = c[Ba >> 2];c[d + 4 >> 2] = c[Ba + 4 >> 2];Kh(a, 3753, d) | 0;c[Aa >> 2] = 4;c[Aa + 4 >> 2] = 0;c[d >> 2] = c[Aa >> 2];c[d + 4 >> 2] = c[Aa + 4 >> 2];Kh(a, 3769, d) | 0;c[za >> 2] = 5;c[za + 4 >> 2] = 0;c[d >> 2] = c[za >> 2];c[d + 4 >> 2] = c[za + 4 >> 2];Kh(a, 3783, d) | 0;c[ya >> 2] = 6;c[ya + 4 >> 2] = 0;c[d >> 2] = c[ya >> 2];c[d + 4 >> 2] = c[ya + 4 >> 2];Kh(a, 3796, d) | 0;c[xa >> 2] = 7;c[xa + 4 >> 2] = 0;c[d >> 2] = c[xa >> 2];c[d + 4 >> 2] = c[xa + 4 >> 2];Kh(a, 3813, d) | 0;c[wa >> 2] = 8;c[wa + 4 >> 2] = 0;c[d >> 2] = c[wa >> 2];c[d + 4 >> 2] = c[wa + 4 >> 2];Kh(a, 3825, d) | 0;c[va >> 2] = 3;c[va + 4 >> 2] = 0;c[d >> 2] = c[va >> 2];c[d + 4 >> 2] = c[va + 4 >> 2];Lh(a, 3843, d) | 0;c[ua >> 2] = 4;c[ua + 4 >> 2] = 0;c[d >> 2] = c[ua >> 2];c[d + 4 >> 2] = c[ua + 4 >> 2];Lh(a, 3853, d) | 0;c[ta >> 2] = 9;c[ta + 4 >> 2] = 0;c[d >> 2] = c[ta >> 2];c[d + 4 >> 2] = c[ta + 4 >> 2];Kh(a, 3870, d) | 0;c[sa >> 2] = 10;c[sa + 4 >> 2] = 0;c[d >> 2] = c[sa >> 2];c[d + 4 >> 2] = c[sa + 4 >> 2];Kh(a, 3884, d) | 0;c[ra >> 2] = 11;c[ra + 4 >> 2] = 0;c[d >> 2] = c[ra >> 2];c[d + 4 >> 2] = c[ra + 4 >> 2];Kh(a, 3896, d) | 0;c[qa >> 2] = 1;c[qa + 4 >> 2] = 0;c[d >> 2] = c[qa >> 2];c[d + 4 >> 2] = c[qa + 4 >> 2];Mh(a, 3907, d) | 0;c[pa >> 2] = 2;c[pa + 4 >> 2] = 0;c[d >> 2] = c[pa >> 2];c[d + 4 >> 2] = c[pa + 4 >> 2];Mh(a, 3915, d) | 0;c[oa >> 2] = 3;c[oa + 4 >> 2] = 0;c[d >> 2] = c[oa >> 2];c[d + 4 >> 2] = c[oa + 4 >> 2];Mh(a, 3928, d) | 0;c[na >> 2] = 4;c[na + 4 >> 2] = 0;c[d >> 2] = c[na >> 2];c[d + 4 >> 2] = c[na + 4 >> 2];Mh(a, 3948, d) | 0;c[ma >> 2] = 5;c[ma + 4 >> 2] = 0;c[d >> 2] = c[ma >> 2];c[d + 4 >> 2] = c[ma + 4 >> 2];Mh(a, 3960, d) | 0;c[la >> 2] = 6;c[la + 4 >> 2] = 0;c[d >> 2] = c[la >> 2];c[d + 4 >> 2] = c[la + 4 >> 2];Mh(a, 3974, d) | 0;c[ka >> 2] = 7;c[ka + 4 >> 2] = 0;c[d >> 2] = c[ka >> 2];c[d + 4 >> 2] = c[ka + 4 >> 2];Mh(a, 3983, d) | 0;c[ja >> 2] = 20;c[ja + 4 >> 2] = 0;c[d >> 2] = c[ja >> 2];c[d + 4 >> 2] = c[ja + 4 >> 2];Ih(a, 3999, d) | 0;c[ia >> 2] = 8;c[ia + 4 >> 2] = 0;c[d >> 2] = c[ia >> 2];c[d + 4 >> 2] = c[ia + 4 >> 2];Mh(a, 4012, d) | 0;c[ha >> 2] = 9;c[ha + 4 >> 2] = 0;c[d >> 2] = c[ha >> 2];c[d + 4 >> 2] = c[ha + 4 >> 2];Mh(a, 4022, d) | 0;c[ga >> 2] = 21;c[ga + 4 >> 2] = 0;c[d >> 2] = c[ga >> 2];c[d + 4 >> 2] = c[ga + 4 >> 2];Ih(a, 4039, d) | 0;c[fa >> 2] = 10;c[fa + 4 >> 2] = 0;c[d >> 2] = c[fa >> 2];c[d + 4 >> 2] = c[fa + 4 >> 2];Mh(a, 4053, d) | 0;c[ea >> 2] = 11;c[ea + 4 >> 2] = 0;c[d >> 2] = c[ea >> 2];c[d + 4 >> 2] = c[ea + 4 >> 2];Mh(a, 4065, d) | 0;c[da >> 2] = 12;c[da + 4 >> 2] = 0;c[d >> 2] = c[da >> 2];c[d + 4 >> 2] = c[da + 4 >> 2];Mh(a, 4084, d) | 0;c[ca >> 2] = 13;c[ca + 4 >> 2] = 0;c[d >> 2] = c[ca >> 2];c[d + 4 >> 2] = c[ca + 4 >> 2];Mh(a, 4097, d) | 0;c[ba >> 2] = 14;c[ba + 4 >> 2] = 0;c[d >> 2] = c[ba >> 2];c[d + 4 >> 2] = c[ba + 4 >> 2];Mh(a, 4117, d) | 0;c[aa >> 2] = 15;c[aa + 4 >> 2] = 0;c[d >> 2] = c[aa >> 2];c[d + 4 >> 2] = c[aa + 4 >> 2];Mh(a, 4129, d) | 0;c[$ >> 2] = 16;c[$ + 4 >> 2] = 0;c[d >> 2] = c[$ >> 2];c[d + 4 >> 2] = c[$ + 4 >> 2];Mh(a, 4148, d) | 0;c[_ >> 2] = 17;c[_ + 4 >> 2] = 0;c[d >> 2] = c[_ >> 2];c[d + 4 >> 2] = c[_ + 4 >> 2];Mh(a, 4161, d) | 0;c[Z >> 2] = 18;c[Z + 4 >> 2] = 0;c[d >> 2] = c[Z >> 2];c[d + 4 >> 2] = c[Z + 4 >> 2];Mh(a, 4181, d) | 0;c[Y >> 2] = 5;c[Y + 4 >> 2] = 0;c[d >> 2] = c[Y >> 2];c[d + 4 >> 2] = c[Y + 4 >> 2];Lh(a, 4196, d) | 0;c[X >> 2] = 6;c[X + 4 >> 2] = 0;c[d >> 2] = c[X >> 2];c[d + 4 >> 2] = c[X + 4 >> 2];Lh(a, 4206, d) | 0;c[W >> 2] = 7;c[W + 4 >> 2] = 0;c[d >> 2] = c[W >> 2];c[d + 4 >> 2] = c[W + 4 >> 2];Lh(a, 4217, d) | 0;c[V >> 2] = 3;c[V + 4 >> 2] = 0;c[d >> 2] = c[V >> 2];c[d + 4 >> 2] = c[V + 4 >> 2];Nh(a, 4235, d) | 0;c[U >> 2] = 1;c[U + 4 >> 2] = 0;c[d >> 2] = c[U >> 2];c[d + 4 >> 2] = c[U + 4 >> 2];Oh(a, 4251, d) | 0;c[T >> 2] = 4;c[T + 4 >> 2] = 0;c[d >> 2] = c[T >> 2];c[d + 4 >> 2] = c[T + 4 >> 2];Nh(a, 4263, d) | 0;c[S >> 2] = 5;c[S + 4 >> 2] = 0;c[d >> 2] = c[S >> 2];c[d + 4 >> 2] = c[S + 4 >> 2];Nh(a, 4279, d) | 0;c[R >> 2] = 6;c[R + 4 >> 2] = 0;c[d >> 2] = c[R >> 2];c[d + 4 >> 2] = c[R + 4 >> 2];Nh(a, 4293, d) | 0;c[Q >> 2] = 7;c[Q + 4 >> 2] = 0;c[d >> 2] = c[Q >> 2];c[d + 4 >> 2] = c[Q + 4 >> 2];Nh(a, 4306, d) | 0;c[P >> 2] = 8;c[P + 4 >> 2] = 0;c[d >> 2] = c[P >> 2];c[d + 4 >> 2] = c[P + 4 >> 2];Nh(a, 4323, d) | 0;c[O >> 2] = 9;c[O + 4 >> 2] = 0;c[d >> 2] = c[O >> 2];c[d + 4 >> 2] = c[O + 4 >> 2];Nh(a, 4335, d) | 0;c[N >> 2] = 2;c[N + 4 >> 2] = 0;c[d >> 2] = c[N >> 2];c[d + 4 >> 2] = c[N + 4 >> 2];Oh(a, 4353, d) | 0;c[M >> 2] = 12;c[M + 4 >> 2] = 0;c[d >> 2] = c[M >> 2];c[d + 4 >> 2] = c[M + 4 >> 2];Ph(a, 4363, d) | 0;c[L >> 2] = 1;c[L + 4 >> 2] = 0;c[d >> 2] = c[L >> 2];c[d + 4 >> 2] = c[L + 4 >> 2];Qh(a, 4376, d) | 0;c[K >> 2] = 2;c[K + 4 >> 2] = 0;c[d >> 2] = c[K >> 2];c[d + 4 >> 2] = c[K + 4 >> 2];Qh(a, 4388, d) | 0;c[J >> 2] = 13;c[J + 4 >> 2] = 0;c[d >> 2] = c[J >> 2];c[d + 4 >> 2] = c[J + 4 >> 2];Ph(a, 4402, d) | 0;c[I >> 2] = 14;c[I + 4 >> 2] = 0;c[d >> 2] = c[I >> 2];c[d + 4 >> 2] = c[I + 4 >> 2];Ph(a, 4411, d) | 0;c[H >> 2] = 15;c[H + 4 >> 2] = 0;c[d >> 2] = c[H >> 2];c[d + 4 >> 2] = c[H + 4 >> 2];Ph(a, 4421, d) | 0;c[G >> 2] = 16;c[G + 4 >> 2] = 0;c[d >> 2] = c[G >> 2];c[d + 4 >> 2] = c[G + 4 >> 2];Ph(a, 4433, d) | 0;c[F >> 2] = 17;c[F + 4 >> 2] = 0;c[d >> 2] = c[F >> 2];c[d + 4 >> 2] = c[F + 4 >> 2];Ph(a, 4446, d) | 0;c[E >> 2] = 18;c[E + 4 >> 2] = 0;c[d >> 2] = c[E >> 2];c[d + 4 >> 2] = c[E + 4 >> 2];Ph(a, 4458, d) | 0;c[D >> 2] = 3;c[D + 4 >> 2] = 0;c[d >> 2] = c[D >> 2];c[d + 4 >> 2] = c[D + 4 >> 2];Qh(a, 4471, d) | 0;c[C >> 2] = 1;c[C + 4 >> 2] = 0;c[d >> 2] = c[C >> 2];c[d + 4 >> 2] = c[C + 4 >> 2];Rh(a, 4486, d) | 0;c[B >> 2] = 10;c[B + 4 >> 2] = 0;c[d >> 2] = c[B >> 2];c[d + 4 >> 2] = c[B + 4 >> 2];Nh(a, 4496, d) | 0;c[A >> 2] = 11;c[A + 4 >> 2] = 0;c[d >> 2] = c[A >> 2];c[d + 4 >> 2] = c[A + 4 >> 2];Nh(a, 4508, d) | 0;c[z >> 2] = 3;c[z + 4 >> 2] = 0;c[d >> 2] = c[z >> 2];c[d + 4 >> 2] = c[z + 4 >> 2];Oh(a, 4519, d) | 0;c[y >> 2] = 4;c[y + 4 >> 2] = 0;c[d >> 2] = c[y >> 2];c[d + 4 >> 2] = c[y + 4 >> 2];Sh(a, 4530, d) | 0;c[x >> 2] = 19;c[x + 4 >> 2] = 0;c[d >> 2] = c[x >> 2];c[d + 4 >> 2] = c[x + 4 >> 2];Th(a, 4542, d) | 0;c[w >> 2] = 12;c[w + 4 >> 2] = 0;c[d >> 2] = c[w >> 2];c[d + 4 >> 2] = c[w + 4 >> 2];Uh(a, 4554, d) | 0;c[v >> 2] = 13;c[v + 4 >> 2] = 0;c[d >> 2] = c[v >> 2];c[d + 4 >> 2] = c[v + 4 >> 2];Vh(a, 4568, d) | 0;c[u >> 2] = 2;c[u + 4 >> 2] = 0;c[d >> 2] = c[u >> 2];c[d + 4 >> 2] = c[u + 4 >> 2];Wh(a, 4578, d) | 0;c[t >> 2] = 20;c[t + 4 >> 2] = 0;c[d >> 2] = c[t >> 2];c[d + 4 >> 2] = c[t + 4 >> 2];Xh(a, 4587, d) | 0;c[s >> 2] = 22;c[s + 4 >> 2] = 0;c[d >> 2] = c[s >> 2];c[d + 4 >> 2] = c[s + 4 >> 2];Ih(a, 4602, d) | 0;c[r >> 2] = 23;c[r + 4 >> 2] = 0;c[d >> 2] = c[r >> 2];c[d + 4 >> 2] = c[r + 4 >> 2];Ih(a, 4619, d) | 0;c[q >> 2] = 14;c[q + 4 >> 2] = 0;c[d >> 2] = c[q >> 2];c[d + 4 >> 2] = c[q + 4 >> 2];Yh(a, 4629, d) | 0;c[p >> 2] = 1;c[p + 4 >> 2] = 0;c[d >> 2] = c[p >> 2];c[d + 4 >> 2] = c[p + 4 >> 2];Zh(a, 4637, d) | 0;c[o >> 2] = 4;c[o + 4 >> 2] = 0;c[d >> 2] = c[o >> 2];c[d + 4 >> 2] = c[o + 4 >> 2];Qh(a, 4653, d) | 0;c[n >> 2] = 5;c[n + 4 >> 2] = 0;c[d >> 2] = c[n >> 2];c[d + 4 >> 2] = c[n + 4 >> 2];Qh(a, 4669, d) | 0;c[m >> 2] = 6;c[m + 4 >> 2] = 0;c[d >> 2] = c[m >> 2];c[d + 4 >> 2] = c[m + 4 >> 2];Qh(a, 4686, d) | 0;c[k >> 2] = 7;c[k + 4 >> 2] = 0;c[d >> 2] = c[k >> 2];c[d + 4 >> 2] = c[k + 4 >> 2];Qh(a, 4701, d) | 0;c[j >> 2] = 8;c[j + 4 >> 2] = 0;c[d >> 2] = c[j >> 2];c[d + 4 >> 2] = c[j + 4 >> 2];Qh(a, 4719, d) | 0;c[i >> 2] = 9;c[i + 4 >> 2] = 0;c[d >> 2] = c[i >> 2];c[d + 4 >> 2] = c[i + 4 >> 2];Qh(a, 4736, d) | 0;c[h >> 2] = 21;c[h + 4 >> 2] = 0;c[d >> 2] = c[h >> 2];c[d + 4 >> 2] = c[h + 4 >> 2];_h(a, 4754, d) | 0;c[g >> 2] = 2;c[g + 4 >> 2] = 0;c[d >> 2] = c[g >> 2];c[d + 4 >> 2] = c[g + 4 >> 2];Rh(a, 4772, d) | 0;c[f >> 2] = 3;c[f + 4 >> 2] = 0;c[d >> 2] = c[f >> 2];c[d + 4 >> 2] = c[f + 4 >> 2];Rh(a, 4790, d) | 0;c[e >> 2] = 4;c[e + 4 >> 2] = 0;c[d >> 2] = c[e >> 2];c[d + 4 >> 2] = c[e + 4 >> 2];Rh(a, 4808, d) | 0;l = b;return;\n }function Eh(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = dr() | 0;c[a >> 2] = d;er(d, b);Hv(c[a >> 2] | 0);return;\n }function Fh(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Oq(a, ai(b) | 0, c, 0);return a | 0;\n }function Gh(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;tq(a, ai(b) | 0, c, 0);return a | 0;\n }function Hh(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;cq(a, ai(b) | 0, c, 0);return a | 0;\n }function Ih(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Lp(a, b, f);l = e;return a | 0;\n }function Jh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];pp(a, b, f);l = e;return a | 0;\n }function Kh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Yo(a, b, f);l = e;return a | 0;\n }function Lh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Fo(a, b, f);l = e;return a | 0;\n }function Mh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];mo(a, b, f);l = e;return a | 0;\n }function Nh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Un(a, b, f);l = e;return a | 0;\n }function Oh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Bn(a, b, f);l = e;return a | 0;\n }function Ph(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Um(a, b, f);l = e;return a | 0;\n }function Qh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Bm(a, b, f);l = e;return a | 0;\n }function Rh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];im(a, b, f);l = e;return a | 0;\n }function Sh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Rl(a, b, f);l = e;return a | 0;\n }function Th(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];vl(a, b, f);l = e;return a | 0;\n }function Uh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];bl(a, b, f);l = e;return a | 0;\n }function Vh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Kk(a, b, f);l = e;return a | 0;\n }function Wh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];nk(a, b, f);l = e;return a | 0;\n }function Xh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Rj(a, b, f);l = e;return a | 0;\n }function Yh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];xj(a, b, f);l = e;return a | 0;\n }function Zh(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];_i(a, b, f);l = e;return a | 0;\n }function _h(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];$h(a, b, f);l = e;return a | 0;\n }function $h(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];bi(a, d, f, 1);l = e;return;\n }function ai(a) {\n a = a | 0;return a | 0;\n }function bi(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = ci() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = di(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, ei(g, e) | 0, e);l = f;return;\n }function ci() {\n var b = 0,\n d = 0;if (!(a[7616] | 0)) {\n qi(9136);Ha(24, 9136, o | 0) | 0;d = 7616;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9136) | 0)) {\n b = 9136;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));qi(9136);\n }return 9136;\n }function di(a) {\n a = a | 0;return 0;\n }function ei(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = ci() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];ki(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n li(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function fi(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;h = l;l = l + 32 | 0;o = h + 24 | 0;n = h + 20 | 0;j = h + 16 | 0;m = h + 12 | 0;k = h + 8 | 0;i = h + 4 | 0;p = h;c[n >> 2] = b;c[j >> 2] = d;c[m >> 2] = e;c[k >> 2] = f;c[i >> 2] = g;g = a + 28 | 0;c[p >> 2] = c[g >> 2];c[o >> 2] = c[p >> 2];gi(a + 24 | 0, o, n, m, k, j, i) | 0;c[g >> 2] = c[c[g >> 2] >> 2];l = h;return;\n }function gi(a, b, d, e, f, g, h) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;h = h | 0;a = hi(b) | 0;b = qC(24) | 0;ii(b + 4 | 0, c[d >> 2] | 0, c[e >> 2] | 0, c[f >> 2] | 0, c[g >> 2] | 0, c[h >> 2] | 0);c[b >> 2] = c[a >> 2];c[a >> 2] = b;return b | 0;\n }function hi(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function ii(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;c[a + 8 >> 2] = e;c[a + 12 >> 2] = f;c[a + 16 >> 2] = g;return;\n }function ji(a, b) {\n a = a | 0;b = b | 0;return b | a | 0;\n }function ki(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function li(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = mi(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;ni(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];ki(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;oi(a, i);pi(i);l = k;return;\n }\n }function mi(a) {\n a = a | 0;return 357913941;\n }function ni(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function oi(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function pi(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function qi(a) {\n a = a | 0;ui(a);return;\n }function ri(a) {\n a = a | 0;ti(a + 24 | 0);return;\n }function si(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function ti(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function ui(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 3, b, wi() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function vi() {\n return 9228;\n }function wi() {\n return 1140;\n }function xi(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = zi(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = Ai(b, e) | 0;l = d;return b | 0;\n }function yi(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;c[a + 8 >> 2] = e;c[a + 12 >> 2] = f;c[a + 16 >> 2] = g;return;\n }function zi(a) {\n a = a | 0;return (c[(ci() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Ai(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 48 | 0;e = f;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;ob[d & 31](e, a);e = Bi(e) | 0;l = f;return e | 0;\n }function Bi(a) {\n a = a | 0;var b = 0,\n c = 0,\n d = 0,\n e = 0;e = l;l = l + 32 | 0;b = e + 12 | 0;c = e;d = Di(Ci() | 0) | 0;if (!d) a = Ii(a) | 0;else {\n Ei(b, d);Fi(c, b);Gi(a, c);a = Hi(b) | 0;\n }l = e;return a | 0;\n }function Ci() {\n var b = 0;if (!(a[7632] | 0)) {\n Ti(9184);Ha(25, 9184, o | 0) | 0;b = 7632;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 9184;\n }function Di(a) {\n a = a | 0;return c[a + 36 >> 2] | 0;\n }function Ei(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = b;c[a + 4 >> 2] = a;c[a + 8 >> 2] = 0;return;\n }function Fi(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = c[b + 4 >> 2];c[a + 8 >> 2] = 0;return;\n }function Gi(a, b) {\n a = a | 0;b = b | 0;Ni(b, a, a + 8 | 0, a + 16 | 0, a + 24 | 0, a + 32 | 0, a + 40 | 0) | 0;return;\n }function Hi(a) {\n a = a | 0;return c[(c[a + 4 >> 2] | 0) + 8 >> 2] | 0;\n }function Ii(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;j = l;l = l + 16 | 0;d = j + 4 | 0;e = j;f = jy(8) | 0;g = f;h = qC(48) | 0;i = h;b = i + 48 | 0;do {\n c[i >> 2] = c[a >> 2];i = i + 4 | 0;a = a + 4 | 0;\n } while ((i | 0) < (b | 0));b = g + 4 | 0;c[b >> 2] = h;i = qC(8) | 0;h = c[b >> 2] | 0;c[e >> 2] = 0;c[d >> 2] = c[e >> 2];Ji(i, h, d);c[f >> 2] = i;l = j;return g | 0;\n }function Ji(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;d = qC(16) | 0;c[d + 4 >> 2] = 0;c[d + 8 >> 2] = 0;c[d >> 2] = 1092;c[d + 12 >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Ki(a) {\n a = a | 0;kC(a);sC(a);return;\n }function Li(a) {\n a = a | 0;a = c[a + 12 >> 2] | 0;if (a | 0) sC(a);return;\n }function Mi(a) {\n a = a | 0;sC(a);return;\n }function Ni(a, b, d, e, f, g, h) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;h = h | 0;g = Oi(c[a >> 2] | 0, b, d, e, f, g, h) | 0;h = a + 4 | 0;c[(c[h >> 2] | 0) + 8 >> 2] = g;return c[(c[h >> 2] | 0) + 8 >> 2] | 0;\n }function Oi(a, b, c, d, e, f, g) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var i = 0,\n j = 0;i = l;l = l + 16 | 0;j = i;UA(j);a = Sg(a) | 0;g = Pi(a, +h[b >> 3], +h[c >> 3], +h[d >> 3], +h[e >> 3], +h[f >> 3], +h[g >> 3]) | 0;WA(j);l = i;return g | 0;\n }function Pi(a, b, c, d, e, f, g) {\n a = a | 0;b = +b;c = +c;d = +d;e = +e;f = +f;g = +g;var h = 0;h = Vg(Qi() | 0) | 0;b = +Wg(b);c = +Wg(c);d = +Wg(d);e = +Wg(e);f = +Wg(f);return ya(0, h | 0, a | 0, +b, +c, +d, +e, +f, + +Wg(g)) | 0;\n }function Qi() {\n var b = 0;if (!(a[7624] | 0)) {\n Ri(9172);b = 7624;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 9172;\n }function Ri(a) {\n a = a | 0;fh(a, Si() | 0, 6);return;\n }function Si() {\n return 1112;\n }function Ti(a) {\n a = a | 0;Zi(a);return;\n }function Ui(a) {\n a = a | 0;Vi(a + 24 | 0);Wi(a + 16 | 0);return;\n }function Vi(a) {\n a = a | 0;Yi(a);return;\n }function Wi(a) {\n a = a | 0;Xi(a);return;\n }function Xi(a) {\n a = a | 0;var b = 0,\n d = 0;b = c[a >> 2] | 0;if (b | 0) do {\n d = b;b = c[b >> 2] | 0;sC(d);\n } while ((b | 0) != 0);c[a >> 2] = 0;return;\n }function Yi(a) {\n a = a | 0;var b = 0,\n d = 0;b = c[a >> 2] | 0;if (b | 0) do {\n d = b;b = c[b >> 2] | 0;sC(d);\n } while ((b | 0) != 0);c[a >> 2] = 0;return;\n }function Zi(b) {\n b = b | 0;var d = 0;c[b + 16 >> 2] = 0;c[b + 20 >> 2] = 0;d = b + 24 | 0;c[d >> 2] = 0;c[b + 28 >> 2] = d;c[b + 36 >> 2] = 0;a[b + 40 >> 0] = 0;a[b + 41 >> 0] = 0;return;\n }function _i(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];$i(a, d, f, 0);l = e;return;\n }function $i(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = aj() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = bj(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, cj(g, e) | 0, e);l = f;return;\n }function aj() {\n var b = 0,\n d = 0;if (!(a[7640] | 0)) {\n jj(9232);Ha(26, 9232, o | 0) | 0;d = 7640;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9232) | 0)) {\n b = 9232;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));jj(9232);\n }return 9232;\n }function bj(a) {\n a = a | 0;return 0;\n }function cj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = aj() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];dj(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n ej(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function dj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function ej(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = fj(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;gj(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];dj(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;hj(a, i);ij(i);l = k;return;\n }\n }function fj(a) {\n a = a | 0;return 357913941;\n }function gj(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function hj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function ij(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function jj(a) {\n a = a | 0;mj(a);return;\n }function kj(a) {\n a = a | 0;lj(a + 24 | 0);return;\n }function lj(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function mj(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 1, b, nj() | 0, 3);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function nj() {\n return 1144;\n }function oj(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = +d;e = +e;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0;g = l;l = l + 16 | 0;h = g + 8 | 0;i = g;j = pj(a) | 0;a = c[j + 4 >> 2] | 0;c[i >> 2] = c[j >> 2];c[i + 4 >> 2] = a;c[h >> 2] = c[i >> 2];c[h + 4 >> 2] = c[i + 4 >> 2];qj(b, h, d, e, f);l = g;return;\n }function pj(a) {\n a = a | 0;return (c[(aj() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function qj(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = +d;e = +e;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;k = l;l = l + 16 | 0;h = k + 2 | 0;i = k + 1 | 0;j = k;g = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) g = c[(c[a >> 2] | 0) + g >> 2] | 0;rj(h, d);d = +sj(h, d);rj(i, e);e = +sj(i, e);tj(j, f);j = uj(j, f) | 0;qb[g & 1](a, d, e, j);l = k;return;\n }function rj(a, b) {\n a = a | 0;b = +b;return;\n }function sj(a, b) {\n a = a | 0;b = +b;return + +wj(b);\n }function tj(a, b) {\n a = a | 0;b = b | 0;return;\n }function uj(a, b) {\n a = a | 0;b = b | 0;return vj(b) | 0;\n }function vj(a) {\n a = a | 0;return a | 0;\n }function wj(a) {\n a = +a;return +a;\n }function xj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];yj(a, d, f, 1);l = e;return;\n }function yj(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = zj() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Aj(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Bj(g, e) | 0, e);l = f;return;\n }function zj() {\n var b = 0,\n d = 0;if (!(a[7648] | 0)) {\n Ij(9268);Ha(27, 9268, o | 0) | 0;d = 7648;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9268) | 0)) {\n b = 9268;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Ij(9268);\n }return 9268;\n }function Aj(a) {\n a = a | 0;return 0;\n }function Bj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = zj() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Cj(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Dj(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Cj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Dj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Ej(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Fj(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Cj(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Gj(a, i);Hj(i);l = k;return;\n }\n }function Ej(a) {\n a = a | 0;return 357913941;\n }function Fj(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Gj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Hj(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Ij(a) {\n a = a | 0;Lj(a);return;\n }function Jj(a) {\n a = a | 0;Kj(a + 24 | 0);return;\n }function Kj(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Lj(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 4, b, Mj() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Mj() {\n return 1160;\n }function Nj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = Oj(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = Pj(b, e) | 0;l = d;return b | 0;\n }function Oj(a) {\n a = a | 0;return (c[(zj() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Pj(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;return Qj(pb[d & 31](a) | 0) | 0;\n }function Qj(a) {\n a = a | 0;return a & 1 | 0;\n }function Rj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Sj(a, d, f, 0);l = e;return;\n }function Sj(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Tj() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Uj(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Vj(g, e) | 0, e);l = f;return;\n }function Tj() {\n var b = 0,\n d = 0;if (!(a[7656] | 0)) {\n ak(9304);Ha(28, 9304, o | 0) | 0;d = 7656;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9304) | 0)) {\n b = 9304;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));ak(9304);\n }return 9304;\n }function Uj(a) {\n a = a | 0;return 0;\n }function Vj(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Tj() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Wj(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Xj(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Wj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Xj(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Yj(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Zj(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Wj(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;_j(a, i);$j(i);l = k;return;\n }\n }function Yj(a) {\n a = a | 0;return 357913941;\n }function Zj(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function _j(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function $j(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function ak(a) {\n a = a | 0;dk(a);return;\n }function bk(a) {\n a = a | 0;ck(a + 24 | 0);return;\n }function ck(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function dk(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 5, b, ek() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function ek() {\n return 1164;\n }function fk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = gk(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];hk(b, f, d);l = e;return;\n }function gk(a) {\n a = a | 0;return (c[(Tj() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function hk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;ik(f, d);d = jk(f, d) | 0;ob[e & 31](a, d);kk(f);l = g;return;\n }function ik(a, b) {\n a = a | 0;b = b | 0;lk(a, b);return;\n }function jk(a, b) {\n a = a | 0;b = b | 0;return a | 0;\n }function kk(a) {\n a = a | 0;vf(a);return;\n }function lk(a, b) {\n a = a | 0;b = b | 0;mk(a, b);return;\n }function mk(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = b;return;\n }function nk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];ok(a, d, f, 0);l = e;return;\n }function ok(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = pk() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = qk(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, rk(g, e) | 0, e);l = f;return;\n }function pk() {\n var b = 0,\n d = 0;if (!(a[7664] | 0)) {\n yk(9340);Ha(29, 9340, o | 0) | 0;d = 7664;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9340) | 0)) {\n b = 9340;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));yk(9340);\n }return 9340;\n }function qk(a) {\n a = a | 0;return 0;\n }function rk(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = pk() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];sk(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n tk(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function sk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function tk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = uk(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;vk(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];sk(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;wk(a, i);xk(i);l = k;return;\n }\n }function uk(a) {\n a = a | 0;return 357913941;\n }function vk(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function wk(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function xk(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function yk(a) {\n a = a | 0;Bk(a);return;\n }function zk(a) {\n a = a | 0;Ak(a + 24 | 0);return;\n }function Ak(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Bk(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 4, b, Ck() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Ck() {\n return 1180;\n }function Dk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Ek(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];d = Fk(b, f, d) | 0;l = e;return d | 0;\n }function Ek(a) {\n a = a | 0;return (c[(pk() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Fk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;Gk(f, d);f = Hk(f, d) | 0;f = Ik(wb[e & 15](a, f) | 0) | 0;l = g;return f | 0;\n }function Gk(a, b) {\n a = a | 0;b = b | 0;return;\n }function Hk(a, b) {\n a = a | 0;b = b | 0;return Jk(b) | 0;\n }function Ik(a) {\n a = a | 0;return a | 0;\n }function Jk(a) {\n a = a | 0;return a | 0;\n }function Kk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Lk(a, d, f, 0);l = e;return;\n }function Lk(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Mk() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Nk(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Ok(g, e) | 0, e);l = f;return;\n }function Mk() {\n var b = 0,\n d = 0;if (!(a[7672] | 0)) {\n Vk(9376);Ha(30, 9376, o | 0) | 0;d = 7672;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9376) | 0)) {\n b = 9376;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Vk(9376);\n }return 9376;\n }function Nk(a) {\n a = a | 0;return 0;\n }function Ok(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Mk() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Pk(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Qk(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Pk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Qk(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Rk(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Sk(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Pk(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Tk(a, i);Uk(i);l = k;return;\n }\n }function Rk(a) {\n a = a | 0;return 357913941;\n }function Sk(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Tk(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Uk(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Vk(a) {\n a = a | 0;Yk(a);return;\n }function Wk(a) {\n a = a | 0;Xk(a + 24 | 0);return;\n }function Xk(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Yk(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 5, b, Zk() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Zk() {\n return 1196;\n }function _k(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = $k(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = al(b, e) | 0;l = d;return b | 0;\n }function $k(a) {\n a = a | 0;return (c[(Mk() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function al(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;return Ik(pb[d & 31](a) | 0) | 0;\n }function bl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];cl(a, d, f, 1);l = e;return;\n }function cl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = dl() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = el(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, fl(g, e) | 0, e);l = f;return;\n }function dl() {\n var b = 0,\n d = 0;if (!(a[7680] | 0)) {\n ml(9412);Ha(31, 9412, o | 0) | 0;d = 7680;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9412) | 0)) {\n b = 9412;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));ml(9412);\n }return 9412;\n }function el(a) {\n a = a | 0;return 0;\n }function fl(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = dl() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];gl(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n hl(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function gl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function hl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = il(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;jl(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];gl(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;kl(a, i);ll(i);l = k;return;\n }\n }function il(a) {\n a = a | 0;return 357913941;\n }function jl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function kl(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function ll(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function ml(a) {\n a = a | 0;pl(a);return;\n }function nl(a) {\n a = a | 0;ol(a + 24 | 0);return;\n }function ol(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function pl(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 6, b, ql() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function ql() {\n return 1200;\n }function rl(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = sl(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = tl(b, e) | 0;l = d;return b | 0;\n }function sl(a) {\n a = a | 0;return (c[(dl() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function tl(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;return ul(pb[d & 31](a) | 0) | 0;\n }function ul(a) {\n a = a | 0;return a | 0;\n }function vl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];wl(a, d, f, 0);l = e;return;\n }function wl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = xl() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = yl(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, zl(g, e) | 0, e);l = f;return;\n }function xl() {\n var b = 0,\n d = 0;if (!(a[7688] | 0)) {\n Gl(9448);Ha(32, 9448, o | 0) | 0;d = 7688;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9448) | 0)) {\n b = 9448;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Gl(9448);\n }return 9448;\n }function yl(a) {\n a = a | 0;return 0;\n }function zl(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = xl() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Al(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Bl(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Al(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Bl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Cl(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Dl(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Al(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;El(a, i);Fl(i);l = k;return;\n }\n }function Cl(a) {\n a = a | 0;return 357913941;\n }function Dl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function El(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Fl(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Gl(a) {\n a = a | 0;Jl(a);return;\n }function Hl(a) {\n a = a | 0;Il(a + 24 | 0);return;\n }function Il(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Jl(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 6, b, Kl() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Kl() {\n return 1204;\n }function Ll(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Ml(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Nl(b, f, d);l = e;return;\n }function Ml(a) {\n a = a | 0;return (c[(xl() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Nl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;Ol(f, d);f = Pl(f, d) | 0;ob[e & 31](a, f);l = g;return;\n }function Ol(a, b) {\n a = a | 0;b = b | 0;return;\n }function Pl(a, b) {\n a = a | 0;b = b | 0;return Ql(b) | 0;\n }function Ql(a) {\n a = a | 0;return a | 0;\n }function Rl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Sl(a, d, f, 0);l = e;return;\n }function Sl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Tl() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Ul(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Vl(g, e) | 0, e);l = f;return;\n }function Tl() {\n var b = 0,\n d = 0;if (!(a[7696] | 0)) {\n am(9484);Ha(33, 9484, o | 0) | 0;d = 7696;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9484) | 0)) {\n b = 9484;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));am(9484);\n }return 9484;\n }function Ul(a) {\n a = a | 0;return 0;\n }function Vl(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Tl() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Wl(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Xl(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Wl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Xl(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Yl(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Zl(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Wl(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;_l(a, i);$l(i);l = k;return;\n }\n }function Yl(a) {\n a = a | 0;return 357913941;\n }function Zl(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function _l(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function $l(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function am(a) {\n a = a | 0;dm(a);return;\n }function bm(a) {\n a = a | 0;cm(a + 24 | 0);return;\n }function cm(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function dm(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 1, b, em() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function em() {\n return 1212;\n }function fm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;g = f + 8 | 0;h = f;i = gm(a) | 0;a = c[i + 4 >> 2] | 0;c[h >> 2] = c[i >> 2];c[h + 4 >> 2] = a;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = c[h + 4 >> 2];hm(b, g, d, e);l = f;return;\n }function gm(a) {\n a = a | 0;return (c[(Tl() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function hm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;i = l;l = l + 16 | 0;g = i + 1 | 0;h = i;f = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) f = c[(c[a >> 2] | 0) + f >> 2] | 0;Ol(g, d);g = Pl(g, d) | 0;Gk(h, e);h = Hk(h, e) | 0;Eb[f & 15](a, g, h);l = i;return;\n }function im(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];jm(a, d, f, 1);l = e;return;\n }function jm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = km() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = lm(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, mm(g, e) | 0, e);l = f;return;\n }function km() {\n var b = 0,\n d = 0;if (!(a[7704] | 0)) {\n tm(9520);Ha(34, 9520, o | 0) | 0;d = 7704;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9520) | 0)) {\n b = 9520;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));tm(9520);\n }return 9520;\n }function lm(a) {\n a = a | 0;return 0;\n }function mm(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = km() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];nm(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n om(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function nm(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function om(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = pm(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;qm(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];nm(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;rm(a, i);sm(i);l = k;return;\n }\n }function pm(a) {\n a = a | 0;return 357913941;\n }function qm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function rm(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function sm(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function tm(a) {\n a = a | 0;wm(a);return;\n }function um(a) {\n a = a | 0;vm(a + 24 | 0);return;\n }function vm(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function wm(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 1, b, xm() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function xm() {\n return 1224;\n }function ym(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0.0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;g = f + 8 | 0;h = f;i = zm(a) | 0;a = c[i + 4 >> 2] | 0;c[h >> 2] = c[i >> 2];c[h + 4 >> 2] = a;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = c[h + 4 >> 2];e = +Am(b, g, d);l = f;return +e;\n }function zm(a) {\n a = a | 0;return (c[(km() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Am(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0.0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;tj(f, d);f = uj(f, d) | 0;h = +ch(+zb[e & 7](a, f));l = g;return +h;\n }function Bm(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Cm(a, d, f, 1);l = e;return;\n }function Cm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Dm() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Em(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Fm(g, e) | 0, e);l = f;return;\n }function Dm() {\n var b = 0,\n d = 0;if (!(a[7712] | 0)) {\n Mm(9556);Ha(35, 9556, o | 0) | 0;d = 7712;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9556) | 0)) {\n b = 9556;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Mm(9556);\n }return 9556;\n }function Em(a) {\n a = a | 0;return 0;\n }function Fm(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Dm() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Gm(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Hm(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Gm(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Hm(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Im(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Jm(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Gm(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Km(a, i);Lm(i);l = k;return;\n }\n }function Im(a) {\n a = a | 0;return 357913941;\n }function Jm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Km(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Lm(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Mm(a) {\n a = a | 0;Pm(a);return;\n }function Nm(a) {\n a = a | 0;Om(a + 24 | 0);return;\n }function Om(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Pm(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 5, b, Qm() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Qm() {\n return 1232;\n }function Rm(a, b) {\n a = a | 0;b = b | 0;var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Sm(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];d = +Tm(b, f);l = e;return +d;\n }function Sm(a) {\n a = a | 0;return (c[(Dm() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Tm(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;return + +ch(+ub[d & 15](a));\n }function Um(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Vm(a, d, f, 1);l = e;return;\n }function Vm(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Wm() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Xm(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Ym(g, e) | 0, e);l = f;return;\n }function Wm() {\n var b = 0,\n d = 0;if (!(a[7720] | 0)) {\n dn(9592);Ha(36, 9592, o | 0) | 0;d = 7720;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9592) | 0)) {\n b = 9592;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));dn(9592);\n }return 9592;\n }function Xm(a) {\n a = a | 0;return 0;\n }function Ym(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Wm() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Zm(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n _m(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Zm(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function _m(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = $m(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;an(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Zm(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;bn(a, i);cn(i);l = k;return;\n }\n }function $m(a) {\n a = a | 0;return 357913941;\n }function an(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function bn(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function cn(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function dn(a) {\n a = a | 0;gn(a);return;\n }function en(a) {\n a = a | 0;fn(a + 24 | 0);return;\n }function fn(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function gn(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 7, b, hn() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function hn() {\n return 1276;\n }function jn(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = kn(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = ln(b, e) | 0;l = d;return b | 0;\n }function kn(a) {\n a = a | 0;return (c[(Wm() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function ln(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 16 | 0;e = f;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;ob[d & 31](e, a);e = mn(e) | 0;l = f;return e | 0;\n }function mn(a) {\n a = a | 0;var b = 0,\n c = 0,\n d = 0,\n e = 0;e = l;l = l + 32 | 0;b = e + 12 | 0;c = e;d = Di(nn() | 0) | 0;if (!d) a = pn(a) | 0;else {\n Ei(b, d);Fi(c, b);on(a, c);a = Hi(b) | 0;\n }l = e;return a | 0;\n }function nn() {\n var b = 0;if (!(a[7736] | 0)) {\n An(9640);Ha(25, 9640, o | 0) | 0;b = 7736;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 9640;\n }function on(a, b) {\n a = a | 0;b = b | 0;un(b, a, a + 8 | 0) | 0;return;\n }\n function pn(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;d = l;l = l + 16 | 0;f = d + 4 | 0;h = d;e = jy(8) | 0;b = e;i = qC(16) | 0;c[i >> 2] = c[a >> 2];c[i + 4 >> 2] = c[a + 4 >> 2];c[i + 8 >> 2] = c[a + 8 >> 2];c[i + 12 >> 2] = c[a + 12 >> 2];g = b + 4 | 0;c[g >> 2] = i;a = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];qn(a, g, f);c[e >> 2] = a;l = d;return b | 0;\n }function qn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;d = qC(16) | 0;c[d + 4 >> 2] = 0;c[d + 8 >> 2] = 0;c[d >> 2] = 1244;c[d + 12 >> 2] = b;c[a + 4 >> 2] = d;return;\n }function rn(a) {\n a = a | 0;kC(a);sC(a);return;\n }function sn(a) {\n a = a | 0;a = c[a + 12 >> 2] | 0;if (a | 0) sC(a);return;\n }function tn(a) {\n a = a | 0;sC(a);return;\n }function un(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;b = vn(c[a >> 2] | 0, b, d) | 0;d = a + 4 | 0;c[(c[d >> 2] | 0) + 8 >> 2] = b;return c[(c[d >> 2] | 0) + 8 >> 2] | 0;\n }function vn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e;UA(f);a = Sg(a) | 0;d = wn(a, c[b >> 2] | 0, +h[d >> 3]) | 0;WA(f);l = e;return d | 0;\n }function wn(a, b, c) {\n a = a | 0;b = b | 0;c = +c;var d = 0;d = Vg(xn() | 0) | 0;b = Xg(b) | 0;return za(0, d | 0, a | 0, b | 0, + +Wg(c)) | 0;\n }function xn() {\n var b = 0;if (!(a[7728] | 0)) {\n yn(9628);b = 7728;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 9628;\n }function yn(a) {\n a = a | 0;fh(a, zn() | 0, 2);return;\n }function zn() {\n return 1264;\n }function An(a) {\n a = a | 0;Zi(a);return;\n }function Bn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Cn(a, d, f, 1);l = e;return;\n }function Cn(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Dn() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = En(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Fn(g, e) | 0, e);l = f;return;\n }function Dn() {\n var b = 0,\n d = 0;if (!(a[7744] | 0)) {\n Mn(9684);Ha(37, 9684, o | 0) | 0;d = 7744;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9684) | 0)) {\n b = 9684;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Mn(9684);\n }return 9684;\n }function En(a) {\n a = a | 0;return 0;\n }function Fn(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Dn() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Gn(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Hn(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Gn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Hn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = In(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Jn(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Gn(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Kn(a, i);Ln(i);l = k;return;\n }\n }function In(a) {\n a = a | 0;return 357913941;\n }function Jn(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Kn(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Ln(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Mn(a) {\n a = a | 0;Pn(a);return;\n }function Nn(a) {\n a = a | 0;On(a + 24 | 0);return;\n }function On(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Pn(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 5, b, Qn() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Qn() {\n return 1280;\n }function Rn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Sn(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];d = Tn(b, f, d) | 0;l = e;return d | 0;\n }function Sn(a) {\n a = a | 0;return (c[(Dn() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Tn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;h = l;l = l + 32 | 0;f = h;g = h + 16 | 0;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;tj(g, d);g = uj(g, d) | 0;Eb[e & 15](f, a, g);g = mn(f) | 0;l = h;return g | 0;\n }function Un(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Vn(a, d, f, 1);l = e;return;\n }function Vn(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Wn() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Xn(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Yn(g, e) | 0, e);l = f;return;\n }function Wn() {\n var b = 0,\n d = 0;if (!(a[7752] | 0)) {\n eo(9720);Ha(38, 9720, o | 0) | 0;d = 7752;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9720) | 0)) {\n b = 9720;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));eo(9720);\n }return 9720;\n }function Xn(a) {\n a = a | 0;return 0;\n }function Yn(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Wn() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Zn(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n _n(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Zn(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function _n(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = $n(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;ao(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Zn(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;bo(a, i);co(i);l = k;return;\n }\n }function $n(a) {\n a = a | 0;return 357913941;\n }function ao(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function bo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function co(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function eo(a) {\n a = a | 0;ho(a);return;\n }function fo(a) {\n a = a | 0;go(a + 24 | 0);return;\n }function go(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function ho(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 8, b, io() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function io() {\n return 1288;\n }function jo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = ko(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];b = lo(b, e) | 0;l = d;return b | 0;\n }function ko(a) {\n a = a | 0;return (c[(Wn() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function lo(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;return bh(pb[d & 31](a) | 0) | 0;\n }function mo(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];no(a, d, f, 0);l = e;return;\n }function no(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = oo() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = po(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, qo(g, e) | 0, e);l = f;return;\n }function oo() {\n var b = 0,\n d = 0;if (!(a[7760] | 0)) {\n xo(9756);Ha(39, 9756, o | 0) | 0;d = 7760;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9756) | 0)) {\n b = 9756;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));xo(9756);\n }return 9756;\n }function po(a) {\n a = a | 0;return 0;\n }function qo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = oo() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];ro(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n so(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function ro(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function so(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = to(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;uo(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];ro(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;vo(a, i);wo(i);l = k;return;\n }\n }function to(a) {\n a = a | 0;return 357913941;\n }function uo(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function vo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function wo(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function xo(a) {\n a = a | 0;Ao(a);return;\n }function yo(a) {\n a = a | 0;zo(a + 24 | 0);return;\n }function zo(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Ao(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 8, b, Bo() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Bo() {\n return 1292;\n }function Co(a, b, d) {\n a = a | 0;b = b | 0;d = +d;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Do(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Eo(b, f, d);l = e;return;\n }function Do(a) {\n a = a | 0;return (c[(oo() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Eo(a, b, d) {\n a = a | 0;b = b | 0;d = +d;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;rj(f, d);d = +sj(f, d);lb[e & 31](a, d);l = g;return;\n }function Fo(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Go(a, d, f, 0);l = e;return;\n }function Go(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Ho() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Io(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Jo(g, e) | 0, e);l = f;return;\n }function Ho() {\n var b = 0,\n d = 0;if (!(a[7768] | 0)) {\n Qo(9792);Ha(40, 9792, o | 0) | 0;d = 7768;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9792) | 0)) {\n b = 9792;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Qo(9792);\n }return 9792;\n }function Io(a) {\n a = a | 0;return 0;\n }function Jo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Ho() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Ko(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Lo(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Ko(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Lo(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Mo(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;No(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Ko(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Oo(a, i);Po(i);l = k;return;\n }\n }function Mo(a) {\n a = a | 0;return 357913941;\n }function No(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Oo(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Po(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Qo(a) {\n a = a | 0;To(a);return;\n }function Ro(a) {\n a = a | 0;So(a + 24 | 0);return;\n }function So(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function To(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 1, b, Uo() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Uo() {\n return 1300;\n }function Vo(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = +e;var f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;g = f + 8 | 0;h = f;i = Wo(a) | 0;a = c[i + 4 >> 2] | 0;c[h >> 2] = c[i >> 2];c[h + 4 >> 2] = a;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = c[h + 4 >> 2];Xo(b, g, d, e);l = f;return;\n }function Wo(a) {\n a = a | 0;return (c[(Ho() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Xo(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = +e;var f = 0,\n g = 0,\n h = 0,\n i = 0;i = l;l = l + 16 | 0;g = i + 1 | 0;h = i;f = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) f = c[(c[a >> 2] | 0) + f >> 2] | 0;tj(g, d);g = uj(g, d) | 0;rj(h, e);e = +sj(h, e);Gb[f & 15](a, g, e);l = i;return;\n }function Yo(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Zo(a, d, f, 0);l = e;return;\n }function Zo(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = _o() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = $o(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, ap(g, e) | 0, e);l = f;return;\n }function _o() {\n var b = 0,\n d = 0;if (!(a[7776] | 0)) {\n hp(9828);Ha(41, 9828, o | 0) | 0;d = 7776;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9828) | 0)) {\n b = 9828;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));hp(9828);\n }return 9828;\n }function $o(a) {\n a = a | 0;return 0;\n }function ap(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = _o() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];bp(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n cp(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function bp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function cp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = dp(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;ep(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];bp(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;fp(a, i);gp(i);l = k;return;\n }\n }function dp(a) {\n a = a | 0;return 357913941;\n }function ep(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function fp(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function gp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function hp(a) {\n a = a | 0;kp(a);return;\n }function ip(a) {\n a = a | 0;jp(a + 24 | 0);return;\n }function jp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function kp(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 7, b, lp() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function lp() {\n return 1312;\n }function mp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = np(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];op(b, f, d);l = e;return;\n }function np(a) {\n a = a | 0;return (c[(_o() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function op(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;tj(f, d);f = uj(f, d) | 0;ob[e & 31](a, f);l = g;return;\n }function pp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];qp(a, d, f, 0);l = e;return;\n }function qp(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = rp() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = sp(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, tp(g, e) | 0, e);l = f;return;\n }function rp() {\n var b = 0,\n d = 0;if (!(a[7784] | 0)) {\n Ap(9864);Ha(42, 9864, o | 0) | 0;d = 7784;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9864) | 0)) {\n b = 9864;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Ap(9864);\n }return 9864;\n }function sp(a) {\n a = a | 0;return 0;\n }function tp(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = rp() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];up(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n vp(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function up(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function vp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = wp(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;xp(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];up(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;yp(a, i);zp(i);l = k;return;\n }\n }function wp(a) {\n a = a | 0;return 357913941;\n }function xp(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function yp(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function zp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Ap(a) {\n a = a | 0;Dp(a);return;\n }function Bp(a) {\n a = a | 0;Cp(a + 24 | 0);return;\n }function Cp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Dp(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 8, b, Ep() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Ep() {\n return 1320;\n }function Fp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Gp(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Hp(b, f, d);l = e;return;\n }function Gp(a) {\n a = a | 0;return (c[(rp() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Hp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;Ip(f, d);f = Jp(f, d) | 0;ob[e & 31](a, f);l = g;return;\n }function Ip(a, b) {\n a = a | 0;b = b | 0;return;\n }function Jp(a, b) {\n a = a | 0;b = b | 0;return Kp(b) | 0;\n }function Kp(a) {\n a = a | 0;return a | 0;\n }function Lp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Mp(a, d, f, 0);l = e;return;\n }function Mp(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Np() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Op(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Pp(g, e) | 0, e);l = f;return;\n }function Np() {\n var b = 0,\n d = 0;if (!(a[7792] | 0)) {\n Wp(9900);Ha(43, 9900, o | 0) | 0;d = 7792;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9900) | 0)) {\n b = 9900;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Wp(9900);\n }return 9900;\n }function Op(a) {\n a = a | 0;return 0;\n }function Pp(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Np() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Qp(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Rp(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Qp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Rp(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Sp(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Tp(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Qp(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Up(a, i);Vp(i);l = k;return;\n }\n }function Sp(a) {\n a = a | 0;return 357913941;\n }function Tp(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Up(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Vp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Wp(a) {\n a = a | 0;Zp(a);return;\n }function Xp(a) {\n a = a | 0;Yp(a + 24 | 0);return;\n }function Yp(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Zp(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 22, b, _p() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function _p() {\n return 1344;\n }function $p(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0;d = l;l = l + 16 | 0;e = d + 8 | 0;f = d;g = aq(a) | 0;a = c[g + 4 >> 2] | 0;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = a;c[e >> 2] = c[f >> 2];c[e + 4 >> 2] = c[f + 4 >> 2];bq(b, e);l = d;return;\n }function aq(a) {\n a = a | 0;return (c[(Np() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function bq(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) d = c[(c[a >> 2] | 0) + d >> 2] | 0;nb[d & 127](a);return;\n }function cq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = dq() | 0;a = eq(d) | 0;fi(g, b, f, a, fq(d, e) | 0, e);return;\n }function dq() {\n var b = 0,\n d = 0;if (!(a[7800] | 0)) {\n mq(9936);Ha(44, 9936, o | 0) | 0;d = 7800;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9936) | 0)) {\n b = 9936;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));mq(9936);\n }return 9936;\n }function eq(a) {\n a = a | 0;return a | 0;\n }function fq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = dq() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n gq(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n hq(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function gq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function hq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = iq(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;jq(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;gq(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;kq(a, f);lq(f);l = i;return;\n }\n }function iq(a) {\n a = a | 0;return 536870911;\n }function jq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function kq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function lq(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function mq(a) {\n a = a | 0;pq(a);return;\n }function nq(a) {\n a = a | 0;oq(a + 24 | 0);return;\n }function oq(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function pq(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 23, b, Kl() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function qq(a, b) {\n a = a | 0;b = b | 0;sq(c[(rq(a) | 0) >> 2] | 0, b);return;\n }function rq(a) {\n a = a | 0;return (c[(dq() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function sq(a, b) {\n a = a | 0;b = b | 0;var c = 0,\n d = 0;c = l;l = l + 16 | 0;d = c;Ol(d, b);b = Pl(d, b) | 0;nb[a & 127](b);l = c;return;\n }function tq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = uq() | 0;a = vq(d) | 0;fi(g, b, f, a, wq(d, e) | 0, e);return;\n }function uq() {\n var b = 0,\n d = 0;if (!(a[7808] | 0)) {\n Dq(9972);Ha(45, 9972, o | 0) | 0;d = 7808;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(9972) | 0)) {\n b = 9972;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Dq(9972);\n }return 9972;\n }function vq(a) {\n a = a | 0;return a | 0;\n }function wq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = uq() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n xq(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n yq(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function xq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function yq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = zq(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Aq(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;xq(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Bq(a, f);Cq(f);l = i;return;\n }\n }function zq(a) {\n a = a | 0;return 536870911;\n }function Aq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Bq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Cq(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Dq(a) {\n a = a | 0;Gq(a);return;\n }function Eq(a) {\n a = a | 0;Fq(a + 24 | 0);return;\n }function Fq(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Gq(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 9, b, Hq() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Hq() {\n return 1348;\n }function Iq(a, b) {\n a = a | 0;b = b | 0;return Kq(c[(Jq(a) | 0) >> 2] | 0, b) | 0;\n }function Jq(a) {\n a = a | 0;return (c[(uq() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function Kq(a, b) {\n a = a | 0;b = b | 0;var c = 0,\n d = 0;c = l;l = l + 16 | 0;d = c;Lq(d, b);b = Mq(d, b) | 0;b = Ik(pb[a & 31](b) | 0) | 0;l = c;return b | 0;\n }function Lq(a, b) {\n a = a | 0;b = b | 0;return;\n }function Mq(a, b) {\n a = a | 0;b = b | 0;return Nq(b) | 0;\n }function Nq(a) {\n a = a | 0;return a | 0;\n }function Oq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Pq() | 0;a = Qq(d) | 0;fi(g, b, f, a, Rq(d, e) | 0, e);return;\n }function Pq() {\n var b = 0,\n d = 0;if (!(a[7816] | 0)) {\n Yq(10008);Ha(46, 10008, o | 0) | 0;d = 7816;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10008) | 0)) {\n b = 10008;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Yq(10008);\n }return 10008;\n }function Qq(a) {\n a = a | 0;return a | 0;\n }function Rq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Pq() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n Sq(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n Tq(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function Sq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Tq(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = Uq(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Vq(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;Sq(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Wq(a, f);Xq(f);l = i;return;\n }\n }function Uq(a) {\n a = a | 0;return 536870911;\n }function Vq(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Wq(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Xq(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Yq(a) {\n a = a | 0;$q(a);return;\n }function Zq(a) {\n a = a | 0;_q(a + 24 | 0);return;\n }function _q(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function $q(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 15, b, Zk() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function ar(a) {\n a = a | 0;return cr(c[(br(a) | 0) >> 2] | 0) | 0;\n }function br(a) {\n a = a | 0;return (c[(Pq() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function cr(a) {\n a = a | 0;return Ik(Ab[a & 7]() | 0) | 0;\n }function dr() {\n var b = 0;if (!(a[7832] | 0)) {\n nr(10052);Ha(25, 10052, o | 0) | 0;b = 7832;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10052;\n }function er(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = fr() | 0;c[a + 4 >> 2] = gr() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = hr() | 0;c[a + 32 >> 2] = 2;return;\n }function fr() {\n return 11709;\n }function gr() {\n return 1188;\n }function hr() {\n return lr() | 0;\n }function ir(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n kr(c);sC(c);\n }\n } else if (b | 0) {\n uf(b);sC(b);\n }return;\n }function jr(a, b) {\n a = a | 0;b = b | 0;return b & a | 0;\n }function kr(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function lr() {\n var b = 0;if (!(a[7824] | 0)) {\n c[2511] = mr() | 0;c[2512] = 0;b = 7824;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10044;\n }function mr() {\n return 0;\n }function nr(a) {\n a = a | 0;Zi(a);return;\n }function or(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;b = l;l = l + 32 | 0;d = b + 24 | 0;g = b + 16 | 0;f = b + 8 | 0;e = b;pr(a, 4827);qr(a, 4834, 3) | 0;rr(a, 3682, 47) | 0;c[g >> 2] = 9;c[g + 4 >> 2] = 0;c[d >> 2] = c[g >> 2];c[d + 4 >> 2] = c[g + 4 >> 2];sr(a, 4841, d) | 0;c[f >> 2] = 1;c[f + 4 >> 2] = 0;c[d >> 2] = c[f >> 2];c[d + 4 >> 2] = c[f + 4 >> 2];tr(a, 4871, d) | 0;c[e >> 2] = 10;c[e + 4 >> 2] = 0;c[d >> 2] = c[e >> 2];c[d + 4 >> 2] = c[e + 4 >> 2];ur(a, 4891, d) | 0;l = b;return;\n }function pr(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = nt() | 0;c[a >> 2] = d;ot(d, b);Hv(c[a >> 2] | 0);return;\n }function qr(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Ws(a, ai(b) | 0, c, 0);return a | 0;\n }function rr(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Es(a, ai(b) | 0, c, 0);return a | 0;\n }function sr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];is(a, b, f);l = e;return a | 0;\n }function tr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Or(a, b, f);l = e;return a | 0;\n }function ur(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = c[d + 4 >> 2] | 0;c[g >> 2] = c[d >> 2];c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];vr(a, b, f);l = e;return a | 0;\n }function vr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];wr(a, d, f, 1);l = e;return;\n }function wr(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = xr() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = yr(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, zr(g, e) | 0, e);l = f;return;\n }function xr() {\n var b = 0,\n d = 0;if (!(a[7840] | 0)) {\n Gr(10100);Ha(48, 10100, o | 0) | 0;d = 7840;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10100) | 0)) {\n b = 10100;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Gr(10100);\n }return 10100;\n }function yr(a) {\n a = a | 0;return 0;\n }function zr(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = xr() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Ar(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Br(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Ar(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Br(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Cr(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Dr(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Ar(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Er(a, i);Fr(i);l = k;return;\n }\n }function Cr(a) {\n a = a | 0;return 357913941;\n }function Dr(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Er(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Fr(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Gr(a) {\n a = a | 0;Jr(a);return;\n }function Hr(a) {\n a = a | 0;Ir(a + 24 | 0);return;\n }function Ir(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function Jr(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 6, b, Kr() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Kr() {\n return 1364;\n }function Lr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = Mr(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];d = Nr(b, f, d) | 0;l = e;return d | 0;\n }function Mr(a) {\n a = a | 0;return (c[(xr() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function Nr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;tj(f, d);f = uj(f, d) | 0;f = Qj(wb[e & 15](a, f) | 0) | 0;l = g;return f | 0;\n }function Or(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];Pr(a, d, f, 0);l = e;return;\n }function Pr(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = Qr() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = Rr(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, Sr(g, e) | 0, e);l = f;return;\n }function Qr() {\n var b = 0,\n d = 0;if (!(a[7848] | 0)) {\n Zr(10136);Ha(49, 10136, o | 0) | 0;d = 7848;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10136) | 0)) {\n b = 10136;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Zr(10136);\n }return 10136;\n }function Rr(a) {\n a = a | 0;return 0;\n }function Sr(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = Qr() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];Tr(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n Ur(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function Tr(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function Ur(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = Vr(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;Wr(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];Tr(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;Xr(a, i);Yr(i);l = k;return;\n }\n }function Vr(a) {\n a = a | 0;return 357913941;\n }function Wr(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function Xr(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Yr(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Zr(a) {\n a = a | 0;as(a);return;\n }function _r(a) {\n a = a | 0;$r(a + 24 | 0);return;\n }function $r(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function as(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 9, b, bs() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function bs() {\n return 1372;\n }function cs(a, b, d) {\n a = a | 0;b = b | 0;d = +d;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;h = ds(a) | 0;a = c[h + 4 >> 2] | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = a;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];es(b, f, d);l = e;return;\n }function ds(a) {\n a = a | 0;return (c[(Qr() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function es(a, b, d) {\n a = a | 0;b = b | 0;d = +d;var e = 0,\n f = 0,\n g = 0,\n h = ib;g = l;l = l + 16 | 0;f = g;e = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) e = c[(c[a >> 2] | 0) + e >> 2] | 0;fs(f, d);h = T(gs(f, d));kb[e & 1](a, h);l = g;return;\n }function fs(a, b) {\n a = a | 0;b = +b;return;\n }function gs(a, b) {\n a = a | 0;b = +b;return T(hs(b));\n }function hs(a) {\n a = +a;return T(a);\n }function is(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 16 | 0;f = e + 8 | 0;g = e;i = c[d >> 2] | 0;h = c[d + 4 >> 2] | 0;d = ai(b) | 0;c[g >> 2] = i;c[g + 4 >> 2] = h;c[f >> 2] = c[g >> 2];c[f + 4 >> 2] = c[g + 4 >> 2];js(a, d, f, 0);l = e;return;\n }function js(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;f = l;l = l + 32 | 0;g = f + 16 | 0;m = f + 8 | 0;i = f;k = c[d >> 2] | 0;j = c[d + 4 >> 2] | 0;h = c[a >> 2] | 0;a = ks() | 0;c[m >> 2] = k;c[m + 4 >> 2] = j;c[g >> 2] = c[m >> 2];c[g + 4 >> 2] = c[m + 4 >> 2];d = ls(g) | 0;c[i >> 2] = k;c[i + 4 >> 2] = j;c[g >> 2] = c[i >> 2];c[g + 4 >> 2] = c[i + 4 >> 2];fi(h, b, a, d, ms(g, e) | 0, e);l = f;return;\n }function ks() {\n var b = 0,\n d = 0;if (!(a[7856] | 0)) {\n ts(10172);Ha(50, 10172, o | 0) | 0;d = 7856;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10172) | 0)) {\n b = 10172;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));ts(10172);\n }return 10172;\n }function ls(a) {\n a = a | 0;return 0;\n }function ms(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;m = l;l = l + 32 | 0;f = m + 24 | 0;h = m + 16 | 0;i = m;j = m + 8 | 0;g = c[a >> 2] | 0;e = c[a + 4 >> 2] | 0;c[i >> 2] = g;c[i + 4 >> 2] = e;n = ks() | 0;k = n + 24 | 0;a = ji(b, 4) | 0;c[j >> 2] = a;b = n + 28 | 0;d = c[b >> 2] | 0;if (d >>> 0 < (c[n + 32 >> 2] | 0) >>> 0) {\n c[h >> 2] = g;c[h + 4 >> 2] = e;c[f >> 2] = c[h >> 2];c[f + 4 >> 2] = c[h + 4 >> 2];ns(d, f, a);a = (c[b >> 2] | 0) + 12 | 0;c[b >> 2] = a;\n } else {\n os(k, i, j);a = c[b >> 2] | 0;\n }l = m;return ((a - (c[k >> 2] | 0) | 0) / 12 | 0) + -1 | 0;\n }function ns(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0;e = c[b + 4 >> 2] | 0;c[a >> 2] = c[b >> 2];c[a + 4 >> 2] = e;c[a + 8 >> 2] = d;return;\n }function os(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0;k = l;l = l + 48 | 0;e = k + 32 | 0;h = k + 24 | 0;i = k;j = a + 4 | 0;f = (((c[j >> 2] | 0) - (c[a >> 2] | 0) | 0) / 12 | 0) + 1 | 0;g = ps(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n m = c[a >> 2] | 0;o = ((c[a + 8 >> 2] | 0) - m | 0) / 12 | 0;n = o << 1;qs(i, o >>> 0 < g >>> 1 >>> 0 ? n >>> 0 < f >>> 0 ? f : n : g, ((c[j >> 2] | 0) - m | 0) / 12 | 0, a + 8 | 0);j = i + 8 | 0;g = c[j >> 2] | 0;f = c[b + 4 >> 2] | 0;d = c[d >> 2] | 0;c[h >> 2] = c[b >> 2];c[h + 4 >> 2] = f;c[e >> 2] = c[h >> 2];c[e + 4 >> 2] = c[h + 4 >> 2];ns(g, e, d);c[j >> 2] = (c[j >> 2] | 0) + 12;rs(a, i);ss(i);l = k;return;\n }\n }function ps(a) {\n a = a | 0;return 357913941;\n }function qs(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 357913941) Ta();else {\n f = qC(b * 12 | 0) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d * 12 | 0) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b * 12 | 0);return;\n }function rs(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (((f | 0) / -12 | 0) * 12 | 0) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function ss(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~(((e + -12 - b | 0) >>> 0) / 12 | 0) * 12 | 0);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function ts(a) {\n a = a | 0;ws(a);return;\n }function us(a) {\n a = a | 0;vs(a + 24 | 0);return;\n }function vs(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~(((b + -12 - e | 0) >>> 0) / 12 | 0) * 12 | 0);sC(d);\n }return;\n }function ws(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 2, 3, b, xs() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function xs() {\n return 1380;\n }function ys(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;g = f + 8 | 0;h = f;i = zs(a) | 0;a = c[i + 4 >> 2] | 0;c[h >> 2] = c[i >> 2];c[h + 4 >> 2] = a;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = c[h + 4 >> 2];As(b, g, d, e);l = f;return;\n }function zs(a) {\n a = a | 0;return (c[(ks() | 0) + 24 >> 2] | 0) + (a * 12 | 0) | 0;\n }function As(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;i = l;l = l + 16 | 0;g = i + 1 | 0;h = i;f = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;a = a + (b >> 1) | 0;if (b & 1) f = c[(c[a >> 2] | 0) + f >> 2] | 0;tj(g, d);g = uj(g, d) | 0;Bs(h, e);h = Cs(h, e) | 0;Eb[f & 15](a, g, h);l = i;return;\n }function Bs(a, b) {\n a = a | 0;b = b | 0;return;\n }function Cs(a, b) {\n a = a | 0;b = b | 0;return Ds(b) | 0;\n }function Ds(a) {\n a = a | 0;return (a | 0) != 0 | 0;\n }function Es(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Fs() | 0;a = Gs(d) | 0;fi(g, b, f, a, Hs(d, e) | 0, e);return;\n }function Fs() {\n var b = 0,\n d = 0;if (!(a[7864] | 0)) {\n Os(10208);Ha(51, 10208, o | 0) | 0;d = 7864;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10208) | 0)) {\n b = 10208;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Os(10208);\n }return 10208;\n }function Gs(a) {\n a = a | 0;return a | 0;\n }function Hs(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Fs() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n Is(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n Js(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function Is(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Js(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = Ks(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Ls(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;Is(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Ms(a, f);Ns(f);l = i;return;\n }\n }function Ks(a) {\n a = a | 0;return 536870911;\n }function Ls(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Ms(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Ns(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Os(a) {\n a = a | 0;Rs(a);return;\n }function Ps(a) {\n a = a | 0;Qs(a + 24 | 0);return;\n }function Qs(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Rs(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 24, b, Ss() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Ss() {\n return 1392;\n }function Ts(a, b) {\n a = a | 0;b = b | 0;Vs(c[(Us(a) | 0) >> 2] | 0, b);return;\n }function Us(a) {\n a = a | 0;return (c[(Fs() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function Vs(a, b) {\n a = a | 0;b = b | 0;var c = 0,\n d = 0;c = l;l = l + 16 | 0;d = c;Lq(d, b);b = Mq(d, b) | 0;nb[a & 127](b);l = c;return;\n }function Ws(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Xs() | 0;a = Ys(d) | 0;fi(g, b, f, a, Zs(d, e) | 0, e);return;\n }function Xs() {\n var b = 0,\n d = 0;if (!(a[7872] | 0)) {\n et(10244);Ha(52, 10244, o | 0) | 0;d = 7872;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10244) | 0)) {\n b = 10244;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));et(10244);\n }return 10244;\n }function Ys(a) {\n a = a | 0;return a | 0;\n }function Zs(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Xs() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n _s(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n $s(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function _s(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function $s(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = at(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;bt(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;_s(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;ct(a, f);dt(f);l = i;return;\n }\n }function at(a) {\n a = a | 0;return 536870911;\n }function bt(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function ct(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function dt(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function et(a) {\n a = a | 0;ht(a);return;\n }function ft(a) {\n a = a | 0;gt(a + 24 | 0);return;\n }function gt(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function ht(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 16, b, it() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function it() {\n return 1400;\n }function jt(a) {\n a = a | 0;return lt(c[(kt(a) | 0) >> 2] | 0) | 0;\n }function kt(a) {\n a = a | 0;return (c[(Xs() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function lt(a) {\n a = a | 0;return mt(Ab[a & 7]() | 0) | 0;\n }function mt(a) {\n a = a | 0;return a | 0;\n }function nt() {\n var b = 0;if (!(a[7880] | 0)) {\n ut(10280);Ha(25, 10280, o | 0) | 0;b = 7880;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10280;\n }function ot(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = pt() | 0;c[a + 4 >> 2] = qt() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = rt() | 0;c[a + 32 >> 2] = 4;return;\n }function pt() {\n return 11711;\n }function qt() {\n return 1356;\n }function rt() {\n return lr() | 0;\n }function st(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n tt(c);sC(c);\n }\n } else if (b | 0) {\n mf(b);sC(b);\n }return;\n }function tt(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function ut(a) {\n a = a | 0;Zi(a);return;\n }function vt(a) {\n a = a | 0;wt(a, 4920);xt(a) | 0;yt(a) | 0;return;\n }function wt(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = nn() | 0;c[a >> 2] = d;Yt(d, b);Hv(c[a >> 2] | 0);return;\n }function xt(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, Mt() | 0);return a | 0;\n }function yt(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, zt() | 0);return a | 0;\n }function zt() {\n var b = 0;if (!(a[7888] | 0)) {\n Bt(10328);Ha(53, 10328, o | 0) | 0;b = 7888;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10328) | 0)) Bt(10328);return 10328;\n }function At(a, b) {\n a = a | 0;b = b | 0;fi(a, 0, b, 0, 0, 0);return;\n }function Bt(a) {\n a = a | 0;Et(a);Gt(a, 10);return;\n }function Ct(a) {\n a = a | 0;Dt(a + 24 | 0);return;\n }function Dt(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Et(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 1, b, Jt() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Ft(a, b, c) {\n a = a | 0;b = b | 0;c = +c;Ht(a, b, c);return;\n }function Gt(a, b) {\n a = a | 0;b = b | 0;c[a + 20 >> 2] = b;return;\n }function Ht(a, b, d) {\n a = a | 0;b = b | 0;d = +d;var e = 0,\n f = 0,\n g = 0,\n i = 0,\n j = 0;e = l;l = l + 16 | 0;g = e + 8 | 0;j = e + 13 | 0;f = e;i = e + 12 | 0;tj(j, b);c[g >> 2] = uj(j, b) | 0;rj(i, d);h[f >> 3] = +sj(i, d);It(a, g, f);l = e;return;\n }function It(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;mg(b + 8 | 0, c[d >> 2] | 0, +h[e >> 3]);a[b + 24 >> 0] = 1;return;\n }function Jt() {\n return 1404;\n }function Kt(a, b) {\n a = a | 0;b = +b;return Lt(a, b) | 0;\n }function Lt(a, b) {\n a = a | 0;b = +b;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;e = l;l = l + 16 | 0;g = e + 4 | 0;h = e + 8 | 0;i = e;f = jy(8) | 0;d = f;j = qC(16) | 0;tj(g, a);a = uj(g, a) | 0;rj(h, b);mg(j, a, +sj(h, b));h = d + 4 | 0;c[h >> 2] = j;a = qC(8) | 0;h = c[h >> 2] | 0;c[i >> 2] = 0;c[g >> 2] = c[i >> 2];qn(a, h, g);c[f >> 2] = a;l = e;return d | 0;\n }function Mt() {\n var b = 0;if (!(a[7896] | 0)) {\n Nt(10364);Ha(54, 10364, o | 0) | 0;b = 7896;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10364) | 0)) Nt(10364);return 10364;\n }function Nt(a) {\n a = a | 0;Qt(a);Gt(a, 55);return;\n }function Ot(a) {\n a = a | 0;Pt(a + 24 | 0);return;\n }function Pt(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Qt(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 4, b, Vt() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Rt(a) {\n a = a | 0;St(a);return;\n }function St(a) {\n a = a | 0;Tt(a);return;\n }function Tt(b) {\n b = b | 0;Ut(b + 8 | 0);a[b + 24 >> 0] = 1;return;\n }function Ut(a) {\n a = a | 0;c[a >> 2] = 0;h[a + 8 >> 3] = 0.0;return;\n }function Vt() {\n return 1424;\n }function Wt() {\n return Xt() | 0;\n }function Xt() {\n var a = 0,\n b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;b = l;l = l + 16 | 0;f = b + 4 | 0;h = b;d = jy(8) | 0;a = d;e = qC(16) | 0;Ut(e);g = a + 4 | 0;c[g >> 2] = e;e = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];qn(e, g, f);c[d >> 2] = e;l = b;return a | 0;\n }function Yt(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = Zt() | 0;c[a + 4 >> 2] = _t() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = $t() | 0;c[a + 32 >> 2] = 5;return;\n }function Zt() {\n return 11710;\n }function _t() {\n return 1416;\n }function $t() {\n return cu() | 0;\n }function au(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n bu(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function bu(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function cu() {\n var b = 0;if (!(a[7904] | 0)) {\n c[2600] = du() | 0;c[2601] = 0;b = 7904;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10400;\n }function du() {\n return c[357] | 0;\n }function eu(a) {\n a = a | 0;fu(a, 4926);gu(a) | 0;return;\n }function fu(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = Ci() | 0;c[a >> 2] = d;su(d, b);Hv(c[a >> 2] | 0);return;\n }function gu(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, hu() | 0);return a | 0;\n }function hu() {\n var b = 0;if (!(a[7912] | 0)) {\n iu(10412);Ha(56, 10412, o | 0) | 0;b = 7912;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10412) | 0)) iu(10412);return 10412;\n }function iu(a) {\n a = a | 0;lu(a);Gt(a, 57);return;\n }function ju(a) {\n a = a | 0;ku(a + 24 | 0);return;\n }function ku(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function lu(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 5, b, pu() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function mu(a) {\n a = a | 0;nu(a);return;\n }function nu(a) {\n a = a | 0;ou(a);return;\n }function ou(b) {\n b = b | 0;var d = 0,\n e = 0;d = b + 8 | 0;e = d + 48 | 0;do {\n c[d >> 2] = 0;d = d + 4 | 0;\n } while ((d | 0) < (e | 0));a[b + 56 >> 0] = 1;return;\n }function pu() {\n return 1432;\n }function qu() {\n return ru() | 0;\n }function ru() {\n var a = 0,\n b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;h = l;l = l + 16 | 0;a = h + 4 | 0;b = h;d = jy(8) | 0;e = d;f = qC(48) | 0;g = f;i = g + 48 | 0;do {\n c[g >> 2] = 0;g = g + 4 | 0;\n } while ((g | 0) < (i | 0));g = e + 4 | 0;c[g >> 2] = f;i = qC(8) | 0;g = c[g >> 2] | 0;c[b >> 2] = 0;c[a >> 2] = c[b >> 2];Ji(i, g, a);c[d >> 2] = i;l = h;return e | 0;\n }function su(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = tu() | 0;c[a + 4 >> 2] = uu() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = vu() | 0;c[a + 32 >> 2] = 6;return;\n }function tu() {\n return 11704;\n }function uu() {\n return 1436;\n }function vu() {\n return cu() | 0;\n }function wu(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n xu(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function xu(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function yu(a) {\n a = a | 0;zu(a, 4933);Au(a) | 0;Bu(a) | 0;return;\n }function zu(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = cv() | 0;c[a >> 2] = d;dv(d, b);Hv(c[a >> 2] | 0);return;\n }function Au(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, Su() | 0);return a | 0;\n }function Bu(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, Cu() | 0);return a | 0;\n }function Cu() {\n var b = 0;if (!(a[7920] | 0)) {\n Du(10452);Ha(58, 10452, o | 0) | 0;b = 7920;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10452) | 0)) Du(10452);return 10452;\n }function Du(a) {\n a = a | 0;Gu(a);Gt(a, 1);return;\n }function Eu(a) {\n a = a | 0;Fu(a + 24 | 0);return;\n }function Fu(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Gu(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 1, b, Lu() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Hu(a, b, c) {\n a = a | 0;b = +b;c = +c;Iu(a, b, c);return;\n }function Iu(a, b, c) {\n a = a | 0;b = +b;c = +c;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n i = 0;d = l;l = l + 32 | 0;f = d + 8 | 0;i = d + 17 | 0;e = d;g = d + 16 | 0;rj(i, b);h[f >> 3] = +sj(i, b);rj(g, c);h[e >> 3] = +sj(g, c);Ju(a, f, e);l = d;return;\n }function Ju(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;Ku(b + 8 | 0, +h[c >> 3], +h[d >> 3]);a[b + 24 >> 0] = 1;return;\n }function Ku(a, b, c) {\n a = a | 0;b = +b;c = +c;h[a >> 3] = b;h[a + 8 >> 3] = c;return;\n }function Lu() {\n return 1472;\n }function Mu(a, b) {\n a = +a;b = +b;return Nu(a, b) | 0;\n }function Nu(a, b) {\n a = +a;b = +b;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;e = l;l = l + 16 | 0;h = e + 4 | 0;i = e + 8 | 0;j = e;f = jy(8) | 0;d = f;g = qC(16) | 0;rj(h, a);a = +sj(h, a);rj(i, b);Ku(g, a, +sj(i, b));i = d + 4 | 0;c[i >> 2] = g;g = qC(8) | 0;i = c[i >> 2] | 0;c[j >> 2] = 0;c[h >> 2] = c[j >> 2];Ou(g, i, h);c[f >> 2] = g;l = e;return d | 0;\n }function Ou(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;d = qC(16) | 0;c[d + 4 >> 2] = 0;c[d + 8 >> 2] = 0;c[d >> 2] = 1452;c[d + 12 >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Pu(a) {\n a = a | 0;kC(a);sC(a);return;\n }function Qu(a) {\n a = a | 0;a = c[a + 12 >> 2] | 0;if (a | 0) sC(a);return;\n }function Ru(a) {\n a = a | 0;sC(a);return;\n }function Su() {\n var b = 0;if (!(a[7928] | 0)) {\n Tu(10488);Ha(59, 10488, o | 0) | 0;b = 7928;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10488) | 0)) Tu(10488);return 10488;\n }function Tu(a) {\n a = a | 0;Wu(a);Gt(a, 60);return;\n }function Uu(a) {\n a = a | 0;Vu(a + 24 | 0);return;\n }function Vu(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Wu(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 6, b, $u() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Xu(a) {\n a = a | 0;Yu(a);return;\n }function Yu(a) {\n a = a | 0;Zu(a);return;\n }function Zu(b) {\n b = b | 0;_u(b + 8 | 0);a[b + 24 >> 0] = 1;return;\n }function _u(a) {\n a = a | 0;c[a >> 2] = 0;c[a + 4 >> 2] = 0;c[a + 8 >> 2] = 0;c[a + 12 >> 2] = 0;return;\n }function $u() {\n return 1492;\n }function av() {\n return bv() | 0;\n }function bv() {\n var a = 0,\n b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;b = l;l = l + 16 | 0;f = b + 4 | 0;h = b;d = jy(8) | 0;a = d;e = qC(16) | 0;_u(e);g = a + 4 | 0;c[g >> 2] = e;e = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];Ou(e, g, f);c[d >> 2] = e;l = b;return a | 0;\n }function cv() {\n var b = 0;if (!(a[7936] | 0)) {\n jv(10524);Ha(25, 10524, o | 0) | 0;b = 7936;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10524;\n }function dv(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = ev() | 0;c[a + 4 >> 2] = fv() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = gv() | 0;c[a + 32 >> 2] = 7;return;\n }function ev() {\n return 11700;\n }function fv() {\n return 1484;\n }function gv() {\n return cu() | 0;\n }function hv(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n iv(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function iv(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function jv(a) {\n a = a | 0;Zi(a);return;\n }function kv(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;a = ai(b) | 0;b = lv(c) | 0;c = mv(c, 0) | 0;Zv(a, b, c, nv() | 0, 0);return;\n }function lv(a) {\n a = a | 0;return a | 0;\n }function mv(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = nv() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n vv(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n wv(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function nv() {\n var b = 0,\n d = 0;if (!(a[7944] | 0)) {\n ov(10568);Ha(61, 10568, o | 0) | 0;d = 7944;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10568) | 0)) {\n b = 10568;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));ov(10568);\n }return 10568;\n }function ov(a) {\n a = a | 0;rv(a);return;\n }function pv(a) {\n a = a | 0;qv(a + 24 | 0);return;\n }function qv(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function rv(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 17, b, ql() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function sv(a) {\n a = a | 0;return uv(c[(tv(a) | 0) >> 2] | 0) | 0;\n }function tv(a) {\n a = a | 0;return (c[(nv() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function uv(a) {\n a = a | 0;return ul(Ab[a & 7]() | 0) | 0;\n }function vv(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function wv(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = xv(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;yv(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;vv(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;zv(a, f);Av(f);l = i;return;\n }\n }function xv(a) {\n a = a | 0;return 536870911;\n }function yv(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function zv(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Av(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Bv() {\n Cv();return;\n }function Cv() {\n Dv(10604);return;\n }function Dv(a) {\n a = a | 0;Ev(a, 4955);return;\n }function Ev(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = Fv() | 0;c[a >> 2] = d;Gv(d, b);Hv(c[a >> 2] | 0);return;\n }function Fv() {\n var b = 0;if (!(a[7952] | 0)) {\n Rv(10612);Ha(25, 10612, o | 0) | 0;b = 7952;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10612;\n }function Gv(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = Mv() | 0;c[a + 4 >> 2] = Nv() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = Ov() | 0;c[a + 32 >> 2] = 8;return;\n }function Hv(a) {\n a = a | 0;var b = 0,\n d = 0;b = l;l = l + 16 | 0;d = b;Iv() | 0;c[d >> 2] = a;Jv(10608, d);l = b;return;\n }function Iv() {\n if (!(a[11714] | 0)) {\n c[2652] = 0;Ha(62, 10608, o | 0) | 0;a[11714] = 1;\n }return 10608;\n }function Jv(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = qC(8) | 0;c[d + 4 >> 2] = c[b >> 2];c[d >> 2] = c[a >> 2];c[a >> 2] = d;return;\n }function Kv(a) {\n a = a | 0;Lv(a);return;\n }function Lv(a) {\n a = a | 0;var b = 0,\n d = 0;b = c[a >> 2] | 0;if (b | 0) do {\n d = b;b = c[b >> 2] | 0;sC(d);\n } while ((b | 0) != 0);c[a >> 2] = 0;return;\n }function Mv() {\n return 11715;\n }function Nv() {\n return 1496;\n }function Ov() {\n return lr() | 0;\n }function Pv(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n Qv(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function Qv(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function Rv(a) {\n a = a | 0;Zi(a);return;\n }function Sv(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;Iv() | 0;d = c[2652] | 0;a: do if (d | 0) {\n while (1) {\n e = c[d + 4 >> 2] | 0;if (e | 0 ? (AB(Tv(e) | 0, a) | 0) == 0 : 0) break;d = c[d >> 2] | 0;if (!d) break a;\n }Uv(e, b);\n } while (0);return;\n }function Tv(a) {\n a = a | 0;return c[a + 12 >> 2] | 0;\n }function Uv(a, b) {\n a = a | 0;b = b | 0;var d = 0;a = a + 36 | 0;d = c[a >> 2] | 0;if (d | 0) {\n vf(d);sC(d);\n }d = qC(4) | 0;Og(d, b);c[a >> 2] = d;return;\n }function Vv() {\n if (!(a[11716] | 0)) {\n c[2664] = 0;Ha(63, 10656, o | 0) | 0;a[11716] = 1;\n }return 10656;\n }function Wv() {\n var b = 0;if (!(a[11717] | 0)) {\n Xv();c[2665] = 1504;a[11717] = 1;b = 1504;\n } else b = c[2665] | 0;return b | 0;\n }function Xv() {\n if (!(a[11740] | 0)) {\n a[11718] = ji(ji(8, 0) | 0, 0) | 0;a[11719] = ji(ji(0, 0) | 0, 0) | 0;a[11720] = ji(ji(0, 16) | 0, 0) | 0;a[11721] = ji(ji(8, 0) | 0, 0) | 0;a[11722] = ji(ji(0, 0) | 0, 0) | 0;a[11723] = ji(ji(8, 0) | 0, 0) | 0;a[11724] = ji(ji(0, 0) | 0, 0) | 0;a[11725] = ji(ji(8, 0) | 0, 0) | 0;a[11726] = ji(ji(0, 0) | 0, 0) | 0;a[11727] = ji(ji(8, 0) | 0, 0) | 0;a[11728] = ji(ji(0, 0) | 0, 0) | 0;a[11729] = ji(ji(0, 0) | 0, 32) | 0;a[11730] = ji(ji(0, 0) | 0, 32) | 0;a[11740] = 1;\n }return;\n }function Yv() {\n return 1572;\n }function Zv(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;g = l;l = l + 32 | 0;m = g + 16 | 0;k = g + 12 | 0;j = g + 8 | 0;i = g + 4 | 0;h = g;c[m >> 2] = a;c[k >> 2] = b;c[j >> 2] = d;c[i >> 2] = e;c[h >> 2] = f;Vv() | 0;_v(10656, m, k, j, i, h);l = g;return;\n }function _v(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0;h = qC(24) | 0;ii(h + 4 | 0, c[b >> 2] | 0, c[d >> 2] | 0, c[e >> 2] | 0, c[f >> 2] | 0, c[g >> 2] | 0);c[h >> 2] = c[a >> 2];c[a >> 2] = h;return;\n }function $v(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;u = l;l = l + 32 | 0;q = u + 20 | 0;r = u + 8 | 0;s = u + 4 | 0;t = u;b = c[b >> 2] | 0;if (b | 0) {\n p = q + 4 | 0;j = q + 8 | 0;k = r + 4 | 0;m = r + 8 | 0;n = r + 8 | 0;o = q + 8 | 0;do {\n h = b + 4 | 0;i = aw(h) | 0;if (i | 0) {\n f = bw(i) | 0;c[q >> 2] = 0;c[p >> 2] = 0;c[j >> 2] = 0;e = (cw(i) | 0) + 1 | 0;dw(q, e);if (e | 0) while (1) {\n e = e + -1 | 0;OA(r, c[f >> 2] | 0);g = c[p >> 2] | 0;if (g >>> 0 < (c[o >> 2] | 0) >>> 0) {\n c[g >> 2] = c[r >> 2];c[p >> 2] = (c[p >> 2] | 0) + 4;\n } else ew(q, r);if (!e) break;else f = f + 4 | 0;\n }e = fw(i) | 0;c[r >> 2] = 0;c[k >> 2] = 0;c[m >> 2] = 0;a: do if (c[e >> 2] | 0) {\n f = 0;g = 0;while (1) {\n if ((f | 0) == (g | 0)) gw(r, e);else {\n c[f >> 2] = c[e >> 2];c[k >> 2] = (c[k >> 2] | 0) + 4;\n }e = e + 4 | 0;if (!(c[e >> 2] | 0)) break a;f = c[k >> 2] | 0;g = c[n >> 2] | 0;\n }\n } while (0);c[s >> 2] = hw(h) | 0;c[t >> 2] = si(i) | 0;iw(d, a, s, t, q, r);jw(r);kw(q);\n }b = c[b >> 2] | 0;\n } while ((b | 0) != 0);\n }l = u;return;\n }function aw(a) {\n a = a | 0;return c[a + 12 >> 2] | 0;\n }function bw(a) {\n a = a | 0;return c[a + 12 >> 2] | 0;\n }function cw(a) {\n a = a | 0;return c[a + 16 >> 2] | 0;\n }function dw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 32 | 0;d = f;e = c[a >> 2] | 0;if ((c[a + 8 >> 2] | 0) - e >> 2 >>> 0 < b >>> 0) {\n Rw(d, b, (c[a + 4 >> 2] | 0) - e >> 2, a + 8 | 0);Sw(a, d);Tw(d);\n }l = f;return;\n }function ew(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;h = l;l = l + 32 | 0;d = h;e = a + 4 | 0;f = ((c[e >> 2] | 0) - (c[a >> 2] | 0) >> 2) + 1 | 0;g = Nw(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n i = c[a >> 2] | 0;k = (c[a + 8 >> 2] | 0) - i | 0;j = k >> 1;Rw(d, k >> 2 >>> 0 < g >>> 1 >>> 0 ? j >>> 0 < f >>> 0 ? f : j : g, (c[e >> 2] | 0) - i >> 2, a + 8 | 0);g = d + 8 | 0;c[c[g >> 2] >> 2] = c[b >> 2];c[g >> 2] = (c[g >> 2] | 0) + 4;Sw(a, d);Tw(d);l = h;return;\n }\n }function fw(a) {\n a = a | 0;return c[a + 8 >> 2] | 0;\n }function gw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;h = l;l = l + 32 | 0;d = h;e = a + 4 | 0;f = ((c[e >> 2] | 0) - (c[a >> 2] | 0) >> 2) + 1 | 0;g = Kw(a) | 0;if (g >>> 0 < f >>> 0) jC(a);else {\n i = c[a >> 2] | 0;k = (c[a + 8 >> 2] | 0) - i | 0;j = k >> 1;Ow(d, k >> 2 >>> 0 < g >>> 1 >>> 0 ? j >>> 0 < f >>> 0 ? f : j : g, (c[e >> 2] | 0) - i >> 2, a + 8 | 0);g = d + 8 | 0;c[c[g >> 2] >> 2] = c[b >> 2];c[g >> 2] = (c[g >> 2] | 0) + 4;Pw(a, d);Qw(d);l = h;return;\n }\n }function hw(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function iw(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;lw(a, b, c, d, e, f);return;\n }function jw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -4 - e | 0) >>> 2) << 2);sC(d);\n }return;\n }function kw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -4 - e | 0) >>> 2) << 2);sC(d);\n }return;\n }function lw(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;h = l;l = l + 48 | 0;m = h + 40 | 0;i = h + 32 | 0;n = h + 24 | 0;j = h + 12 | 0;k = h;UA(i);a = Sg(a) | 0;c[n >> 2] = c[b >> 2];d = c[d >> 2] | 0;e = c[e >> 2] | 0;mw(j, f);nw(k, g);c[m >> 2] = c[n >> 2];ow(a, m, d, e, j, k);jw(k);kw(j);WA(i);l = h;return;\n }function mw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;c[a >> 2] = 0;c[a + 4 >> 2] = 0;c[a + 8 >> 2] = 0;d = b + 4 | 0;e = (c[d >> 2] | 0) - (c[b >> 2] | 0) >> 2;if (e | 0) {\n Lw(a, e);Mw(a, c[b >> 2] | 0, c[d >> 2] | 0, e);\n }return;\n }function nw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;c[a >> 2] = 0;c[a + 4 >> 2] = 0;c[a + 8 >> 2] = 0;d = b + 4 | 0;e = (c[d >> 2] | 0) - (c[b >> 2] | 0) >> 2;if (e | 0) {\n Iw(a, e);Jw(a, c[b >> 2] | 0, c[d >> 2] | 0, e);\n }return;\n }function ow(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0;h = l;l = l + 32 | 0;m = h + 28 | 0;n = h + 24 | 0;i = h + 12 | 0;j = h;k = Vg(pw() | 0) | 0;c[n >> 2] = c[b >> 2];c[m >> 2] = c[n >> 2];b = qw(m) | 0;d = rw(d) | 0;e = sw(e) | 0;c[i >> 2] = c[f >> 2];m = f + 4 | 0;c[i + 4 >> 2] = c[m >> 2];n = f + 8 | 0;c[i + 8 >> 2] = c[n >> 2];c[n >> 2] = 0;c[m >> 2] = 0;c[f >> 2] = 0;f = tw(i) | 0;c[j >> 2] = c[g >> 2];m = g + 4 | 0;c[j + 4 >> 2] = c[m >> 2];n = g + 8 | 0;c[j + 8 >> 2] = c[n >> 2];c[n >> 2] = 0;c[m >> 2] = 0;c[g >> 2] = 0;Ba(0, k | 0, a | 0, b | 0, d | 0, e | 0, f | 0, uw(j) | 0) | 0;jw(j);kw(i);l = h;return;\n }function pw() {\n var b = 0;if (!(a[7968] | 0)) {\n Gw(10708);b = 7968;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10708;\n }function qw(a) {\n a = a | 0;return yw(a) | 0;\n }function rw(a) {\n a = a | 0;return ww(a) | 0;\n }function sw(a) {\n a = a | 0;return ul(a) | 0;\n }function tw(a) {\n a = a | 0;return xw(a) | 0;\n }function uw(a) {\n a = a | 0;return vw(a) | 0;\n }function vw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;e = (c[a + 4 >> 2] | 0) - (c[a >> 2] | 0) | 0;d = e >> 2;e = jy(e + 4 | 0) | 0;c[e >> 2] = d;if (d | 0) {\n b = 0;do {\n c[e + 4 + (b << 2) >> 2] = ww(c[(c[a >> 2] | 0) + (b << 2) >> 2] | 0) | 0;b = b + 1 | 0;\n } while ((b | 0) != (d | 0));\n }return e | 0;\n }function ww(a) {\n a = a | 0;return a | 0;\n }function xw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;e = (c[a + 4 >> 2] | 0) - (c[a >> 2] | 0) | 0;d = e >> 2;e = jy(e + 4 | 0) | 0;c[e >> 2] = d;if (d | 0) {\n b = 0;do {\n c[e + 4 + (b << 2) >> 2] = yw((c[a >> 2] | 0) + (b << 2) | 0) | 0;b = b + 1 | 0;\n } while ((b | 0) != (d | 0));\n }return e | 0;\n }function yw(a) {\n a = a | 0;var b = 0,\n c = 0,\n d = 0,\n e = 0;e = l;l = l + 32 | 0;b = e + 12 | 0;c = e;d = Di(zw() | 0) | 0;if (!d) a = Aw(a) | 0;else {\n Ei(b, d);Fi(c, b);RA(a, c);a = Hi(b) | 0;\n }l = e;return a | 0;\n }function zw() {\n var b = 0;if (!(a[7960] | 0)) {\n Fw(10664);Ha(25, 10664, o | 0) | 0;b = 7960;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10664;\n }function Aw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;d = l;l = l + 16 | 0;f = d + 4 | 0;h = d;e = jy(8) | 0;b = e;i = qC(4) | 0;c[i >> 2] = c[a >> 2];g = b + 4 | 0;c[g >> 2] = i;a = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];Bw(a, g, f);c[e >> 2] = a;l = d;return b | 0;\n }function Bw(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;d = qC(16) | 0;c[d + 4 >> 2] = 0;c[d + 8 >> 2] = 0;c[d >> 2] = 1656;c[d + 12 >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Cw(a) {\n a = a | 0;kC(a);sC(a);return;\n }function Dw(a) {\n a = a | 0;a = c[a + 12 >> 2] | 0;if (a | 0) sC(a);return;\n }function Ew(a) {\n a = a | 0;sC(a);return;\n }function Fw(a) {\n a = a | 0;Zi(a);return;\n }function Gw(a) {\n a = a | 0;fh(a, Hw() | 0, 5);return;\n }function Hw() {\n return 1676;\n }function Iw(a, b) {\n a = a | 0;b = b | 0;var d = 0;if ((Kw(a) | 0) >>> 0 < b >>> 0) jC(a);if (b >>> 0 > 1073741823) Ta();else {\n d = qC(b << 2) | 0;c[a + 4 >> 2] = d;c[a >> 2] = d;c[a + 8 >> 2] = d + (b << 2);return;\n }\n }function Jw(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;e = a + 4 | 0;a = d - b | 0;if ((a | 0) > 0) {\n BC(c[e >> 2] | 0, b | 0, a | 0) | 0;c[e >> 2] = (c[e >> 2] | 0) + (a >>> 2 << 2);\n }return;\n }function Kw(a) {\n a = a | 0;return 1073741823;\n }function Lw(a, b) {\n a = a | 0;b = b | 0;var d = 0;if ((Nw(a) | 0) >>> 0 < b >>> 0) jC(a);if (b >>> 0 > 1073741823) Ta();else {\n d = qC(b << 2) | 0;c[a + 4 >> 2] = d;c[a >> 2] = d;c[a + 8 >> 2] = d + (b << 2);return;\n }\n }function Mw(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;e = a + 4 | 0;a = d - b | 0;if ((a | 0) > 0) {\n BC(c[e >> 2] | 0, b | 0, a | 0) | 0;c[e >> 2] = (c[e >> 2] | 0) + (a >>> 2 << 2);\n }return;\n }function Nw(a) {\n a = a | 0;return 1073741823;\n }function Ow(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 1073741823) Ta();else {\n f = qC(b << 2) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 2) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 2);return;\n }function Pw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 2) << 2) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Qw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -4 - b | 0) >>> 2) << 2);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Rw(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 1073741823) Ta();else {\n f = qC(b << 2) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 2) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 2);return;\n }function Sw(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 2) << 2) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Tw(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -4 - b | 0) >>> 2) << 2);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Uw(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0;r = l;l = l + 32 | 0;m = r + 20 | 0;n = r + 12 | 0;k = r + 16 | 0;o = r + 4 | 0;p = r;q = r + 8 | 0;i = Wv() | 0;g = c[i >> 2] | 0;h = c[g >> 2] | 0;if (h | 0) {\n j = c[i + 8 >> 2] | 0;i = c[i + 4 >> 2] | 0;while (1) {\n OA(m, h);Vw(a, m, i, j);g = g + 4 | 0;h = c[g >> 2] | 0;if (!h) break;else {\n j = j + 1 | 0;i = i + 1 | 0;\n }\n }\n }g = Yv() | 0;h = c[g >> 2] | 0;if (h | 0) do {\n OA(m, h);c[n >> 2] = c[g + 4 >> 2];Ww(b, m, n);g = g + 8 | 0;h = c[g >> 2] | 0;\n } while ((h | 0) != 0);g = c[(Iv() | 0) >> 2] | 0;if (g | 0) do {\n b = c[g + 4 >> 2] | 0;OA(m, c[(Xw(b) | 0) >> 2] | 0);c[n >> 2] = Tv(b) | 0;Yw(d, m, n);g = c[g >> 2] | 0;\n } while ((g | 0) != 0);OA(k, 0);g = Vv() | 0;c[m >> 2] = c[k >> 2];$v(m, g, f);g = c[(Iv() | 0) >> 2] | 0;if (g | 0) {\n a = m + 4 | 0;b = m + 8 | 0;d = m + 8 | 0;do {\n j = c[g + 4 >> 2] | 0;OA(n, c[(Xw(j) | 0) >> 2] | 0);_w(o, Zw(j) | 0);h = c[o >> 2] | 0;if (h | 0) {\n c[m >> 2] = 0;c[a >> 2] = 0;c[b >> 2] = 0;do {\n OA(p, c[(Xw(c[h + 4 >> 2] | 0) | 0) >> 2] | 0);i = c[a >> 2] | 0;if (i >>> 0 < (c[d >> 2] | 0) >>> 0) {\n c[i >> 2] = c[p >> 2];c[a >> 2] = (c[a >> 2] | 0) + 4;\n } else ew(m, p);h = c[h >> 2] | 0;\n } while ((h | 0) != 0);$w(e, n, m);kw(m);\n }c[q >> 2] = c[n >> 2];k = ax(j) | 0;c[m >> 2] = c[q >> 2];$v(m, k, f);Wi(o);g = c[g >> 2] | 0;\n } while ((g | 0) != 0);\n }l = r;return;\n }function Vw(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;ox(a, b, c, d);return;\n }function Ww(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;nx(a, b, c);return;\n }function Xw(a) {\n a = a | 0;return a | 0;\n }function Yw(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;ix(a, b, c);return;\n }function Zw(a) {\n a = a | 0;return a + 16 | 0;\n }function _w(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;g = l;l = l + 16 | 0;f = g + 8 | 0;d = g;c[a >> 2] = 0;e = c[b >> 2] | 0;c[f >> 2] = e;c[d >> 2] = a;d = gx(d) | 0;if (e | 0) {\n e = qC(12) | 0;h = (hx(f) | 0) + 4 | 0;a = c[h + 4 >> 2] | 0;b = e + 4 | 0;c[b >> 2] = c[h >> 2];c[b + 4 >> 2] = a;b = c[c[f >> 2] >> 2] | 0;c[f >> 2] = b;if (!b) a = e;else {\n b = e;while (1) {\n a = qC(12) | 0;j = (hx(f) | 0) + 4 | 0;i = c[j + 4 >> 2] | 0;h = a + 4 | 0;c[h >> 2] = c[j >> 2];c[h + 4 >> 2] = i;c[b >> 2] = a;h = c[c[f >> 2] >> 2] | 0;c[f >> 2] = h;if (!h) break;else b = a;\n }\n }c[a >> 2] = c[d >> 2];c[d >> 2] = e;\n }l = g;return;\n }function $w(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;bx(a, b, c);return;\n }function ax(a) {\n a = a | 0;return a + 24 | 0;\n }function bx(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 32 | 0;h = e + 24 | 0;f = e + 16 | 0;i = e + 12 | 0;g = e;UA(f);a = Sg(a) | 0;c[i >> 2] = c[b >> 2];mw(g, d);c[h >> 2] = c[i >> 2];cx(a, h, g);kw(g);WA(f);l = e;return;\n }function cx(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;e = l;l = l + 32 | 0;h = e + 16 | 0;i = e + 12 | 0;f = e;g = Vg(dx() | 0) | 0;c[i >> 2] = c[b >> 2];c[h >> 2] = c[i >> 2];b = qw(h) | 0;c[f >> 2] = c[d >> 2];h = d + 4 | 0;c[f + 4 >> 2] = c[h >> 2];i = d + 8 | 0;c[f + 8 >> 2] = c[i >> 2];c[i >> 2] = 0;c[h >> 2] = 0;c[d >> 2] = 0;xa(0, g | 0, a | 0, b | 0, tw(f) | 0) | 0;kw(f);l = e;return;\n }function dx() {\n var b = 0;if (!(a[7976] | 0)) {\n ex(10720);b = 7976;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10720;\n }function ex(a) {\n a = a | 0;fh(a, fx() | 0, 2);return;\n }function fx() {\n return 1732;\n }function gx(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function hx(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function ix(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 32 | 0;g = e + 16 | 0;f = e + 8 | 0;h = e;UA(f);a = Sg(a) | 0;c[h >> 2] = c[b >> 2];d = c[d >> 2] | 0;c[g >> 2] = c[h >> 2];jx(a, g, d);WA(f);l = e;return;\n }function jx(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 16 | 0;g = e + 4 | 0;h = e;f = Vg(kx() | 0) | 0;c[h >> 2] = c[b >> 2];c[g >> 2] = c[h >> 2];b = qw(g) | 0;xa(0, f | 0, a | 0, b | 0, rw(d) | 0) | 0;l = e;return;\n }function kx() {\n var b = 0;if (!(a[7984] | 0)) {\n lx(10732);b = 7984;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10732;\n }function lx(a) {\n a = a | 0;fh(a, mx() | 0, 2);return;\n }function mx() {\n return 1744;\n }function nx(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0;e = l;l = l + 32 | 0;g = e + 16 | 0;f = e + 8 | 0;h = e;UA(f);a = Sg(a) | 0;c[h >> 2] = c[b >> 2];d = c[d >> 2] | 0;c[g >> 2] = c[h >> 2];jx(a, g, d);WA(f);l = e;return;\n }function ox(b, d, e, f) {\n b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0;g = l;l = l + 32 | 0;i = g + 16 | 0;h = g + 8 | 0;j = g;UA(h);b = Sg(b) | 0;c[j >> 2] = c[d >> 2];e = a[e >> 0] | 0;f = a[f >> 0] | 0;c[i >> 2] = c[j >> 2];px(b, i, e, f);WA(h);l = g;return;\n }function px(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;h = f + 4 | 0;i = f;g = Vg(qx() | 0) | 0;c[i >> 2] = c[b >> 2];c[h >> 2] = c[i >> 2];b = qw(h) | 0;d = rx(d) | 0;$a(0, g | 0, a | 0, b | 0, d | 0, rx(e) | 0) | 0;l = f;return;\n }function qx() {\n var b = 0;if (!(a[7992] | 0)) {\n tx(10744);b = 7992;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10744;\n }function rx(a) {\n a = a | 0;return sx(a) | 0;\n }function sx(a) {\n a = a | 0;return a & 255 | 0;\n }function tx(a) {\n a = a | 0;fh(a, ux() | 0, 3);return;\n }function ux() {\n return 1756;\n }function vx(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;p = l;l = l + 32 | 0;j = p + 8 | 0;k = p + 4 | 0;m = p + 20 | 0;n = p;mk(b, 0);f = QA(d) | 0;c[j >> 2] = 0;o = j + 4 | 0;c[o >> 2] = 0;c[j + 8 >> 2] = 0;switch (f << 24 >> 24) {case 0:\n {\n a[m >> 0] = 0;wx(k, e, m);xx(b, k) | 0;wf(k);break;\n }case 8:\n {\n o = PA(d) | 0;a[m >> 0] = 8;OA(n, c[o + 4 >> 2] | 0);yx(k, e, m, n, o + 8 | 0);xx(b, k) | 0;wf(k);break;\n }case 9:\n {\n h = PA(d) | 0;d = c[h + 4 >> 2] | 0;if (d | 0) {\n i = j + 8 | 0;g = h + 12 | 0;while (1) {\n d = d + -1 | 0;OA(k, c[g >> 2] | 0);f = c[o >> 2] | 0;if (f >>> 0 < (c[i >> 2] | 0) >>> 0) {\n c[f >> 2] = c[k >> 2];c[o >> 2] = (c[o >> 2] | 0) + 4;\n } else ew(j, k);if (!d) break;else g = g + 4 | 0;\n }\n }a[m >> 0] = 9;OA(n, c[h + 8 >> 2] | 0);zx(k, e, m, n, j);xx(b, k) | 0;wf(k);break;\n }default:\n {\n o = PA(d) | 0;a[m >> 0] = f;OA(n, c[o + 4 >> 2] | 0);Ax(k, e, m, n);xx(b, k) | 0;wf(k);\n }}kw(j);l = p;return;\n }function wx(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;var e = 0,\n f = 0;e = l;l = l + 16 | 0;f = e;UA(f);c = Sg(c) | 0;Ox(b, c, a[d >> 0] | 0);WA(f);l = e;return;\n }function xx(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = c[a >> 2] | 0;if (d | 0) ab(d | 0);c[a >> 2] = c[b >> 2];c[b >> 2] = 0;return a | 0;\n }function yx(b, d, e, f, g) {\n b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0,\n i = 0,\n j = 0,\n k = 0;h = l;l = l + 32 | 0;j = h + 16 | 0;i = h + 8 | 0;k = h;UA(i);d = Sg(d) | 0;e = a[e >> 0] | 0;c[k >> 2] = c[f >> 2];g = c[g >> 2] | 0;c[j >> 2] = c[k >> 2];Kx(b, d, e, j, g);WA(i);l = h;return;\n }function zx(b, d, e, f, g) {\n b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;var h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;h = l;l = l + 32 | 0;k = h + 24 | 0;i = h + 16 | 0;m = h + 12 | 0;j = h;UA(i);d = Sg(d) | 0;e = a[e >> 0] | 0;c[m >> 2] = c[f >> 2];mw(j, g);c[k >> 2] = c[m >> 2];Gx(b, d, e, k, j);kw(j);WA(i);l = h;return;\n }function Ax(b, d, e, f) {\n b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0;g = l;l = l + 32 | 0;i = g + 16 | 0;h = g + 8 | 0;j = g;UA(h);d = Sg(d) | 0;e = a[e >> 0] | 0;c[j >> 2] = c[f >> 2];c[i >> 2] = c[j >> 2];Bx(b, d, e, i);WA(h);l = g;return;\n }function Bx(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;f = l;l = l + 16 | 0;g = f + 4 | 0;i = f;h = Vg(Cx() | 0) | 0;d = rx(d) | 0;c[i >> 2] = c[e >> 2];c[g >> 2] = c[i >> 2];Dx(a, xa(0, h | 0, b | 0, d | 0, qw(g) | 0) | 0);l = f;return;\n }function Cx() {\n var b = 0;if (!(a[8e3] | 0)) {\n Ex(10756);b = 8e3;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10756;\n }function Dx(a, b) {\n a = a | 0;b = b | 0;mk(a, b);return;\n }function Ex(a) {\n a = a | 0;fh(a, Fx() | 0, 2);return;\n }function Fx() {\n return 1772;\n }function Gx(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;g = l;l = l + 32 | 0;j = g + 16 | 0;k = g + 12 | 0;h = g;i = Vg(Hx() | 0) | 0;d = rx(d) | 0;c[k >> 2] = c[e >> 2];c[j >> 2] = c[k >> 2];e = qw(j) | 0;c[h >> 2] = c[f >> 2];j = f + 4 | 0;c[h + 4 >> 2] = c[j >> 2];k = f + 8 | 0;c[h + 8 >> 2] = c[k >> 2];c[k >> 2] = 0;c[j >> 2] = 0;c[f >> 2] = 0;Dx(a, $a(0, i | 0, b | 0, d | 0, e | 0, tw(h) | 0) | 0);kw(h);l = g;return;\n }function Hx() {\n var b = 0;if (!(a[8008] | 0)) {\n Ix(10768);b = 8008;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10768;\n }function Ix(a) {\n a = a | 0;fh(a, Jx() | 0, 3);return;\n }function Jx() {\n return 1784;\n }function Kx(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0;g = l;l = l + 16 | 0;i = g + 4 | 0;j = g;h = Vg(Lx() | 0) | 0;d = rx(d) | 0;c[j >> 2] = c[e >> 2];c[i >> 2] = c[j >> 2];e = qw(i) | 0;Dx(a, $a(0, h | 0, b | 0, d | 0, e | 0, sw(f) | 0) | 0);l = g;return;\n }function Lx() {\n var b = 0;if (!(a[8016] | 0)) {\n Mx(10780);b = 8016;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10780;\n }function Mx(a) {\n a = a | 0;fh(a, Nx() | 0, 3);return;\n }function Nx() {\n return 1800;\n }function Ox(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;var d = 0;d = Vg(Px() | 0) | 0;Dx(a, bb(0, d | 0, b | 0, rx(c) | 0) | 0);return;\n }function Px() {\n var b = 0;if (!(a[8024] | 0)) {\n Qx(10792);b = 8024;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 10792;\n }function Qx(a) {\n a = a | 0;fh(a, Rx() | 0, 1);return;\n }function Rx() {\n return 1816;\n }function Sx() {\n Tx();Ux();Vx();return;\n }function Tx() {\n c[2702] = rC(65536) | 0;return;\n }function Ux() {\n qy(10856);return;\n }function Vx() {\n Wx(10816);return;\n }function Wx(a) {\n a = a | 0;Xx(a, 5044);Yx(a) | 0;return;\n }function Xx(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = zw() | 0;c[a >> 2] = d;ky(d, b);Hv(c[a >> 2] | 0);return;\n }function Yx(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, Zx() | 0);return a | 0;\n }function Zx() {\n var b = 0;if (!(a[8032] | 0)) {\n _x(10820);Ha(64, 10820, o | 0) | 0;b = 8032;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(10820) | 0)) _x(10820);return 10820;\n }function _x(a) {\n a = a | 0;by(a);Gt(a, 25);return;\n }function $x(a) {\n a = a | 0;ay(a + 24 | 0);return;\n }function ay(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function by(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 18, b, gy() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function cy(a, b) {\n a = a | 0;b = b | 0;dy(a, b);return;\n }function dy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;d = l;l = l + 16 | 0;e = d;f = d + 4 | 0;Gk(f, b);c[e >> 2] = Hk(f, b) | 0;ey(a, e);l = d;return;\n }function ey(b, d) {\n b = b | 0;d = d | 0;fy(b + 4 | 0, c[d >> 2] | 0);a[b + 8 >> 0] = 1;return;\n }function fy(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = b;return;\n }function gy() {\n return 1824;\n }function hy(a) {\n a = a | 0;return iy(a) | 0;\n }function iy(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;d = l;l = l + 16 | 0;f = d + 4 | 0;h = d;e = jy(8) | 0;b = e;i = qC(4) | 0;Gk(f, a);fy(i, Hk(f, a) | 0);g = b + 4 | 0;c[g >> 2] = i;a = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];Bw(a, g, f);c[e >> 2] = a;l = d;return b | 0;\n }function jy(a) {\n a = a | 0;var b = 0,\n d = 0;a = a + 7 & -8;if (a >>> 0 <= 32768 ? (b = c[2701] | 0, a >>> 0 <= (65536 - b | 0) >>> 0) : 0) {\n d = (c[2702] | 0) + b | 0;c[2701] = b + a;a = d;\n } else {\n a = rC(a + 8 | 0) | 0;c[a >> 2] = c[2703];c[2703] = a;a = a + 8 | 0;\n }return a | 0;\n }function ky(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = ly() | 0;c[a + 4 >> 2] = my() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = ny() | 0;c[a + 32 >> 2] = 9;return;\n }function ly() {\n return 11744;\n }function my() {\n return 1832;\n }function ny() {\n return cu() | 0;\n }function oy(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n py(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function py(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function qy(a) {\n a = a | 0;ry(a, 5052);sy(a) | 0;ty(a, 5058, 26) | 0;uy(a, 5069, 1) | 0;vy(a, 5077, 10) | 0;wy(a, 5087, 19) | 0;yy(a, 5094, 27) | 0;return;\n }function ry(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = GA() | 0;c[a >> 2] = d;HA(d, b);Hv(c[a >> 2] | 0);return;\n }function sy(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;At(b, rA() | 0);return a | 0;\n }function ty(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Yz(a, ai(b) | 0, c, 0);return a | 0;\n }function uy(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Gz(a, ai(b) | 0, c, 0);return a | 0;\n }function vy(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;hz(a, ai(b) | 0, c, 0);return a | 0;\n }function wy(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Ry(a, ai(b) | 0, c, 0);return a | 0;\n }function xy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;a: while (1) {\n d = c[2703] | 0;while (1) {\n if ((d | 0) == (b | 0)) break a;e = c[d >> 2] | 0;c[2703] = e;if (!d) d = e;else break;\n }sC(d);\n }c[2701] = a;return;\n }function yy(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;zy(a, ai(b) | 0, c, 0);return a | 0;\n }function zy(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Ay() | 0;a = By(d) | 0;fi(g, b, f, a, Cy(d, e) | 0, e);return;\n }function Ay() {\n var b = 0,\n d = 0;if (!(a[8040] | 0)) {\n Jy(10860);Ha(65, 10860, o | 0) | 0;d = 8040;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10860) | 0)) {\n b = 10860;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Jy(10860);\n }return 10860;\n }function By(a) {\n a = a | 0;return a | 0;\n }function Cy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Ay() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n Dy(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n Ey(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function Dy(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Ey(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = Fy(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Gy(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;Dy(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Hy(a, f);Iy(f);l = i;return;\n }\n }function Fy(a) {\n a = a | 0;return 536870911;\n }function Gy(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Hy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Iy(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Jy(a) {\n a = a | 0;My(a);return;\n }function Ky(a) {\n a = a | 0;Ly(a + 24 | 0);return;\n }function Ly(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function My(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 11, b, Ny() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Ny() {\n return 1840;\n }function Oy(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;Qy(c[(Py(a) | 0) >> 2] | 0, b, d);return;\n }function Py(a) {\n a = a | 0;return (c[(Ay() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function Qy(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;var d = 0,\n e = 0,\n f = 0;d = l;l = l + 16 | 0;f = d + 1 | 0;e = d;Gk(f, b);b = Hk(f, b) | 0;Gk(e, c);c = Hk(e, c) | 0;ob[a & 31](b, c);l = d;return;\n }function Ry(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Sy() | 0;a = Ty(d) | 0;fi(g, b, f, a, Uy(d, e) | 0, e);return;\n }function Sy() {\n var b = 0,\n d = 0;if (!(a[8048] | 0)) {\n $y(10896);Ha(66, 10896, o | 0) | 0;d = 8048;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10896) | 0)) {\n b = 10896;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));$y(10896);\n }return 10896;\n }function Ty(a) {\n a = a | 0;return a | 0;\n }function Uy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Sy() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n Vy(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n Wy(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function Vy(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Wy(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = Xy(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Yy(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;Vy(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Zy(a, f);_y(f);l = i;return;\n }\n }function Xy(a) {\n a = a | 0;return 536870911;\n }function Yy(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Zy(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function _y(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function $y(a) {\n a = a | 0;cz(a);return;\n }function az(a) {\n a = a | 0;bz(a + 24 | 0);return;\n }function bz(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function cz(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 11, b, dz() | 0, 1);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function dz() {\n return 1852;\n }function ez(a, b) {\n a = a | 0;b = b | 0;return gz(c[(fz(a) | 0) >> 2] | 0, b) | 0;\n }function fz(a) {\n a = a | 0;return (c[(Sy() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function gz(a, b) {\n a = a | 0;b = b | 0;var c = 0,\n d = 0;c = l;l = l + 16 | 0;d = c;Gk(d, b);b = Hk(d, b) | 0;b = ul(pb[a & 31](b) | 0) | 0;l = c;return b | 0;\n }function hz(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = iz() | 0;a = jz(d) | 0;fi(g, b, f, a, kz(d, e) | 0, e);return;\n }function iz() {\n var b = 0,\n d = 0;if (!(a[8056] | 0)) {\n rz(10932);Ha(67, 10932, o | 0) | 0;d = 8056;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10932) | 0)) {\n b = 10932;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));rz(10932);\n }return 10932;\n }function jz(a) {\n a = a | 0;return a | 0;\n }function kz(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = iz() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n lz(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n mz(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function lz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function mz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = nz(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;oz(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;lz(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;pz(a, f);qz(f);l = i;return;\n }\n }function nz(a) {\n a = a | 0;return 536870911;\n }function oz(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function pz(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function qz(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function rz(a) {\n a = a | 0;uz(a);return;\n }function sz(a) {\n a = a | 0;tz(a + 24 | 0);return;\n }function tz(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function uz(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 7, b, vz() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function vz() {\n return 1860;\n }function wz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;return yz(c[(xz(a) | 0) >> 2] | 0, b, d) | 0;\n }function xz(a) {\n a = a | 0;return (c[(iz() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function yz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;e = l;l = l + 32 | 0;h = e + 12 | 0;g = e + 8 | 0;i = e;j = e + 16 | 0;f = e + 4 | 0;zz(j, b);Az(i, j, b);ik(f, d);d = jk(f, d) | 0;c[h >> 2] = c[i >> 2];Eb[a & 15](g, h, d);d = Bz(g) | 0;wf(g);kk(f);l = e;return d | 0;\n }function zz(a, b) {\n a = a | 0;b = b | 0;return;\n }function Az(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;Cz(a, c);return;\n }function Bz(a) {\n a = a | 0;return Sg(a) | 0;\n }function Cz(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0;f = l;l = l + 16 | 0;d = f;e = b;if (!(e & 1)) c[a >> 2] = c[b >> 2];else {\n Dz(d, 0);Ja(e | 0, d | 0) | 0;Ez(a, d);Fz(d);\n }l = f;return;\n }function Dz(b, d) {\n b = b | 0;d = d | 0;ah(b, d);c[b + 4 >> 2] = 0;a[b + 8 >> 0] = 0;return;\n }function Ez(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = c[b + 4 >> 2];return;\n }function Fz(b) {\n b = b | 0;a[b + 8 >> 0] = 0;return;\n }function Gz(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Hz() | 0;a = Iz(d) | 0;fi(g, b, f, a, Jz(d, e) | 0, e);return;\n }function Hz() {\n var b = 0,\n d = 0;if (!(a[8064] | 0)) {\n Qz(10968);Ha(68, 10968, o | 0) | 0;d = 8064;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(10968) | 0)) {\n b = 10968;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));Qz(10968);\n }return 10968;\n }function Iz(a) {\n a = a | 0;return a | 0;\n }function Jz(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Hz() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n Kz(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n Lz(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function Kz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function Lz(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = Mz(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;Nz(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;Kz(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;Oz(a, f);Pz(f);l = i;return;\n }\n }function Mz(a) {\n a = a | 0;return 536870911;\n }function Nz(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function Oz(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function Pz(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function Qz(a) {\n a = a | 0;Tz(a);return;\n }function Rz(a) {\n a = a | 0;Sz(a + 24 | 0);return;\n }function Sz(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function Tz(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 1, b, Uz() | 0, 5);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function Uz() {\n return 1872;\n }function Vz(a, b, d, e, f, g) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;Xz(c[(Wz(a) | 0) >> 2] | 0, b, d, e, f, g);return;\n }function Wz(a) {\n a = a | 0;return (c[(Hz() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function Xz(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;g = l;l = l + 32 | 0;h = g + 16 | 0;i = g + 12 | 0;j = g + 8 | 0;k = g + 4 | 0;m = g;ik(h, b);b = jk(h, b) | 0;ik(i, c);c = jk(i, c) | 0;ik(j, d);d = jk(j, d) | 0;ik(k, e);e = jk(k, e) | 0;ik(m, f);f = jk(m, f) | 0;jb[a & 1](b, c, d, e, f);kk(m);kk(k);kk(j);kk(i);kk(h);l = g;return;\n }function Yz(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = c[a >> 2] | 0;f = Zz() | 0;a = _z(d) | 0;fi(g, b, f, a, $z(d, e) | 0, e);return;\n }function Zz() {\n var b = 0,\n d = 0;if (!(a[8072] | 0)) {\n gA(11004);Ha(69, 11004, o | 0) | 0;d = 8072;c[d >> 2] = 1;c[d + 4 >> 2] = 0;\n }if (!(si(11004) | 0)) {\n b = 11004;d = b + 36 | 0;do {\n c[b >> 2] = 0;b = b + 4 | 0;\n } while ((b | 0) < (d | 0));gA(11004);\n }return 11004;\n }function _z(a) {\n a = a | 0;return a | 0;\n }function $z(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;i = l;l = l + 16 | 0;f = i;g = i + 4 | 0;c[f >> 2] = a;j = Zz() | 0;h = j + 24 | 0;b = ji(b, 4) | 0;c[g >> 2] = b;d = j + 28 | 0;e = c[d >> 2] | 0;if (e >>> 0 < (c[j + 32 >> 2] | 0) >>> 0) {\n aA(e, a, b);b = (c[d >> 2] | 0) + 8 | 0;c[d >> 2] = b;\n } else {\n bA(h, f, g);b = c[d >> 2] | 0;\n }l = i;return (b - (c[h >> 2] | 0) >> 3) + -1 | 0;\n }function aA(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;c[a + 4 >> 2] = d;return;\n }function bA(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0;i = l;l = l + 32 | 0;f = i;g = a + 4 | 0;h = ((c[g >> 2] | 0) - (c[a >> 2] | 0) >> 3) + 1 | 0;e = cA(a) | 0;if (e >>> 0 < h >>> 0) jC(a);else {\n j = c[a >> 2] | 0;m = (c[a + 8 >> 2] | 0) - j | 0;k = m >> 2;dA(f, m >> 3 >>> 0 < e >>> 1 >>> 0 ? k >>> 0 < h >>> 0 ? h : k : e, (c[g >> 2] | 0) - j >> 3, a + 8 | 0);h = f + 8 | 0;aA(c[h >> 2] | 0, c[b >> 2] | 0, c[d >> 2] | 0);c[h >> 2] = (c[h >> 2] | 0) + 8;eA(a, f);fA(f);l = i;return;\n }\n }function cA(a) {\n a = a | 0;return 536870911;\n }function dA(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0;c[a + 12 >> 2] = 0;c[a + 16 >> 2] = e;do if (b) {\n if (b >>> 0 > 536870911) Ta();else {\n f = qC(b << 3) | 0;break;\n }\n } else f = 0; while (0);c[a >> 2] = f;e = f + (d << 3) | 0;c[a + 8 >> 2] = e;c[a + 4 >> 2] = e;c[a + 12 >> 2] = f + (b << 3);return;\n }function eA(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;e = c[a >> 2] | 0;h = a + 4 | 0;g = b + 4 | 0;f = (c[h >> 2] | 0) - e | 0;d = (c[g >> 2] | 0) + (0 - (f >> 3) << 3) | 0;c[g >> 2] = d;if ((f | 0) > 0) {\n BC(d | 0, e | 0, f | 0) | 0;e = g;d = c[g >> 2] | 0;\n } else e = g;g = c[a >> 2] | 0;c[a >> 2] = d;c[e >> 2] = g;g = b + 8 | 0;f = c[h >> 2] | 0;c[h >> 2] = c[g >> 2];c[g >> 2] = f;g = a + 8 | 0;h = b + 12 | 0;a = c[g >> 2] | 0;c[g >> 2] = c[h >> 2];c[h >> 2] = a;c[b >> 2] = c[e >> 2];return;\n }function fA(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;b = c[a + 4 >> 2] | 0;d = a + 8 | 0;e = c[d >> 2] | 0;if ((e | 0) != (b | 0)) c[d >> 2] = e + (~((e + -8 - b | 0) >>> 3) << 3);a = c[a >> 2] | 0;if (a | 0) sC(a);return;\n }function gA(a) {\n a = a | 0;jA(a);return;\n }function hA(a) {\n a = a | 0;iA(a + 24 | 0);return;\n }function iA(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function jA(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 1, 12, b, kA() | 0, 2);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function kA() {\n return 1896;\n }function lA(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;nA(c[(mA(a) | 0) >> 2] | 0, b, d);return;\n }function mA(a) {\n a = a | 0;return (c[(Zz() | 0) + 24 >> 2] | 0) + (a << 3) | 0;\n }function nA(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;var d = 0,\n e = 0,\n f = 0;d = l;l = l + 16 | 0;f = d + 4 | 0;e = d;oA(f, b);b = pA(f, b) | 0;ik(e, c);c = jk(e, c) | 0;ob[a & 31](b, c);kk(e);l = d;return;\n }function oA(a, b) {\n a = a | 0;b = b | 0;return;\n }function pA(a, b) {\n a = a | 0;b = b | 0;return qA(b) | 0;\n }function qA(a) {\n a = a | 0;return a | 0;\n }function rA() {\n var b = 0;if (!(a[8080] | 0)) {\n sA(11040);Ha(70, 11040, o | 0) | 0;b = 8080;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }if (!(si(11040) | 0)) sA(11040);return 11040;\n }function sA(a) {\n a = a | 0;vA(a);Gt(a, 71);return;\n }function tA(a) {\n a = a | 0;uA(a + 24 | 0);return;\n }function uA(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0;d = c[a >> 2] | 0;e = d;if (d | 0) {\n a = a + 4 | 0;b = c[a >> 2] | 0;if ((b | 0) != (d | 0)) c[a >> 2] = b + (~((b + -8 - e | 0) >>> 3) << 3);sC(d);\n }return;\n }function vA(a) {\n a = a | 0;var b = 0;b = vi() | 0;yi(a, 5, 7, b, zA() | 0, 0);c[a + 24 >> 2] = 0;c[a + 28 >> 2] = 0;c[a + 32 >> 2] = 0;return;\n }function wA(a) {\n a = a | 0;xA(a);return;\n }function xA(a) {\n a = a | 0;yA(a);return;\n }function yA(b) {\n b = b | 0;a[b + 8 >> 0] = 1;return;\n }function zA() {\n return 1936;\n }function AA() {\n return BA() | 0;\n }function BA() {\n var a = 0,\n b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;b = l;l = l + 16 | 0;f = b + 4 | 0;h = b;d = jy(8) | 0;a = d;g = a + 4 | 0;c[g >> 2] = qC(1) | 0;e = qC(8) | 0;g = c[g >> 2] | 0;c[h >> 2] = 0;c[f >> 2] = c[h >> 2];CA(e, g, f);c[d >> 2] = e;l = b;return a | 0;\n }function CA(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;c[a >> 2] = b;d = qC(16) | 0;c[d + 4 >> 2] = 0;c[d + 8 >> 2] = 0;c[d >> 2] = 1916;c[d + 12 >> 2] = b;c[a + 4 >> 2] = d;return;\n }function DA(a) {\n a = a | 0;kC(a);sC(a);return;\n }function EA(a) {\n a = a | 0;a = c[a + 12 >> 2] | 0;if (a | 0) sC(a);return;\n }function FA(a) {\n a = a | 0;sC(a);return;\n }function GA() {\n var b = 0;if (!(a[8088] | 0)) {\n NA(11076);Ha(25, 11076, o | 0) | 0;b = 8088;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 11076;\n }function HA(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = IA() | 0;c[a + 4 >> 2] = JA() | 0;c[a + 12 >> 2] = b;c[a + 8 >> 2] = KA() | 0;c[a + 32 >> 2] = 10;return;\n }function IA() {\n return 11745;\n }function JA() {\n return 1940;\n }function KA() {\n return lr() | 0;\n }function LA(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;if ((jr(d, 896) | 0) == 512) {\n if (c | 0) {\n MA(c);sC(c);\n }\n } else if (b | 0) sC(b);return;\n }function MA(a) {\n a = a | 0;a = c[a + 4 >> 2] | 0;if (a | 0) oC(a);return;\n }function NA(a) {\n a = a | 0;Zi(a);return;\n }function OA(a, b) {\n a = a | 0;b = b | 0;c[a >> 2] = b;return;\n }function PA(a) {\n a = a | 0;return c[a >> 2] | 0;\n }function QA(b) {\n b = b | 0;return a[c[b >> 2] >> 0] | 0;\n }function RA(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;c[e >> 2] = c[a >> 2];SA(b, e) | 0;l = d;return;\n }function SA(a, b) {\n a = a | 0;b = b | 0;var d = 0;d = TA(c[a >> 2] | 0, b) | 0;b = a + 4 | 0;c[(c[b >> 2] | 0) + 8 >> 2] = d;return c[(c[b >> 2] | 0) + 8 >> 2] | 0;\n }function TA(a, b) {\n a = a | 0;b = b | 0;var d = 0,\n e = 0;d = l;l = l + 16 | 0;e = d;UA(e);a = Sg(a) | 0;b = VA(a, c[b >> 2] | 0) | 0;WA(e);l = d;return b | 0;\n }function UA(a) {\n a = a | 0;c[a >> 2] = c[2701];c[a + 4 >> 2] = c[2703];return;\n }function VA(a, b) {\n a = a | 0;b = b | 0;var c = 0;c = Vg(XA() | 0) | 0;return bb(0, c | 0, a | 0, sw(b) | 0) | 0;\n }function WA(a) {\n a = a | 0;xy(c[a >> 2] | 0, c[a + 4 >> 2] | 0);return;\n }function XA() {\n var b = 0;if (!(a[8096] | 0)) {\n YA(11120);b = 8096;c[b >> 2] = 1;c[b + 4 >> 2] = 0;\n }return 11120;\n }function YA(a) {\n a = a | 0;fh(a, ZA() | 0, 1);return;\n }function ZA() {\n return 1948;\n }function _A() {\n $A();return;\n }function $A() {\n var b = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0;s = l;l = l + 16 | 0;o = s + 4 | 0;p = s;Ea(65536, 10804, c[2702] | 0, 10812);f = Wv() | 0;e = c[f >> 2] | 0;b = c[e >> 2] | 0;if (b | 0) {\n g = c[f + 8 >> 2] | 0;f = c[f + 4 >> 2] | 0;while (1) {\n Ma(b | 0, d[f >> 0] | 0 | 0, a[g >> 0] | 0);e = e + 4 | 0;b = c[e >> 2] | 0;if (!b) break;else {\n g = g + 1 | 0;f = f + 1 | 0;\n }\n }\n }b = Yv() | 0;e = c[b >> 2] | 0;if (e | 0) do {\n Na(e | 0, c[b + 4 >> 2] | 0);b = b + 8 | 0;e = c[b >> 2] | 0;\n } while ((e | 0) != 0);Na(aB() | 0, 5167);n = Iv() | 0;b = c[n >> 2] | 0;a: do if (b | 0) {\n do {\n bB(c[b + 4 >> 2] | 0);b = c[b >> 2] | 0;\n } while ((b | 0) != 0);b = c[n >> 2] | 0;if (b | 0) {\n m = n;do {\n while (1) {\n h = b;b = c[b >> 2] | 0;h = c[h + 4 >> 2] | 0;if (!(cB(h) | 0)) break;c[p >> 2] = m;c[o >> 2] = c[p >> 2];dB(n, o) | 0;if (!b) break a;\n }eB(h);m = c[m >> 2] | 0;e = fB(h) | 0;i = Va() | 0;j = l;l = l + ((1 * (e << 2) | 0) + 15 & -16) | 0;k = l;l = l + ((1 * (e << 2) | 0) + 15 & -16) | 0;e = c[(Zw(h) | 0) >> 2] | 0;if (e | 0) {\n f = j;g = k;while (1) {\n c[f >> 2] = c[(Xw(c[e + 4 >> 2] | 0) | 0) >> 2];c[g >> 2] = c[e + 8 >> 2];e = c[e >> 2] | 0;if (!e) break;else {\n f = f + 4 | 0;g = g + 4 | 0;\n }\n }\n }t = Xw(h) | 0;e = gB(h) | 0;f = fB(h) | 0;g = hB(h) | 0;Ra(t | 0, e | 0, j | 0, k | 0, f | 0, g | 0, Tv(h) | 0);Ga(i | 0);\n } while ((b | 0) != 0);\n }\n } while (0);b = c[(Vv() | 0) >> 2] | 0;if (b | 0) do {\n t = b + 4 | 0;n = aw(t) | 0;h = fw(n) | 0;i = bw(n) | 0;j = (cw(n) | 0) + 1 | 0;k = iB(n) | 0;m = jB(t) | 0;n = si(n) | 0;o = hw(t) | 0;p = kB(t) | 0;Pa(0, h | 0, i | 0, j | 0, k | 0, m | 0, n | 0, o | 0, p | 0, lB(t) | 0);b = c[b >> 2] | 0;\n } while ((b | 0) != 0);b = c[(Iv() | 0) >> 2] | 0;b: do if (b | 0) {\n c: while (1) {\n e = c[b + 4 >> 2] | 0;if (e | 0 ? (q = c[(Xw(e) | 0) >> 2] | 0, r = c[(ax(e) | 0) >> 2] | 0, r | 0) : 0) {\n f = r;do {\n e = f + 4 | 0;g = aw(e) | 0;d: do if (g | 0) switch (si(g) | 0) {case 0:\n break c;case 4:case 3:case 2:\n {\n k = fw(g) | 0;m = bw(g) | 0;n = (cw(g) | 0) + 1 | 0;o = iB(g) | 0;p = si(g) | 0;t = hw(e) | 0;Pa(q | 0, k | 0, m | 0, n | 0, o | 0, 0, p | 0, t | 0, kB(e) | 0, lB(e) | 0);break d;\n }case 1:\n {\n j = fw(g) | 0;k = bw(g) | 0;m = (cw(g) | 0) + 1 | 0;n = iB(g) | 0;o = jB(e) | 0;p = si(g) | 0;t = hw(e) | 0;Pa(q | 0, j | 0, k | 0, m | 0, n | 0, o | 0, p | 0, t | 0, kB(e) | 0, lB(e) | 0);break d;\n }case 5:\n {\n n = fw(g) | 0;o = bw(g) | 0;p = (cw(g) | 0) + 1 | 0;t = iB(g) | 0;Pa(q | 0, n | 0, o | 0, p | 0, t | 0, mB(g) | 0, si(g) | 0, 0, 0, 0);break d;\n }default:\n break d;} while (0);f = c[f >> 2] | 0;\n } while ((f | 0) != 0);\n }b = c[b >> 2] | 0;if (!b) break b;\n }Ta();\n } while (0);Sa();l = s;return;\n }function aB() {\n return 11703;\n }function bB(b) {\n b = b | 0;a[b + 40 >> 0] = 0;return;\n }function cB(b) {\n b = b | 0;return (a[b + 40 >> 0] | 0) != 0 | 0;\n }function dB(a, b) {\n a = a | 0;b = b | 0;b = nB(b) | 0;a = c[b >> 2] | 0;c[b >> 2] = c[a >> 2];sC(a);return c[b >> 2] | 0;\n }function eB(b) {\n b = b | 0;a[b + 40 >> 0] = 1;return;\n }function fB(a) {\n a = a | 0;return c[a + 20 >> 2] | 0;\n }function gB(a) {\n a = a | 0;return c[a + 8 >> 2] | 0;\n }function hB(a) {\n a = a | 0;return c[a + 32 >> 2] | 0;\n }function iB(a) {\n a = a | 0;return c[a + 4 >> 2] | 0;\n }function jB(a) {\n a = a | 0;return c[a + 4 >> 2] | 0;\n }function kB(a) {\n a = a | 0;return c[a + 8 >> 2] | 0;\n }function lB(a) {\n a = a | 0;return c[a + 16 >> 2] | 0;\n }function mB(a) {\n a = a | 0;return c[a + 20 >> 2] | 0;\n }function nB(a) {\n a = a | 0;return c[a >> 2] | 0;\n }\n function oB(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0;x = l;l = l + 16 | 0;o = x;do if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;a = k >>> 3;n = c[2783] | 0;d = n >>> a;if (d & 3 | 0) {\n b = (d & 1 ^ 1) + a | 0;a = 11172 + (b << 1 << 2) | 0;d = a + 8 | 0;e = c[d >> 2] | 0;f = e + 8 | 0;g = c[f >> 2] | 0;if ((a | 0) == (g | 0)) c[2783] = n & ~(1 << b);else {\n c[g + 12 >> 2] = a;c[d >> 2] = g;\n }w = b << 3;c[e + 4 >> 2] = w | 3;w = e + w + 4 | 0;c[w >> 2] = c[w >> 2] | 1;w = f;l = x;return w | 0;\n }m = c[2785] | 0;if (k >>> 0 > m >>> 0) {\n if (d | 0) {\n b = 2 << a;b = d << a & (b | 0 - b);b = (b & 0 - b) + -1 | 0;h = b >>> 12 & 16;b = b >>> h;d = b >>> 5 & 8;b = b >>> d;f = b >>> 2 & 4;b = b >>> f;a = b >>> 1 & 2;b = b >>> a;e = b >>> 1 & 1;e = (d | h | f | a | e) + (b >>> e) | 0;b = 11172 + (e << 1 << 2) | 0;a = b + 8 | 0;f = c[a >> 2] | 0;h = f + 8 | 0;d = c[h >> 2] | 0;if ((b | 0) == (d | 0)) {\n a = n & ~(1 << e);c[2783] = a;\n } else {\n c[d + 12 >> 2] = b;c[a >> 2] = d;a = n;\n }g = (e << 3) - k | 0;c[f + 4 >> 2] = k | 3;e = f + k | 0;c[e + 4 >> 2] = g | 1;c[e + g >> 2] = g;if (m | 0) {\n f = c[2788] | 0;b = m >>> 3;d = 11172 + (b << 1 << 2) | 0;b = 1 << b;if (!(a & b)) {\n c[2783] = a | b;b = d;a = d + 8 | 0;\n } else {\n a = d + 8 | 0;b = c[a >> 2] | 0;\n }c[a >> 2] = f;c[b + 12 >> 2] = f;c[f + 8 >> 2] = b;c[f + 12 >> 2] = d;\n }c[2785] = g;c[2788] = e;w = h;l = x;return w | 0;\n }i = c[2784] | 0;if (i) {\n d = (i & 0 - i) + -1 | 0;h = d >>> 12 & 16;d = d >>> h;g = d >>> 5 & 8;d = d >>> g;j = d >>> 2 & 4;d = d >>> j;e = d >>> 1 & 2;d = d >>> e;a = d >>> 1 & 1;a = c[11436 + ((g | h | j | e | a) + (d >>> a) << 2) >> 2] | 0;d = (c[a + 4 >> 2] & -8) - k | 0;e = c[a + 16 + (((c[a + 16 >> 2] | 0) == 0 & 1) << 2) >> 2] | 0;if (!e) {\n j = a;g = d;\n } else {\n do {\n h = (c[e + 4 >> 2] & -8) - k | 0;j = h >>> 0 < d >>> 0;d = j ? h : d;a = j ? e : a;e = c[e + 16 + (((c[e + 16 >> 2] | 0) == 0 & 1) << 2) >> 2] | 0;\n } while ((e | 0) != 0);j = a;g = d;\n }h = j + k | 0;if (j >>> 0 < h >>> 0) {\n f = c[j + 24 >> 2] | 0;b = c[j + 12 >> 2] | 0;do if ((b | 0) == (j | 0)) {\n a = j + 20 | 0;b = c[a >> 2] | 0;if (!b) {\n a = j + 16 | 0;b = c[a >> 2] | 0;if (!b) {\n d = 0;break;\n }\n }while (1) {\n d = b + 20 | 0;e = c[d >> 2] | 0;if (e | 0) {\n b = e;a = d;continue;\n }d = b + 16 | 0;e = c[d >> 2] | 0;if (!e) break;else {\n b = e;a = d;\n }\n }c[a >> 2] = 0;d = b;\n } else {\n d = c[j + 8 >> 2] | 0;c[d + 12 >> 2] = b;c[b + 8 >> 2] = d;d = b;\n } while (0);do if (f | 0) {\n b = c[j + 28 >> 2] | 0;a = 11436 + (b << 2) | 0;if ((j | 0) == (c[a >> 2] | 0)) {\n c[a >> 2] = d;if (!d) {\n c[2784] = i & ~(1 << b);break;\n }\n } else {\n c[f + 16 + (((c[f + 16 >> 2] | 0) != (j | 0) & 1) << 2) >> 2] = d;if (!d) break;\n }c[d + 24 >> 2] = f;b = c[j + 16 >> 2] | 0;if (b | 0) {\n c[d + 16 >> 2] = b;c[b + 24 >> 2] = d;\n }b = c[j + 20 >> 2] | 0;if (b | 0) {\n c[d + 20 >> 2] = b;c[b + 24 >> 2] = d;\n }\n } while (0);if (g >>> 0 < 16) {\n w = g + k | 0;c[j + 4 >> 2] = w | 3;w = j + w + 4 | 0;c[w >> 2] = c[w >> 2] | 1;\n } else {\n c[j + 4 >> 2] = k | 3;c[h + 4 >> 2] = g | 1;c[h + g >> 2] = g;if (m | 0) {\n e = c[2788] | 0;b = m >>> 3;d = 11172 + (b << 1 << 2) | 0;b = 1 << b;if (!(n & b)) {\n c[2783] = n | b;b = d;a = d + 8 | 0;\n } else {\n a = d + 8 | 0;b = c[a >> 2] | 0;\n }c[a >> 2] = e;c[b + 12 >> 2] = e;c[e + 8 >> 2] = b;c[e + 12 >> 2] = d;\n }c[2785] = g;c[2788] = h;\n }w = j + 8 | 0;l = x;return w | 0;\n } else n = k;\n } else n = k;\n } else n = k;\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;k = a & -8;j = c[2784] | 0;if (j) {\n e = 0 - k | 0;a = a >>> 8;if (a) {\n if (k >>> 0 > 16777215) i = 31;else {\n n = (a + 1048320 | 0) >>> 16 & 8;v = a << n;m = (v + 520192 | 0) >>> 16 & 4;v = v << m;i = (v + 245760 | 0) >>> 16 & 2;i = 14 - (m | n | i) + (v << i >>> 15) | 0;i = k >>> (i + 7 | 0) & 1 | i << 1;\n }\n } else i = 0;d = c[11436 + (i << 2) >> 2] | 0;a: do if (!d) {\n d = 0;a = 0;v = 57;\n } else {\n a = 0;h = k << ((i | 0) == 31 ? 0 : 25 - (i >>> 1) | 0);g = 0;while (1) {\n f = (c[d + 4 >> 2] & -8) - k | 0;if (f >>> 0 < e >>> 0) if (!f) {\n a = d;e = 0;f = d;v = 61;break a;\n } else {\n a = d;e = f;\n }f = c[d + 20 >> 2] | 0;d = c[d + 16 + (h >>> 31 << 2) >> 2] | 0;g = (f | 0) == 0 | (f | 0) == (d | 0) ? g : f;f = (d | 0) == 0;if (f) {\n d = g;v = 57;break;\n } else h = h << ((f ^ 1) & 1);\n }\n } while (0);if ((v | 0) == 57) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << i;a = j & (a | 0 - a);if (!a) {\n n = k;break;\n }n = (a & 0 - a) + -1 | 0;h = n >>> 12 & 16;n = n >>> h;g = n >>> 5 & 8;n = n >>> g;i = n >>> 2 & 4;n = n >>> i;m = n >>> 1 & 2;n = n >>> m;d = n >>> 1 & 1;a = 0;d = c[11436 + ((g | h | i | m | d) + (n >>> d) << 2) >> 2] | 0;\n }if (!d) {\n i = a;h = e;\n } else {\n f = d;v = 61;\n }\n }if ((v | 0) == 61) while (1) {\n v = 0;d = (c[f + 4 >> 2] & -8) - k | 0;n = d >>> 0 < e >>> 0;d = n ? d : e;a = n ? f : a;f = c[f + 16 + (((c[f + 16 >> 2] | 0) == 0 & 1) << 2) >> 2] | 0;if (!f) {\n i = a;h = d;break;\n } else {\n e = d;v = 61;\n }\n }if ((i | 0) != 0 ? h >>> 0 < ((c[2785] | 0) - k | 0) >>> 0 : 0) {\n g = i + k | 0;if (i >>> 0 >= g >>> 0) {\n w = 0;l = x;return w | 0;\n }f = c[i + 24 >> 2] | 0;b = c[i + 12 >> 2] | 0;do if ((b | 0) == (i | 0)) {\n a = i + 20 | 0;b = c[a >> 2] | 0;if (!b) {\n a = i + 16 | 0;b = c[a >> 2] | 0;if (!b) {\n b = 0;break;\n }\n }while (1) {\n d = b + 20 | 0;e = c[d >> 2] | 0;if (e | 0) {\n b = e;a = d;continue;\n }d = b + 16 | 0;e = c[d >> 2] | 0;if (!e) break;else {\n b = e;a = d;\n }\n }c[a >> 2] = 0;\n } else {\n w = c[i + 8 >> 2] | 0;c[w + 12 >> 2] = b;c[b + 8 >> 2] = w;\n } while (0);do if (f) {\n a = c[i + 28 >> 2] | 0;d = 11436 + (a << 2) | 0;if ((i | 0) == (c[d >> 2] | 0)) {\n c[d >> 2] = b;if (!b) {\n e = j & ~(1 << a);c[2784] = e;break;\n }\n } else {\n c[f + 16 + (((c[f + 16 >> 2] | 0) != (i | 0) & 1) << 2) >> 2] = b;if (!b) {\n e = j;break;\n }\n }c[b + 24 >> 2] = f;a = c[i + 16 >> 2] | 0;if (a | 0) {\n c[b + 16 >> 2] = a;c[a + 24 >> 2] = b;\n }a = c[i + 20 >> 2] | 0;if (a) {\n c[b + 20 >> 2] = a;c[a + 24 >> 2] = b;e = j;\n } else e = j;\n } else e = j; while (0);do if (h >>> 0 >= 16) {\n c[i + 4 >> 2] = k | 3;c[g + 4 >> 2] = h | 1;c[g + h >> 2] = h;b = h >>> 3;if (h >>> 0 < 256) {\n d = 11172 + (b << 1 << 2) | 0;a = c[2783] | 0;b = 1 << b;if (!(a & b)) {\n c[2783] = a | b;b = d;a = d + 8 | 0;\n } else {\n a = d + 8 | 0;b = c[a >> 2] | 0;\n }c[a >> 2] = g;c[b + 12 >> 2] = g;c[g + 8 >> 2] = b;c[g + 12 >> 2] = d;break;\n }b = h >>> 8;if (b) {\n if (h >>> 0 > 16777215) b = 31;else {\n v = (b + 1048320 | 0) >>> 16 & 8;w = b << v;u = (w + 520192 | 0) >>> 16 & 4;w = w << u;b = (w + 245760 | 0) >>> 16 & 2;b = 14 - (u | v | b) + (w << b >>> 15) | 0;b = h >>> (b + 7 | 0) & 1 | b << 1;\n }\n } else b = 0;d = 11436 + (b << 2) | 0;c[g + 28 >> 2] = b;a = g + 16 | 0;c[a + 4 >> 2] = 0;c[a >> 2] = 0;a = 1 << b;if (!(e & a)) {\n c[2784] = e | a;c[d >> 2] = g;c[g + 24 >> 2] = d;c[g + 12 >> 2] = g;c[g + 8 >> 2] = g;break;\n }a = h << ((b | 0) == 31 ? 0 : 25 - (b >>> 1) | 0);d = c[d >> 2] | 0;while (1) {\n if ((c[d + 4 >> 2] & -8 | 0) == (h | 0)) {\n v = 97;break;\n }e = d + 16 + (a >>> 31 << 2) | 0;b = c[e >> 2] | 0;if (!b) {\n v = 96;break;\n } else {\n a = a << 1;d = b;\n }\n }if ((v | 0) == 96) {\n c[e >> 2] = g;c[g + 24 >> 2] = d;c[g + 12 >> 2] = g;c[g + 8 >> 2] = g;break;\n } else if ((v | 0) == 97) {\n v = d + 8 | 0;w = c[v >> 2] | 0;c[w + 12 >> 2] = g;c[v >> 2] = g;c[g + 8 >> 2] = w;c[g + 12 >> 2] = d;c[g + 24 >> 2] = 0;break;\n }\n } else {\n w = h + k | 0;c[i + 4 >> 2] = w | 3;w = i + w + 4 | 0;c[w >> 2] = c[w >> 2] | 1;\n } while (0);w = i + 8 | 0;l = x;return w | 0;\n } else n = k;\n } else n = k;\n } else n = -1; while (0);d = c[2785] | 0;if (d >>> 0 >= n >>> 0) {\n b = d - n | 0;a = c[2788] | 0;if (b >>> 0 > 15) {\n w = a + n | 0;c[2788] = w;c[2785] = b;c[w + 4 >> 2] = b | 1;c[w + b >> 2] = b;c[a + 4 >> 2] = n | 3;\n } else {\n c[2785] = 0;c[2788] = 0;c[a + 4 >> 2] = d | 3;w = a + d + 4 | 0;c[w >> 2] = c[w >> 2] | 1;\n }w = a + 8 | 0;l = x;return w | 0;\n }h = c[2786] | 0;if (h >>> 0 > n >>> 0) {\n u = h - n | 0;c[2786] = u;w = c[2789] | 0;v = w + n | 0;c[2789] = v;c[v + 4 >> 2] = u | 1;c[w + 4 >> 2] = n | 3;w = w + 8 | 0;l = x;return w | 0;\n }if (!(c[2901] | 0)) {\n c[2903] = 4096;c[2902] = 4096;c[2904] = -1;c[2905] = -1;c[2906] = 0;c[2894] = 0;a = o & -16 ^ 1431655768;c[o >> 2] = a;c[2901] = a;a = 4096;\n } else a = c[2903] | 0;i = n + 48 | 0;j = n + 47 | 0;g = a + j | 0;f = 0 - a | 0;k = g & f;if (k >>> 0 <= n >>> 0) {\n w = 0;l = x;return w | 0;\n }a = c[2893] | 0;if (a | 0 ? (m = c[2891] | 0, o = m + k | 0, o >>> 0 <= m >>> 0 | o >>> 0 > a >>> 0) : 0) {\n w = 0;l = x;return w | 0;\n }b: do if (!(c[2894] & 4)) {\n d = c[2789] | 0;c: do if (d) {\n e = 11580;while (1) {\n a = c[e >> 2] | 0;if (a >>> 0 <= d >>> 0 ? (r = e + 4 | 0, (a + (c[r >> 2] | 0) | 0) >>> 0 > d >>> 0) : 0) break;a = c[e + 8 >> 2] | 0;if (!a) {\n v = 118;break c;\n } else e = a;\n }b = g - h & f;if (b >>> 0 < 2147483647) {\n a = FC(b | 0) | 0;if ((a | 0) == ((c[e >> 2] | 0) + (c[r >> 2] | 0) | 0)) {\n if ((a | 0) != (-1 | 0)) {\n h = b;g = a;v = 135;break b;\n }\n } else {\n e = a;v = 126;\n }\n } else b = 0;\n } else v = 118; while (0);do if ((v | 0) == 118) {\n d = FC(0) | 0;if ((d | 0) != (-1 | 0) ? (b = d, p = c[2902] | 0, q = p + -1 | 0, b = ((q & b | 0) == 0 ? 0 : (q + b & 0 - p) - b | 0) + k | 0, p = c[2891] | 0, q = b + p | 0, b >>> 0 > n >>> 0 & b >>> 0 < 2147483647) : 0) {\n r = c[2893] | 0;if (r | 0 ? q >>> 0 <= p >>> 0 | q >>> 0 > r >>> 0 : 0) {\n b = 0;break;\n }a = FC(b | 0) | 0;if ((a | 0) == (d | 0)) {\n h = b;g = d;v = 135;break b;\n } else {\n e = a;v = 126;\n }\n } else b = 0;\n } while (0);do if ((v | 0) == 126) {\n d = 0 - b | 0;if (!(i >>> 0 > b >>> 0 & (b >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) if ((e | 0) == (-1 | 0)) {\n b = 0;break;\n } else {\n h = b;g = e;v = 135;break b;\n }a = c[2903] | 0;a = j - b + a & 0 - a;if (a >>> 0 >= 2147483647) {\n h = b;g = e;v = 135;break b;\n }if ((FC(a | 0) | 0) == (-1 | 0)) {\n FC(d | 0) | 0;b = 0;break;\n } else {\n h = a + b | 0;g = e;v = 135;break b;\n }\n } while (0);c[2894] = c[2894] | 4;v = 133;\n } else {\n b = 0;v = 133;\n } while (0);if (((v | 0) == 133 ? k >>> 0 < 2147483647 : 0) ? (u = FC(k | 0) | 0, r = FC(0) | 0, s = r - u | 0, t = s >>> 0 > (n + 40 | 0) >>> 0, !((u | 0) == (-1 | 0) | t ^ 1 | u >>> 0 < r >>> 0 & ((u | 0) != (-1 | 0) & (r | 0) != (-1 | 0)) ^ 1)) : 0) {\n h = t ? s : b;g = u;v = 135;\n }if ((v | 0) == 135) {\n b = (c[2891] | 0) + h | 0;c[2891] = b;if (b >>> 0 > (c[2892] | 0) >>> 0) c[2892] = b;j = c[2789] | 0;do if (j) {\n b = 11580;while (1) {\n a = c[b >> 2] | 0;d = b + 4 | 0;e = c[d >> 2] | 0;if ((g | 0) == (a + e | 0)) {\n v = 145;break;\n }f = c[b + 8 >> 2] | 0;if (!f) break;else b = f;\n }if (((v | 0) == 145 ? (c[b + 12 >> 2] & 8 | 0) == 0 : 0) ? j >>> 0 < g >>> 0 & j >>> 0 >= a >>> 0 : 0) {\n c[d >> 2] = e + h;w = j + 8 | 0;w = (w & 7 | 0) == 0 ? 0 : 0 - w & 7;v = j + w | 0;w = (c[2786] | 0) + (h - w) | 0;c[2789] = v;c[2786] = w;c[v + 4 >> 2] = w | 1;c[v + w + 4 >> 2] = 40;c[2790] = c[2905];break;\n }if (g >>> 0 < (c[2787] | 0) >>> 0) c[2787] = g;d = g + h | 0;b = 11580;while (1) {\n if ((c[b >> 2] | 0) == (d | 0)) {\n v = 153;break;\n }a = c[b + 8 >> 2] | 0;if (!a) break;else b = a;\n }if ((v | 0) == 153 ? (c[b + 12 >> 2] & 8 | 0) == 0 : 0) {\n c[b >> 2] = g;m = b + 4 | 0;c[m >> 2] = (c[m >> 2] | 0) + h;m = g + 8 | 0;m = g + ((m & 7 | 0) == 0 ? 0 : 0 - m & 7) | 0;b = d + 8 | 0;b = d + ((b & 7 | 0) == 0 ? 0 : 0 - b & 7) | 0;k = m + n | 0;i = b - m - n | 0;c[m + 4 >> 2] = n | 3;do if ((b | 0) != (j | 0)) {\n if ((b | 0) == (c[2788] | 0)) {\n w = (c[2785] | 0) + i | 0;c[2785] = w;c[2788] = k;c[k + 4 >> 2] = w | 1;c[k + w >> 2] = w;break;\n }a = c[b + 4 >> 2] | 0;if ((a & 3 | 0) == 1) {\n h = a & -8;e = a >>> 3;d: do if (a >>> 0 < 256) {\n a = c[b + 8 >> 2] | 0;d = c[b + 12 >> 2] | 0;if ((d | 0) == (a | 0)) {\n c[2783] = c[2783] & ~(1 << e);break;\n } else {\n c[a + 12 >> 2] = d;c[d + 8 >> 2] = a;break;\n }\n } else {\n g = c[b + 24 >> 2] | 0;a = c[b + 12 >> 2] | 0;do if ((a | 0) == (b | 0)) {\n e = b + 16 | 0;d = e + 4 | 0;a = c[d >> 2] | 0;if (!a) {\n a = c[e >> 2] | 0;if (!a) {\n a = 0;break;\n } else d = e;\n }while (1) {\n e = a + 20 | 0;f = c[e >> 2] | 0;if (f | 0) {\n a = f;d = e;continue;\n }e = a + 16 | 0;f = c[e >> 2] | 0;if (!f) break;else {\n a = f;d = e;\n }\n }c[d >> 2] = 0;\n } else {\n w = c[b + 8 >> 2] | 0;c[w + 12 >> 2] = a;c[a + 8 >> 2] = w;\n } while (0);if (!g) break;d = c[b + 28 >> 2] | 0;e = 11436 + (d << 2) | 0;do if ((b | 0) != (c[e >> 2] | 0)) {\n c[g + 16 + (((c[g + 16 >> 2] | 0) != (b | 0) & 1) << 2) >> 2] = a;if (!a) break d;\n } else {\n c[e >> 2] = a;if (a | 0) break;c[2784] = c[2784] & ~(1 << d);break d;\n } while (0);c[a + 24 >> 2] = g;d = b + 16 | 0;e = c[d >> 2] | 0;if (e | 0) {\n c[a + 16 >> 2] = e;c[e + 24 >> 2] = a;\n }d = c[d + 4 >> 2] | 0;if (!d) break;c[a + 20 >> 2] = d;c[d + 24 >> 2] = a;\n } while (0);b = b + h | 0;f = h + i | 0;\n } else f = i;b = b + 4 | 0;c[b >> 2] = c[b >> 2] & -2;c[k + 4 >> 2] = f | 1;c[k + f >> 2] = f;b = f >>> 3;if (f >>> 0 < 256) {\n d = 11172 + (b << 1 << 2) | 0;a = c[2783] | 0;b = 1 << b;if (!(a & b)) {\n c[2783] = a | b;b = d;a = d + 8 | 0;\n } else {\n a = d + 8 | 0;b = c[a >> 2] | 0;\n }c[a >> 2] = k;c[b + 12 >> 2] = k;c[k + 8 >> 2] = b;c[k + 12 >> 2] = d;break;\n }b = f >>> 8;do if (!b) b = 0;else {\n if (f >>> 0 > 16777215) {\n b = 31;break;\n }v = (b + 1048320 | 0) >>> 16 & 8;w = b << v;u = (w + 520192 | 0) >>> 16 & 4;w = w << u;b = (w + 245760 | 0) >>> 16 & 2;b = 14 - (u | v | b) + (w << b >>> 15) | 0;b = f >>> (b + 7 | 0) & 1 | b << 1;\n } while (0);e = 11436 + (b << 2) | 0;c[k + 28 >> 2] = b;a = k + 16 | 0;c[a + 4 >> 2] = 0;c[a >> 2] = 0;a = c[2784] | 0;d = 1 << b;if (!(a & d)) {\n c[2784] = a | d;c[e >> 2] = k;c[k + 24 >> 2] = e;c[k + 12 >> 2] = k;c[k + 8 >> 2] = k;break;\n }a = f << ((b | 0) == 31 ? 0 : 25 - (b >>> 1) | 0);d = c[e >> 2] | 0;while (1) {\n if ((c[d + 4 >> 2] & -8 | 0) == (f | 0)) {\n v = 194;break;\n }e = d + 16 + (a >>> 31 << 2) | 0;b = c[e >> 2] | 0;if (!b) {\n v = 193;break;\n } else {\n a = a << 1;d = b;\n }\n }if ((v | 0) == 193) {\n c[e >> 2] = k;c[k + 24 >> 2] = d;c[k + 12 >> 2] = k;c[k + 8 >> 2] = k;break;\n } else if ((v | 0) == 194) {\n v = d + 8 | 0;w = c[v >> 2] | 0;c[w + 12 >> 2] = k;c[v >> 2] = k;c[k + 8 >> 2] = w;c[k + 12 >> 2] = d;c[k + 24 >> 2] = 0;break;\n }\n } else {\n w = (c[2786] | 0) + i | 0;c[2786] = w;c[2789] = k;c[k + 4 >> 2] = w | 1;\n } while (0);w = m + 8 | 0;l = x;return w | 0;\n }b = 11580;while (1) {\n a = c[b >> 2] | 0;if (a >>> 0 <= j >>> 0 ? (w = a + (c[b + 4 >> 2] | 0) | 0, w >>> 0 > j >>> 0) : 0) break;b = c[b + 8 >> 2] | 0;\n }f = w + -47 | 0;a = f + 8 | 0;a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;f = j + 16 | 0;a = a >>> 0 < f >>> 0 ? j : a;b = a + 8 | 0;d = g + 8 | 0;d = (d & 7 | 0) == 0 ? 0 : 0 - d & 7;v = g + d | 0;d = h + -40 - d | 0;c[2789] = v;c[2786] = d;c[v + 4 >> 2] = d | 1;c[v + d + 4 >> 2] = 40;c[2790] = c[2905];d = a + 4 | 0;c[d >> 2] = 27;c[b >> 2] = c[2895];c[b + 4 >> 2] = c[2896];c[b + 8 >> 2] = c[2897];c[b + 12 >> 2] = c[2898];c[2895] = g;c[2896] = h;c[2898] = 0;c[2897] = b;b = a + 24 | 0;do {\n v = b;b = b + 4 | 0;c[b >> 2] = 7;\n } while ((v + 8 | 0) >>> 0 < w >>> 0);if ((a | 0) != (j | 0)) {\n g = a - j | 0;c[d >> 2] = c[d >> 2] & -2;c[j + 4 >> 2] = g | 1;c[a >> 2] = g;b = g >>> 3;if (g >>> 0 < 256) {\n d = 11172 + (b << 1 << 2) | 0;a = c[2783] | 0;b = 1 << b;if (!(a & b)) {\n c[2783] = a | b;b = d;a = d + 8 | 0;\n } else {\n a = d + 8 | 0;b = c[a >> 2] | 0;\n }c[a >> 2] = j;c[b + 12 >> 2] = j;c[j + 8 >> 2] = b;c[j + 12 >> 2] = d;break;\n }b = g >>> 8;if (b) {\n if (g >>> 0 > 16777215) d = 31;else {\n v = (b + 1048320 | 0) >>> 16 & 8;w = b << v;u = (w + 520192 | 0) >>> 16 & 4;w = w << u;d = (w + 245760 | 0) >>> 16 & 2;d = 14 - (u | v | d) + (w << d >>> 15) | 0;d = g >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else d = 0;e = 11436 + (d << 2) | 0;c[j + 28 >> 2] = d;c[j + 20 >> 2] = 0;c[f >> 2] = 0;b = c[2784] | 0;a = 1 << d;if (!(b & a)) {\n c[2784] = b | a;c[e >> 2] = j;c[j + 24 >> 2] = e;c[j + 12 >> 2] = j;c[j + 8 >> 2] = j;break;\n }a = g << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);d = c[e >> 2] | 0;while (1) {\n if ((c[d + 4 >> 2] & -8 | 0) == (g | 0)) {\n v = 216;break;\n }e = d + 16 + (a >>> 31 << 2) | 0;b = c[e >> 2] | 0;if (!b) {\n v = 215;break;\n } else {\n a = a << 1;d = b;\n }\n }if ((v | 0) == 215) {\n c[e >> 2] = j;c[j + 24 >> 2] = d;c[j + 12 >> 2] = j;c[j + 8 >> 2] = j;break;\n } else if ((v | 0) == 216) {\n v = d + 8 | 0;w = c[v >> 2] | 0;c[w + 12 >> 2] = j;c[v >> 2] = j;c[j + 8 >> 2] = w;c[j + 12 >> 2] = d;c[j + 24 >> 2] = 0;break;\n }\n }\n } else {\n w = c[2787] | 0;if ((w | 0) == 0 | g >>> 0 < w >>> 0) c[2787] = g;c[2895] = g;c[2896] = h;c[2898] = 0;c[2792] = c[2901];c[2791] = -1;b = 0;do {\n w = 11172 + (b << 1 << 2) | 0;c[w + 12 >> 2] = w;c[w + 8 >> 2] = w;b = b + 1 | 0;\n } while ((b | 0) != 32);w = g + 8 | 0;w = (w & 7 | 0) == 0 ? 0 : 0 - w & 7;v = g + w | 0;w = h + -40 - w | 0;c[2789] = v;c[2786] = w;c[v + 4 >> 2] = w | 1;c[v + w + 4 >> 2] = 40;c[2790] = c[2905];\n } while (0);b = c[2786] | 0;if (b >>> 0 > n >>> 0) {\n u = b - n | 0;c[2786] = u;w = c[2789] | 0;v = w + n | 0;c[2789] = v;c[v + 4 >> 2] = u | 1;c[w + 4 >> 2] = n | 3;w = w + 8 | 0;l = x;return w | 0;\n }\n }c[(vB() | 0) >> 2] = 12;w = 0;l = x;return w | 0;\n }function pB(a) {\n a = a | 0;var b = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;if (!a) return;d = a + -8 | 0;f = c[2787] | 0;a = c[a + -4 >> 2] | 0;b = a & -8;j = d + b | 0;do if (!(a & 1)) {\n e = c[d >> 2] | 0;if (!(a & 3)) return;h = d + (0 - e) | 0;g = e + b | 0;if (h >>> 0 < f >>> 0) return;if ((h | 0) == (c[2788] | 0)) {\n a = j + 4 | 0;b = c[a >> 2] | 0;if ((b & 3 | 0) != 3) {\n i = h;b = g;break;\n }c[2785] = g;c[a >> 2] = b & -2;c[h + 4 >> 2] = g | 1;c[h + g >> 2] = g;return;\n }d = e >>> 3;if (e >>> 0 < 256) {\n a = c[h + 8 >> 2] | 0;b = c[h + 12 >> 2] | 0;if ((b | 0) == (a | 0)) {\n c[2783] = c[2783] & ~(1 << d);i = h;b = g;break;\n } else {\n c[a + 12 >> 2] = b;c[b + 8 >> 2] = a;i = h;b = g;break;\n }\n }f = c[h + 24 >> 2] | 0;a = c[h + 12 >> 2] | 0;do if ((a | 0) == (h | 0)) {\n d = h + 16 | 0;b = d + 4 | 0;a = c[b >> 2] | 0;if (!a) {\n a = c[d >> 2] | 0;if (!a) {\n a = 0;break;\n } else b = d;\n }while (1) {\n d = a + 20 | 0;e = c[d >> 2] | 0;if (e | 0) {\n a = e;b = d;continue;\n }d = a + 16 | 0;e = c[d >> 2] | 0;if (!e) break;else {\n a = e;b = d;\n }\n }c[b >> 2] = 0;\n } else {\n i = c[h + 8 >> 2] | 0;c[i + 12 >> 2] = a;c[a + 8 >> 2] = i;\n } while (0);if (f) {\n b = c[h + 28 >> 2] | 0;d = 11436 + (b << 2) | 0;if ((h | 0) == (c[d >> 2] | 0)) {\n c[d >> 2] = a;if (!a) {\n c[2784] = c[2784] & ~(1 << b);i = h;b = g;break;\n }\n } else {\n c[f + 16 + (((c[f + 16 >> 2] | 0) != (h | 0) & 1) << 2) >> 2] = a;if (!a) {\n i = h;b = g;break;\n }\n }c[a + 24 >> 2] = f;b = h + 16 | 0;d = c[b >> 2] | 0;if (d | 0) {\n c[a + 16 >> 2] = d;c[d + 24 >> 2] = a;\n }b = c[b + 4 >> 2] | 0;if (b) {\n c[a + 20 >> 2] = b;c[b + 24 >> 2] = a;i = h;b = g;\n } else {\n i = h;b = g;\n }\n } else {\n i = h;b = g;\n }\n } else {\n i = d;h = d;\n } while (0);if (h >>> 0 >= j >>> 0) return;a = j + 4 | 0;e = c[a >> 2] | 0;if (!(e & 1)) return;if (!(e & 2)) {\n a = c[2788] | 0;if ((j | 0) == (c[2789] | 0)) {\n j = (c[2786] | 0) + b | 0;c[2786] = j;c[2789] = i;c[i + 4 >> 2] = j | 1;if ((i | 0) != (a | 0)) return;c[2788] = 0;c[2785] = 0;return;\n }if ((j | 0) == (a | 0)) {\n j = (c[2785] | 0) + b | 0;c[2785] = j;c[2788] = h;c[i + 4 >> 2] = j | 1;c[h + j >> 2] = j;return;\n }f = (e & -8) + b | 0;d = e >>> 3;do if (e >>> 0 < 256) {\n b = c[j + 8 >> 2] | 0;a = c[j + 12 >> 2] | 0;if ((a | 0) == (b | 0)) {\n c[2783] = c[2783] & ~(1 << d);break;\n } else {\n c[b + 12 >> 2] = a;c[a + 8 >> 2] = b;break;\n }\n } else {\n g = c[j + 24 >> 2] | 0;a = c[j + 12 >> 2] | 0;do if ((a | 0) == (j | 0)) {\n d = j + 16 | 0;b = d + 4 | 0;a = c[b >> 2] | 0;if (!a) {\n a = c[d >> 2] | 0;if (!a) {\n d = 0;break;\n } else b = d;\n }while (1) {\n d = a + 20 | 0;e = c[d >> 2] | 0;if (e | 0) {\n a = e;b = d;continue;\n }d = a + 16 | 0;e = c[d >> 2] | 0;if (!e) break;else {\n a = e;b = d;\n }\n }c[b >> 2] = 0;d = a;\n } else {\n d = c[j + 8 >> 2] | 0;c[d + 12 >> 2] = a;c[a + 8 >> 2] = d;d = a;\n } while (0);if (g | 0) {\n a = c[j + 28 >> 2] | 0;b = 11436 + (a << 2) | 0;if ((j | 0) == (c[b >> 2] | 0)) {\n c[b >> 2] = d;if (!d) {\n c[2784] = c[2784] & ~(1 << a);break;\n }\n } else {\n c[g + 16 + (((c[g + 16 >> 2] | 0) != (j | 0) & 1) << 2) >> 2] = d;if (!d) break;\n }c[d + 24 >> 2] = g;a = j + 16 | 0;b = c[a >> 2] | 0;if (b | 0) {\n c[d + 16 >> 2] = b;c[b + 24 >> 2] = d;\n }a = c[a + 4 >> 2] | 0;if (a | 0) {\n c[d + 20 >> 2] = a;c[a + 24 >> 2] = d;\n }\n }\n } while (0);c[i + 4 >> 2] = f | 1;c[h + f >> 2] = f;if ((i | 0) == (c[2788] | 0)) {\n c[2785] = f;return;\n }\n } else {\n c[a >> 2] = e & -2;c[i + 4 >> 2] = b | 1;c[h + b >> 2] = b;f = b;\n }a = f >>> 3;if (f >>> 0 < 256) {\n d = 11172 + (a << 1 << 2) | 0;b = c[2783] | 0;a = 1 << a;if (!(b & a)) {\n c[2783] = b | a;a = d;b = d + 8 | 0;\n } else {\n b = d + 8 | 0;a = c[b >> 2] | 0;\n }c[b >> 2] = i;c[a + 12 >> 2] = i;c[i + 8 >> 2] = a;c[i + 12 >> 2] = d;return;\n }a = f >>> 8;if (a) {\n if (f >>> 0 > 16777215) a = 31;else {\n h = (a + 1048320 | 0) >>> 16 & 8;j = a << h;g = (j + 520192 | 0) >>> 16 & 4;j = j << g;a = (j + 245760 | 0) >>> 16 & 2;a = 14 - (g | h | a) + (j << a >>> 15) | 0;a = f >>> (a + 7 | 0) & 1 | a << 1;\n }\n } else a = 0;e = 11436 + (a << 2) | 0;c[i + 28 >> 2] = a;c[i + 20 >> 2] = 0;c[i + 16 >> 2] = 0;b = c[2784] | 0;d = 1 << a;do if (b & d) {\n b = f << ((a | 0) == 31 ? 0 : 25 - (a >>> 1) | 0);d = c[e >> 2] | 0;while (1) {\n if ((c[d + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = 73;break;\n }e = d + 16 + (b >>> 31 << 2) | 0;a = c[e >> 2] | 0;if (!a) {\n a = 72;break;\n } else {\n b = b << 1;d = a;\n }\n }if ((a | 0) == 72) {\n c[e >> 2] = i;c[i + 24 >> 2] = d;c[i + 12 >> 2] = i;c[i + 8 >> 2] = i;break;\n } else if ((a | 0) == 73) {\n h = d + 8 | 0;j = c[h >> 2] | 0;c[j + 12 >> 2] = i;c[h >> 2] = i;c[i + 8 >> 2] = j;c[i + 12 >> 2] = d;c[i + 24 >> 2] = 0;break;\n }\n } else {\n c[2784] = b | d;c[e >> 2] = i;c[i + 24 >> 2] = e;c[i + 12 >> 2] = i;c[i + 8 >> 2] = i;\n } while (0);j = (c[2791] | 0) + -1 | 0;c[2791] = j;if (!j) a = 11588;else return;while (1) {\n a = c[a >> 2] | 0;if (!a) break;else a = a + 8 | 0;\n }c[2791] = -1;return;\n }function qB() {\n return 11628;\n }function rB(a) {\n a = a | 0;var b = 0,\n d = 0;b = l;l = l + 16 | 0;d = b;c[d >> 2] = yB(c[a + 60 >> 2] | 0) | 0;a = uB(db(6, d | 0) | 0) | 0;l = b;return a | 0;\n }function sB(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;n = l;l = l + 48 | 0;k = n + 16 | 0;g = n;f = n + 32 | 0;i = a + 28 | 0;e = c[i >> 2] | 0;c[f >> 2] = e;j = a + 20 | 0;e = (c[j >> 2] | 0) - e | 0;c[f + 4 >> 2] = e;c[f + 8 >> 2] = b;c[f + 12 >> 2] = d;e = e + d | 0;h = a + 60 | 0;c[g >> 2] = c[h >> 2];c[g + 4 >> 2] = f;c[g + 8 >> 2] = 2;g = uB(gb(146, g | 0) | 0) | 0;a: do if ((e | 0) != (g | 0)) {\n b = 2;while (1) {\n if ((g | 0) < 0) break;e = e - g | 0;p = c[f + 4 >> 2] | 0;o = g >>> 0 > p >>> 0;f = o ? f + 8 | 0 : f;b = (o << 31 >> 31) + b | 0;p = g - (o ? p : 0) | 0;c[f >> 2] = (c[f >> 2] | 0) + p;o = f + 4 | 0;c[o >> 2] = (c[o >> 2] | 0) - p;c[k >> 2] = c[h >> 2];c[k + 4 >> 2] = f;c[k + 8 >> 2] = b;g = uB(gb(146, k | 0) | 0) | 0;if ((e | 0) == (g | 0)) {\n m = 3;break a;\n }\n }c[a + 16 >> 2] = 0;c[i >> 2] = 0;c[j >> 2] = 0;c[a >> 2] = c[a >> 2] | 32;if ((b | 0) == 2) d = 0;else d = d - (c[f + 4 >> 2] | 0) | 0;\n } else m = 3; while (0);if ((m | 0) == 3) {\n p = c[a + 44 >> 2] | 0;c[a + 16 >> 2] = p + (c[a + 48 >> 2] | 0);c[i >> 2] = p;c[j >> 2] = p;\n }l = n;return d | 0;\n }function tB(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0;f = l;l = l + 32 | 0;g = f;e = f + 20 | 0;c[g >> 2] = c[a + 60 >> 2];c[g + 4 >> 2] = 0;c[g + 8 >> 2] = b;c[g + 12 >> 2] = e;c[g + 16 >> 2] = d;if ((uB(fb(140, g | 0) | 0) | 0) < 0) {\n c[e >> 2] = -1;a = -1;\n } else a = c[e >> 2] | 0;l = f;return a | 0;\n }function uB(a) {\n a = a | 0;if (a >>> 0 > 4294963200) {\n c[(vB() | 0) >> 2] = 0 - a;a = -1;\n }return a | 0;\n }function vB() {\n return (wB() | 0) + 64 | 0;\n }function wB() {\n return xB() | 0;\n }function xB() {\n return 2084;\n }function yB(a) {\n a = a | 0;return a | 0;\n }function zB(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = l;l = l + 32 | 0;f = g;c[b + 36 >> 2] = 1;if ((c[b >> 2] & 64 | 0) == 0 ? (c[f >> 2] = c[b + 60 >> 2], c[f + 4 >> 2] = 21523, c[f + 8 >> 2] = g + 16, Wa(54, f | 0) | 0) : 0) a[b + 75 >> 0] = -1;f = sB(b, d, e) | 0;l = g;return f | 0;\n }function AB(b, c) {\n b = b | 0;c = c | 0;var d = 0,\n e = 0;d = a[b >> 0] | 0;e = a[c >> 0] | 0;if (d << 24 >> 24 == 0 ? 1 : d << 24 >> 24 != e << 24 >> 24) b = e;else {\n do {\n b = b + 1 | 0;c = c + 1 | 0;d = a[b >> 0] | 0;e = a[c >> 0] | 0;\n } while (!(d << 24 >> 24 == 0 ? 1 : d << 24 >> 24 != e << 24 >> 24));b = e;\n }return (d & 255) - (b & 255) | 0;\n }function BB(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;var e = 0,\n f = 0;a: do if (!d) b = 0;else {\n while (1) {\n e = a[b >> 0] | 0;f = a[c >> 0] | 0;if (e << 24 >> 24 != f << 24 >> 24) break;d = d + -1 | 0;if (!d) {\n b = 0;break a;\n } else {\n b = b + 1 | 0;c = c + 1 | 0;\n }\n }b = (e & 255) - (f & 255) | 0;\n } while (0);return b | 0;\n }function CB(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0;s = l;l = l + 224 | 0;n = s + 120 | 0;o = s + 80 | 0;q = s;r = s + 136 | 0;f = o;g = f + 40 | 0;do {\n c[f >> 2] = 0;f = f + 4 | 0;\n } while ((f | 0) < (g | 0));c[n >> 2] = c[e >> 2];if ((DB(0, d, n, q, o) | 0) < 0) e = -1;else {\n if ((c[b + 76 >> 2] | 0) > -1) p = EB(b) | 0;else p = 0;e = c[b >> 2] | 0;m = e & 32;if ((a[b + 74 >> 0] | 0) < 1) c[b >> 2] = e & -33;f = b + 48 | 0;if (!(c[f >> 2] | 0)) {\n g = b + 44 | 0;h = c[g >> 2] | 0;c[g >> 2] = r;i = b + 28 | 0;c[i >> 2] = r;j = b + 20 | 0;c[j >> 2] = r;c[f >> 2] = 80;k = b + 16 | 0;c[k >> 2] = r + 80;e = DB(b, d, n, q, o) | 0;if (h) {\n sb[c[b + 36 >> 2] & 7](b, 0, 0) | 0;e = (c[j >> 2] | 0) == 0 ? -1 : e;c[g >> 2] = h;c[f >> 2] = 0;c[k >> 2] = 0;c[i >> 2] = 0;c[j >> 2] = 0;\n }\n } else e = DB(b, d, n, q, o) | 0;f = c[b >> 2] | 0;c[b >> 2] = f | m;if (p | 0) FB(b);e = (f & 32 | 0) == 0 ? e : -1;\n }l = s;return e | 0;\n }function DB(d, e, f, g, i) {\n d = d | 0;e = e | 0;f = f | 0;g = g | 0;i = i | 0;var j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0;H = l;l = l + 64 | 0;D = H + 16 | 0;E = H;B = H + 24 | 0;F = H + 8 | 0;G = H + 20 | 0;c[D >> 2] = e;x = (d | 0) != 0;y = B + 40 | 0;z = y;B = B + 39 | 0;C = F + 4 | 0;k = 0;j = 0;p = 0;a: while (1) {\n do if ((j | 0) > -1) if ((k | 0) > (2147483647 - j | 0)) {\n c[(vB() | 0) >> 2] = 75;j = -1;break;\n } else {\n j = k + j | 0;break;\n } while (0);k = a[e >> 0] | 0;if (!(k << 24 >> 24)) {\n w = 87;break;\n } else m = e;b: while (1) {\n switch (k << 24 >> 24) {case 37:\n {\n k = m;w = 9;break b;\n }case 0:\n {\n k = m;break b;\n }default:\n {}}v = m + 1 | 0;c[D >> 2] = v;k = a[v >> 0] | 0;m = v;\n }c: do if ((w | 0) == 9) while (1) {\n w = 0;if ((a[m + 1 >> 0] | 0) != 37) break c;k = k + 1 | 0;m = m + 2 | 0;c[D >> 2] = m;if ((a[m >> 0] | 0) == 37) w = 9;else break;\n } while (0);k = k - e | 0;if (x) GB(d, e, k);if (k | 0) {\n e = m;continue;\n }n = m + 1 | 0;k = (a[n >> 0] | 0) + -48 | 0;if (k >>> 0 < 10) {\n v = (a[m + 2 >> 0] | 0) == 36;u = v ? k : -1;p = v ? 1 : p;n = v ? m + 3 | 0 : n;\n } else u = -1;c[D >> 2] = n;k = a[n >> 0] | 0;m = (k << 24 >> 24) + -32 | 0;d: do if (m >>> 0 < 32) {\n o = 0;q = k;while (1) {\n k = 1 << m;if (!(k & 75913)) {\n k = q;break d;\n }o = k | o;n = n + 1 | 0;c[D >> 2] = n;k = a[n >> 0] | 0;m = (k << 24 >> 24) + -32 | 0;if (m >>> 0 >= 32) break;else q = k;\n }\n } else o = 0; while (0);if (k << 24 >> 24 == 42) {\n m = n + 1 | 0;k = (a[m >> 0] | 0) + -48 | 0;if (k >>> 0 < 10 ? (a[n + 2 >> 0] | 0) == 36 : 0) {\n c[i + (k << 2) >> 2] = 10;k = c[g + ((a[m >> 0] | 0) + -48 << 3) >> 2] | 0;p = 1;n = n + 3 | 0;\n } else {\n if (p | 0) {\n j = -1;break;\n }if (x) {\n p = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1);k = c[p >> 2] | 0;c[f >> 2] = p + 4;p = 0;n = m;\n } else {\n k = 0;p = 0;n = m;\n }\n }c[D >> 2] = n;v = (k | 0) < 0;k = v ? 0 - k | 0 : k;o = v ? o | 8192 : o;\n } else {\n k = HB(D) | 0;if ((k | 0) < 0) {\n j = -1;break;\n }n = c[D >> 2] | 0;\n }do if ((a[n >> 0] | 0) == 46) {\n if ((a[n + 1 >> 0] | 0) != 42) {\n c[D >> 2] = n + 1;m = HB(D) | 0;n = c[D >> 2] | 0;break;\n }q = n + 2 | 0;m = (a[q >> 0] | 0) + -48 | 0;if (m >>> 0 < 10 ? (a[n + 3 >> 0] | 0) == 36 : 0) {\n c[i + (m << 2) >> 2] = 10;m = c[g + ((a[q >> 0] | 0) + -48 << 3) >> 2] | 0;n = n + 4 | 0;c[D >> 2] = n;break;\n }if (p | 0) {\n j = -1;break a;\n }if (x) {\n v = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1);m = c[v >> 2] | 0;c[f >> 2] = v + 4;\n } else m = 0;c[D >> 2] = q;n = q;\n } else m = -1; while (0);t = 0;while (1) {\n if (((a[n >> 0] | 0) + -65 | 0) >>> 0 > 57) {\n j = -1;break a;\n }v = n + 1 | 0;c[D >> 2] = v;q = a[(a[n >> 0] | 0) + -65 + (5178 + (t * 58 | 0)) >> 0] | 0;r = q & 255;if ((r + -1 | 0) >>> 0 < 8) {\n t = r;n = v;\n } else break;\n }if (!(q << 24 >> 24)) {\n j = -1;break;\n }s = (u | 0) > -1;do if (q << 24 >> 24 == 19) {\n if (s) {\n j = -1;break a;\n } else w = 49;\n } else {\n if (s) {\n c[i + (u << 2) >> 2] = r;s = g + (u << 3) | 0;u = c[s + 4 >> 2] | 0;w = E;c[w >> 2] = c[s >> 2];c[w + 4 >> 2] = u;w = 49;break;\n }if (!x) {\n j = 0;break a;\n }IB(E, r, f);\n } while (0);if ((w | 0) == 49 ? (w = 0, !x) : 0) {\n k = 0;e = v;continue;\n }n = a[n >> 0] | 0;n = (t | 0) != 0 & (n & 15 | 0) == 3 ? n & -33 : n;s = o & -65537;u = (o & 8192 | 0) == 0 ? o : s;e: do switch (n | 0) {case 110:\n switch ((t & 255) << 24 >> 24) {case 0:\n {\n c[c[E >> 2] >> 2] = j;k = 0;e = v;continue a;\n }case 1:\n {\n c[c[E >> 2] >> 2] = j;k = 0;e = v;continue a;\n }case 2:\n {\n k = c[E >> 2] | 0;c[k >> 2] = j;c[k + 4 >> 2] = ((j | 0) < 0) << 31 >> 31;k = 0;e = v;continue a;\n }case 3:\n {\n b[c[E >> 2] >> 1] = j;k = 0;e = v;continue a;\n }case 4:\n {\n a[c[E >> 2] >> 0] = j;k = 0;e = v;continue a;\n }case 6:\n {\n c[c[E >> 2] >> 2] = j;k = 0;e = v;continue a;\n }case 7:\n {\n k = c[E >> 2] | 0;c[k >> 2] = j;c[k + 4 >> 2] = ((j | 0) < 0) << 31 >> 31;k = 0;e = v;continue a;\n }default:\n {\n k = 0;e = v;continue a;\n }}case 112:\n {\n n = 120;m = m >>> 0 > 8 ? m : 8;e = u | 8;w = 61;break;\n }case 88:case 120:\n {\n e = u;w = 61;break;\n }case 111:\n {\n n = E;e = c[n >> 2] | 0;n = c[n + 4 >> 2] | 0;r = KB(e, n, y) | 0;s = z - r | 0;o = 0;q = 5642;m = (u & 8 | 0) == 0 | (m | 0) > (s | 0) ? m : s + 1 | 0;s = u;w = 67;break;\n }case 105:case 100:\n {\n n = E;e = c[n >> 2] | 0;n = c[n + 4 >> 2] | 0;if ((n | 0) < 0) {\n e = wC(0, 0, e | 0, n | 0) | 0;n = A;o = E;c[o >> 2] = e;c[o + 4 >> 2] = n;o = 1;q = 5642;w = 66;break e;\n } else {\n o = (u & 2049 | 0) != 0 & 1;q = (u & 2048 | 0) == 0 ? (u & 1 | 0) == 0 ? 5642 : 5644 : 5643;w = 66;break e;\n }\n }case 117:\n {\n n = E;o = 0;q = 5642;e = c[n >> 2] | 0;n = c[n + 4 >> 2] | 0;w = 66;break;\n }case 99:\n {\n a[B >> 0] = c[E >> 2];e = B;o = 0;q = 5642;r = y;n = 1;m = s;break;\n }case 109:\n {\n n = MB(c[(vB() | 0) >> 2] | 0) | 0;w = 71;break;\n }case 115:\n {\n n = c[E >> 2] | 0;n = n | 0 ? n : 5652;w = 71;break;\n }case 67:\n {\n c[F >> 2] = c[E >> 2];c[C >> 2] = 0;c[E >> 2] = F;r = -1;n = F;w = 75;break;\n }case 83:\n {\n e = c[E >> 2] | 0;if (!m) {\n OB(d, 32, k, 0, u);e = 0;w = 84;\n } else {\n r = m;n = e;w = 75;\n }break;\n }case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:\n {\n k = QB(d, +h[E >> 3], k, m, u, n) | 0;e = v;continue a;\n }default:\n {\n o = 0;q = 5642;r = y;n = m;m = u;\n }} while (0);f: do if ((w | 0) == 61) {\n u = E;t = c[u >> 2] | 0;u = c[u + 4 >> 2] | 0;r = JB(t, u, y, n & 32) | 0;q = (e & 8 | 0) == 0 | (t | 0) == 0 & (u | 0) == 0;o = q ? 0 : 2;q = q ? 5642 : 5642 + (n >> 4) | 0;s = e;e = t;n = u;w = 67;\n } else if ((w | 0) == 66) {\n r = LB(e, n, y) | 0;s = u;w = 67;\n } else if ((w | 0) == 71) {\n w = 0;u = NB(n, 0, m) | 0;t = (u | 0) == 0;e = n;o = 0;q = 5642;r = t ? n + m | 0 : u;n = t ? m : u - n | 0;m = s;\n } else if ((w | 0) == 75) {\n w = 0;q = n;e = 0;m = 0;while (1) {\n o = c[q >> 2] | 0;if (!o) break;m = PB(G, o) | 0;if ((m | 0) < 0 | m >>> 0 > (r - e | 0) >>> 0) break;e = m + e | 0;if (r >>> 0 > e >>> 0) q = q + 4 | 0;else break;\n }if ((m | 0) < 0) {\n j = -1;break a;\n }OB(d, 32, k, e, u);if (!e) {\n e = 0;w = 84;\n } else {\n o = 0;while (1) {\n m = c[n >> 2] | 0;if (!m) {\n w = 84;break f;\n }m = PB(G, m) | 0;o = m + o | 0;if ((o | 0) > (e | 0)) {\n w = 84;break f;\n }GB(d, G, m);if (o >>> 0 >= e >>> 0) {\n w = 84;break;\n } else n = n + 4 | 0;\n }\n }\n } while (0);if ((w | 0) == 67) {\n w = 0;n = (e | 0) != 0 | (n | 0) != 0;u = (m | 0) != 0 | n;n = ((n ^ 1) & 1) + (z - r) | 0;e = u ? r : y;r = y;n = u ? (m | 0) > (n | 0) ? m : n : m;m = (m | 0) > -1 ? s & -65537 : s;\n } else if ((w | 0) == 84) {\n w = 0;OB(d, 32, k, e, u ^ 8192);k = (k | 0) > (e | 0) ? k : e;e = v;continue;\n }t = r - e | 0;s = (n | 0) < (t | 0) ? t : n;u = s + o | 0;k = (k | 0) < (u | 0) ? u : k;OB(d, 32, k, u, m);GB(d, q, o);OB(d, 48, k, u, m ^ 65536);OB(d, 48, s, t, 0);GB(d, e, t);OB(d, 32, k, u, m ^ 8192);e = v;\n }g: do if ((w | 0) == 87) if (!d) if (!p) j = 0;else {\n j = 1;while (1) {\n e = c[i + (j << 2) >> 2] | 0;if (!e) break;IB(g + (j << 3) | 0, e, f);j = j + 1 | 0;if ((j | 0) >= 10) {\n j = 1;break g;\n }\n }while (1) {\n if (c[i + (j << 2) >> 2] | 0) {\n j = -1;break g;\n }j = j + 1 | 0;if ((j | 0) >= 10) {\n j = 1;break;\n }\n }\n } while (0);l = H;return j | 0;\n }function EB(a) {\n a = a | 0;return 0;\n }function FB(a) {\n a = a | 0;return;\n }function GB(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;if (!(c[a >> 2] & 32)) aC(b, d, a) | 0;return;\n }function HB(b) {\n b = b | 0;var d = 0,\n e = 0,\n f = 0;e = c[b >> 2] | 0;f = (a[e >> 0] | 0) + -48 | 0;if (f >>> 0 < 10) {\n d = 0;do {\n d = f + (d * 10 | 0) | 0;e = e + 1 | 0;c[b >> 2] = e;f = (a[e >> 0] | 0) + -48 | 0;\n } while (f >>> 0 < 10);\n } else d = 0;return d | 0;\n }function IB(a, b, d) {\n a = a | 0;b = b | 0;d = d | 0;var e = 0,\n f = 0,\n g = 0.0;a: do if (b >>> 0 <= 20) do switch (b | 0) {case 9:\n {\n e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);b = c[e >> 2] | 0;c[d >> 2] = e + 4;c[a >> 2] = b;break a;\n }case 10:\n {\n e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);b = c[e >> 2] | 0;c[d >> 2] = e + 4;e = a;c[e >> 2] = b;c[e + 4 >> 2] = ((b | 0) < 0) << 31 >> 31;break a;\n }case 11:\n {\n e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);b = c[e >> 2] | 0;c[d >> 2] = e + 4;e = a;c[e >> 2] = b;c[e + 4 >> 2] = 0;break a;\n }case 12:\n {\n e = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);b = e;f = c[b >> 2] | 0;b = c[b + 4 >> 2] | 0;c[d >> 2] = e + 8;e = a;c[e >> 2] = f;c[e + 4 >> 2] = b;break a;\n }case 13:\n {\n f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);e = c[f >> 2] | 0;c[d >> 2] = f + 4;e = (e & 65535) << 16 >> 16;f = a;c[f >> 2] = e;c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31;break a;\n }case 14:\n {\n f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);e = c[f >> 2] | 0;c[d >> 2] = f + 4;f = a;c[f >> 2] = e & 65535;c[f + 4 >> 2] = 0;break a;\n }case 15:\n {\n f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);e = c[f >> 2] | 0;c[d >> 2] = f + 4;e = (e & 255) << 24 >> 24;f = a;c[f >> 2] = e;c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31;break a;\n }case 16:\n {\n f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1);e = c[f >> 2] | 0;c[d >> 2] = f + 4;f = a;c[f >> 2] = e & 255;c[f + 4 >> 2] = 0;break a;\n }case 17:\n {\n f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);g = +h[f >> 3];c[d >> 2] = f + 8;h[a >> 3] = g;break a;\n }case 18:\n {\n f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1);g = +h[f >> 3];c[d >> 2] = f + 8;h[a >> 3] = g;break a;\n }default:\n break a;} while (0); while (0);return;\n }function JB(b, c, e, f) {\n b = b | 0;c = c | 0;e = e | 0;f = f | 0;if (!((b | 0) == 0 & (c | 0) == 0)) do {\n e = e + -1 | 0;a[e >> 0] = d[5694 + (b & 15) >> 0] | 0 | f;b = AC(b | 0, c | 0, 4) | 0;c = A;\n } while (!((b | 0) == 0 & (c | 0) == 0));return e | 0;\n }function KB(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;if (!((b | 0) == 0 & (c | 0) == 0)) do {\n d = d + -1 | 0;a[d >> 0] = b & 7 | 48;b = AC(b | 0, c | 0, 3) | 0;c = A;\n } while (!((b | 0) == 0 & (c | 0) == 0));return d | 0;\n }function LB(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;var e = 0;if (c >>> 0 > 0 | (c | 0) == 0 & b >>> 0 > 4294967295) {\n while (1) {\n e = HC(b | 0, c | 0, 10, 0) | 0;d = d + -1 | 0;a[d >> 0] = e & 255 | 48;e = b;b = EC(b | 0, c | 0, 10, 0) | 0;if (!(c >>> 0 > 9 | (c | 0) == 9 & e >>> 0 > 4294967295)) break;else c = A;\n }c = b;\n } else c = b;if (c) while (1) {\n d = d + -1 | 0;a[d >> 0] = (c >>> 0) % 10 | 0 | 48;if (c >>> 0 < 10) break;else c = (c >>> 0) / 10 | 0;\n }return d | 0;\n }function MB(a) {\n a = a | 0;return XB(a, c[(WB() | 0) + 188 >> 2] | 0) | 0;\n }function NB(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;h = d & 255;f = (e | 0) != 0;a: do if (f & (b & 3 | 0) != 0) {\n g = d & 255;while (1) {\n if ((a[b >> 0] | 0) == g << 24 >> 24) {\n i = 6;break a;\n }b = b + 1 | 0;e = e + -1 | 0;f = (e | 0) != 0;if (!(f & (b & 3 | 0) != 0)) {\n i = 5;break;\n }\n }\n } else i = 5; while (0);if ((i | 0) == 5) if (f) i = 6;else e = 0;b: do if ((i | 0) == 6) {\n g = d & 255;if ((a[b >> 0] | 0) != g << 24 >> 24) {\n f = P(h, 16843009) | 0;c: do if (e >>> 0 > 3) while (1) {\n h = c[b >> 2] ^ f;if ((h & -2139062144 ^ -2139062144) & h + -16843009 | 0) break;b = b + 4 | 0;e = e + -4 | 0;if (e >>> 0 <= 3) {\n i = 11;break c;\n }\n } else i = 11; while (0);if ((i | 0) == 11) if (!e) {\n e = 0;break;\n }while (1) {\n if ((a[b >> 0] | 0) == g << 24 >> 24) break b;b = b + 1 | 0;e = e + -1 | 0;if (!e) {\n e = 0;break;\n }\n }\n }\n } while (0);return (e | 0 ? b : 0) | 0;\n }function OB(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = l;l = l + 256 | 0;f = g;if ((c | 0) > (d | 0) & (e & 73728 | 0) == 0) {\n e = c - d | 0;yC(f | 0, b | 0, (e >>> 0 < 256 ? e : 256) | 0) | 0;if (e >>> 0 > 255) {\n b = c - d | 0;do {\n GB(a, f, 256);e = e + -256 | 0;\n } while (e >>> 0 > 255);e = b & 255;\n }GB(a, f, e);\n }l = g;return;\n }function PB(a, b) {\n a = a | 0;b = b | 0;if (!a) a = 0;else a = UB(a, b, 0) | 0;return a | 0;\n }function QB(b, e, f, g, h, i) {\n b = b | 0;e = +e;f = f | 0;g = g | 0;h = h | 0;i = i | 0;var j = 0,\n k = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0.0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n H = 0;H = l;l = l + 560 | 0;m = H + 8 | 0;u = H;G = H + 524 | 0;F = G;n = H + 512 | 0;c[u >> 2] = 0;E = n + 12 | 0;RB(e) | 0;if ((A | 0) < 0) {\n e = -e;C = 1;B = 5659;\n } else {\n C = (h & 2049 | 0) != 0 & 1;B = (h & 2048 | 0) == 0 ? (h & 1 | 0) == 0 ? 5660 : 5665 : 5662;\n }RB(e) | 0;D = A & 2146435072;do if (D >>> 0 < 2146435072 | (D | 0) == 2146435072 & 0 < 0) {\n r = +SB(e, u) * 2.0;j = r != 0.0;if (j) c[u >> 2] = (c[u >> 2] | 0) + -1;w = i | 32;if ((w | 0) == 97) {\n s = i & 32;q = (s | 0) == 0 ? B : B + 9 | 0;p = C | 2;j = 12 - g | 0;do if (!(g >>> 0 > 11 | (j | 0) == 0)) {\n e = 8.0;do {\n j = j + -1 | 0;e = e * 16.0;\n } while ((j | 0) != 0);if ((a[q >> 0] | 0) == 45) {\n e = -(e + (-r - e));break;\n } else {\n e = r + e - e;break;\n }\n } else e = r; while (0);k = c[u >> 2] | 0;j = (k | 0) < 0 ? 0 - k | 0 : k;j = LB(j, ((j | 0) < 0) << 31 >> 31, E) | 0;if ((j | 0) == (E | 0)) {\n j = n + 11 | 0;a[j >> 0] = 48;\n }a[j + -1 >> 0] = (k >> 31 & 2) + 43;o = j + -2 | 0;a[o >> 0] = i + 15;n = (g | 0) < 1;m = (h & 8 | 0) == 0;j = G;do {\n D = ~~e;k = j + 1 | 0;a[j >> 0] = d[5694 + D >> 0] | s;e = (e - +(D | 0)) * 16.0;if ((k - F | 0) == 1 ? !(m & (n & e == 0.0)) : 0) {\n a[k >> 0] = 46;j = j + 2 | 0;\n } else j = k;\n } while (e != 0.0);D = j - F | 0;F = E - o | 0;E = (g | 0) != 0 & (D + -2 | 0) < (g | 0) ? g + 2 | 0 : D;j = F + p + E | 0;OB(b, 32, f, j, h);GB(b, q, p);OB(b, 48, f, j, h ^ 65536);GB(b, G, D);OB(b, 48, E - D | 0, 0, 0);GB(b, o, F);OB(b, 32, f, j, h ^ 8192);break;\n }k = (g | 0) < 0 ? 6 : g;if (j) {\n j = (c[u >> 2] | 0) + -28 | 0;c[u >> 2] = j;e = r * 268435456.0;\n } else {\n e = r;j = c[u >> 2] | 0;\n }D = (j | 0) < 0 ? m : m + 288 | 0;m = D;do {\n y = ~~e >>> 0;c[m >> 2] = y;m = m + 4 | 0;e = (e - +(y >>> 0)) * 1.0e9;\n } while (e != 0.0);if ((j | 0) > 0) {\n n = D;p = m;while (1) {\n o = (j | 0) < 29 ? j : 29;j = p + -4 | 0;if (j >>> 0 >= n >>> 0) {\n m = 0;do {\n x = zC(c[j >> 2] | 0, 0, o | 0) | 0;x = xC(x | 0, A | 0, m | 0, 0) | 0;y = A;v = HC(x | 0, y | 0, 1e9, 0) | 0;c[j >> 2] = v;m = EC(x | 0, y | 0, 1e9, 0) | 0;j = j + -4 | 0;\n } while (j >>> 0 >= n >>> 0);if (m) {\n n = n + -4 | 0;c[n >> 2] = m;\n }\n }m = p;while (1) {\n if (m >>> 0 <= n >>> 0) break;j = m + -4 | 0;if (!(c[j >> 2] | 0)) m = j;else break;\n }j = (c[u >> 2] | 0) - o | 0;c[u >> 2] = j;if ((j | 0) > 0) p = m;else break;\n }\n } else n = D;if ((j | 0) < 0) {\n g = ((k + 25 | 0) / 9 | 0) + 1 | 0;t = (w | 0) == 102;do {\n s = 0 - j | 0;s = (s | 0) < 9 ? s : 9;if (n >>> 0 < m >>> 0) {\n o = (1 << s) + -1 | 0;p = 1e9 >>> s;q = 0;j = n;do {\n y = c[j >> 2] | 0;c[j >> 2] = (y >>> s) + q;q = P(y & o, p) | 0;j = j + 4 | 0;\n } while (j >>> 0 < m >>> 0);j = (c[n >> 2] | 0) == 0 ? n + 4 | 0 : n;if (!q) {\n n = j;j = m;\n } else {\n c[m >> 2] = q;n = j;j = m + 4 | 0;\n }\n } else {\n n = (c[n >> 2] | 0) == 0 ? n + 4 | 0 : n;j = m;\n }m = t ? D : n;m = (j - m >> 2 | 0) > (g | 0) ? m + (g << 2) | 0 : j;j = (c[u >> 2] | 0) + s | 0;c[u >> 2] = j;\n } while ((j | 0) < 0);j = n;g = m;\n } else {\n j = n;g = m;\n }y = D;if (j >>> 0 < g >>> 0) {\n m = (y - j >> 2) * 9 | 0;o = c[j >> 2] | 0;if (o >>> 0 >= 10) {\n n = 10;do {\n n = n * 10 | 0;m = m + 1 | 0;\n } while (o >>> 0 >= n >>> 0);\n }\n } else m = 0;t = (w | 0) == 103;v = (k | 0) != 0;n = k - ((w | 0) != 102 ? m : 0) + ((v & t) << 31 >> 31) | 0;if ((n | 0) < (((g - y >> 2) * 9 | 0) + -9 | 0)) {\n n = n + 9216 | 0;s = D + 4 + (((n | 0) / 9 | 0) + -1024 << 2) | 0;n = ((n | 0) % 9 | 0) + 1 | 0;if ((n | 0) < 9) {\n o = 10;do {\n o = o * 10 | 0;n = n + 1 | 0;\n } while ((n | 0) != 9);\n } else o = 10;p = c[s >> 2] | 0;q = (p >>> 0) % (o >>> 0) | 0;n = (s + 4 | 0) == (g | 0);if (!(n & (q | 0) == 0)) {\n r = (((p >>> 0) / (o >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0;x = (o | 0) / 2 | 0;e = q >>> 0 < x >>> 0 ? .5 : n & (q | 0) == (x | 0) ? 1.0 : 1.5;if (C) {\n x = (a[B >> 0] | 0) == 45;e = x ? -e : e;r = x ? -r : r;\n }n = p - q | 0;c[s >> 2] = n;if (r + e != r) {\n x = n + o | 0;c[s >> 2] = x;if (x >>> 0 > 999999999) {\n m = s;while (1) {\n n = m + -4 | 0;c[m >> 2] = 0;if (n >>> 0 < j >>> 0) {\n j = j + -4 | 0;c[j >> 2] = 0;\n }x = (c[n >> 2] | 0) + 1 | 0;c[n >> 2] = x;if (x >>> 0 > 999999999) m = n;else break;\n }\n } else n = s;m = (y - j >> 2) * 9 | 0;p = c[j >> 2] | 0;if (p >>> 0 >= 10) {\n o = 10;do {\n o = o * 10 | 0;m = m + 1 | 0;\n } while (p >>> 0 >= o >>> 0);\n }\n } else n = s;\n } else n = s;n = n + 4 | 0;n = g >>> 0 > n >>> 0 ? n : g;x = j;\n } else {\n n = g;x = j;\n }w = n;while (1) {\n if (w >>> 0 <= x >>> 0) {\n u = 0;break;\n }j = w + -4 | 0;if (!(c[j >> 2] | 0)) w = j;else {\n u = 1;break;\n }\n }g = 0 - m | 0;do if (t) {\n j = ((v ^ 1) & 1) + k | 0;if ((j | 0) > (m | 0) & (m | 0) > -5) {\n o = i + -1 | 0;k = j + -1 - m | 0;\n } else {\n o = i + -2 | 0;k = j + -1 | 0;\n }j = h & 8;if (!j) {\n if (u ? (z = c[w + -4 >> 2] | 0, (z | 0) != 0) : 0) {\n if (!((z >>> 0) % 10 | 0)) {\n n = 0;j = 10;do {\n j = j * 10 | 0;n = n + 1 | 0;\n } while (!((z >>> 0) % (j >>> 0) | 0 | 0));\n } else n = 0;\n } else n = 9;j = ((w - y >> 2) * 9 | 0) + -9 | 0;if ((o | 32 | 0) == 102) {\n s = j - n | 0;s = (s | 0) > 0 ? s : 0;k = (k | 0) < (s | 0) ? k : s;s = 0;break;\n } else {\n s = j + m - n | 0;s = (s | 0) > 0 ? s : 0;k = (k | 0) < (s | 0) ? k : s;s = 0;break;\n }\n } else s = j;\n } else {\n o = i;s = h & 8;\n } while (0);t = k | s;p = (t | 0) != 0 & 1;q = (o | 32 | 0) == 102;if (q) {\n v = 0;j = (m | 0) > 0 ? m : 0;\n } else {\n j = (m | 0) < 0 ? g : m;j = LB(j, ((j | 0) < 0) << 31 >> 31, E) | 0;n = E;if ((n - j | 0) < 2) do {\n j = j + -1 | 0;a[j >> 0] = 48;\n } while ((n - j | 0) < 2);a[j + -1 >> 0] = (m >> 31 & 2) + 43;j = j + -2 | 0;a[j >> 0] = o;v = j;j = n - j | 0;\n }j = C + 1 + k + p + j | 0;OB(b, 32, f, j, h);GB(b, B, C);OB(b, 48, f, j, h ^ 65536);if (q) {\n o = x >>> 0 > D >>> 0 ? D : x;s = G + 9 | 0;p = s;q = G + 8 | 0;n = o;do {\n m = LB(c[n >> 2] | 0, 0, s) | 0;if ((n | 0) == (o | 0)) {\n if ((m | 0) == (s | 0)) {\n a[q >> 0] = 48;m = q;\n }\n } else if (m >>> 0 > G >>> 0) {\n yC(G | 0, 48, m - F | 0) | 0;do m = m + -1 | 0; while (m >>> 0 > G >>> 0);\n }GB(b, m, p - m | 0);n = n + 4 | 0;\n } while (n >>> 0 <= D >>> 0);if (t | 0) GB(b, 5710, 1);if (n >>> 0 < w >>> 0 & (k | 0) > 0) while (1) {\n m = LB(c[n >> 2] | 0, 0, s) | 0;if (m >>> 0 > G >>> 0) {\n yC(G | 0, 48, m - F | 0) | 0;do m = m + -1 | 0; while (m >>> 0 > G >>> 0);\n }GB(b, m, (k | 0) < 9 ? k : 9);n = n + 4 | 0;m = k + -9 | 0;if (!(n >>> 0 < w >>> 0 & (k | 0) > 9)) {\n k = m;break;\n } else k = m;\n }OB(b, 48, k + 9 | 0, 9, 0);\n } else {\n t = u ? w : x + 4 | 0;if ((k | 0) > -1) {\n u = G + 9 | 0;s = (s | 0) == 0;g = u;p = 0 - F | 0;q = G + 8 | 0;o = x;do {\n m = LB(c[o >> 2] | 0, 0, u) | 0;if ((m | 0) == (u | 0)) {\n a[q >> 0] = 48;m = q;\n }do if ((o | 0) == (x | 0)) {\n n = m + 1 | 0;GB(b, m, 1);if (s & (k | 0) < 1) {\n m = n;break;\n }GB(b, 5710, 1);m = n;\n } else {\n if (m >>> 0 <= G >>> 0) break;yC(G | 0, 48, m + p | 0) | 0;do m = m + -1 | 0; while (m >>> 0 > G >>> 0);\n } while (0);F = g - m | 0;GB(b, m, (k | 0) > (F | 0) ? F : k);k = k - F | 0;o = o + 4 | 0;\n } while (o >>> 0 < t >>> 0 & (k | 0) > -1);\n }OB(b, 48, k + 18 | 0, 18, 0);GB(b, v, E - v | 0);\n }OB(b, 32, f, j, h ^ 8192);\n } else {\n G = (i & 32 | 0) != 0;j = C + 3 | 0;OB(b, 32, f, j, h & -65537);GB(b, B, C);GB(b, e != e | 0.0 != 0.0 ? G ? 5686 : 5690 : G ? 5678 : 5682, 3);OB(b, 32, f, j, h ^ 8192);\n } while (0);l = H;return ((j | 0) < (f | 0) ? f : j) | 0;\n }function RB(a) {\n a = +a;var b = 0;h[j >> 3] = a;b = c[j >> 2] | 0;A = c[j + 4 >> 2] | 0;return b | 0;\n }function SB(a, b) {\n a = +a;b = b | 0;return + +TB(a, b);\n }function TB(a, b) {\n a = +a;b = b | 0;var d = 0,\n e = 0,\n f = 0;h[j >> 3] = a;d = c[j >> 2] | 0;e = c[j + 4 >> 2] | 0;f = AC(d | 0, e | 0, 52) | 0;switch (f & 2047) {case 0:\n {\n if (a != 0.0) {\n a = +TB(a * 18446744073709551616.0, b);d = (c[b >> 2] | 0) + -64 | 0;\n } else d = 0;c[b >> 2] = d;break;\n }case 2047:\n break;default:\n {\n c[b >> 2] = (f & 2047) + -1022;c[j >> 2] = d;c[j + 4 >> 2] = e & -2146435073 | 1071644672;a = +h[j >> 3];\n }}return +a;\n }function UB(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;do if (b) {\n if (d >>> 0 < 128) {\n a[b >> 0] = d;b = 1;break;\n }if (!(c[c[(VB() | 0) + 188 >> 2] >> 2] | 0)) if ((d & -128 | 0) == 57216) {\n a[b >> 0] = d;b = 1;break;\n } else {\n c[(vB() | 0) >> 2] = 84;b = -1;break;\n }if (d >>> 0 < 2048) {\n a[b >> 0] = d >>> 6 | 192;a[b + 1 >> 0] = d & 63 | 128;b = 2;break;\n }if (d >>> 0 < 55296 | (d & -8192 | 0) == 57344) {\n a[b >> 0] = d >>> 12 | 224;a[b + 1 >> 0] = d >>> 6 & 63 | 128;a[b + 2 >> 0] = d & 63 | 128;b = 3;break;\n }if ((d + -65536 | 0) >>> 0 < 1048576) {\n a[b >> 0] = d >>> 18 | 240;a[b + 1 >> 0] = d >>> 12 & 63 | 128;a[b + 2 >> 0] = d >>> 6 & 63 | 128;a[b + 3 >> 0] = d & 63 | 128;b = 4;break;\n } else {\n c[(vB() | 0) >> 2] = 84;b = -1;break;\n }\n } else b = 1; while (0);return b | 0;\n }function VB() {\n return xB() | 0;\n }function WB() {\n return xB() | 0;\n }function XB(b, e) {\n b = b | 0;e = e | 0;var f = 0,\n g = 0;g = 0;while (1) {\n if ((d[5712 + g >> 0] | 0) == (b | 0)) {\n b = 2;break;\n }f = g + 1 | 0;if ((f | 0) == 87) {\n f = 5800;g = 87;b = 5;break;\n } else g = f;\n }if ((b | 0) == 2) if (!g) f = 5800;else {\n f = 5800;b = 5;\n }if ((b | 0) == 5) while (1) {\n do {\n b = f;f = f + 1 | 0;\n } while ((a[b >> 0] | 0) != 0);g = g + -1 | 0;if (!g) break;else b = 5;\n }return YB(f, c[e + 20 >> 2] | 0) | 0;\n }function YB(a, b) {\n a = a | 0;b = b | 0;return ZB(a, b) | 0;\n }function ZB(a, b) {\n a = a | 0;b = b | 0;if (!b) b = 0;else b = _B(c[b >> 2] | 0, c[b + 4 >> 2] | 0, a) | 0;return (b | 0 ? b : a) | 0;\n }function _B(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;o = (c[b >> 2] | 0) + 1794895138 | 0;h = $B(c[b + 8 >> 2] | 0, o) | 0;f = $B(c[b + 12 >> 2] | 0, o) | 0;g = $B(c[b + 16 >> 2] | 0, o) | 0;a: do if ((h >>> 0 < d >>> 2 >>> 0 ? (n = d - (h << 2) | 0, f >>> 0 < n >>> 0 & g >>> 0 < n >>> 0) : 0) ? ((g | f) & 3 | 0) == 0 : 0) {\n n = f >>> 2;m = g >>> 2;l = 0;while (1) {\n j = h >>> 1;k = l + j | 0;i = k << 1;g = i + n | 0;f = $B(c[b + (g << 2) >> 2] | 0, o) | 0;g = $B(c[b + (g + 1 << 2) >> 2] | 0, o) | 0;if (!(g >>> 0 < d >>> 0 & f >>> 0 < (d - g | 0) >>> 0)) {\n f = 0;break a;\n }if (a[b + (g + f) >> 0] | 0) {\n f = 0;break a;\n }f = AB(e, b + g | 0) | 0;if (!f) break;f = (f | 0) < 0;if ((h | 0) == 1) {\n f = 0;break a;\n } else {\n l = f ? l : k;h = f ? j : h - j | 0;\n }\n }f = i + m | 0;g = $B(c[b + (f << 2) >> 2] | 0, o) | 0;f = $B(c[b + (f + 1 << 2) >> 2] | 0, o) | 0;if (f >>> 0 < d >>> 0 & g >>> 0 < (d - f | 0) >>> 0) f = (a[b + (f + g) >> 0] | 0) == 0 ? b + f | 0 : 0;else f = 0;\n } else f = 0; while (0);return f | 0;\n }function $B(a, b) {\n a = a | 0;b = b | 0;var c = 0;c = IC(a | 0) | 0;return ((b | 0) == 0 ? a : c) | 0;\n }function aC(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;f = e + 16 | 0;g = c[f >> 2] | 0;if (!g) {\n if (!(bC(e) | 0)) {\n g = c[f >> 2] | 0;h = 5;\n } else f = 0;\n } else h = 5;a: do if ((h | 0) == 5) {\n j = e + 20 | 0;i = c[j >> 2] | 0;f = i;if ((g - i | 0) >>> 0 < d >>> 0) {\n f = sb[c[e + 36 >> 2] & 7](e, b, d) | 0;break;\n }b: do if ((a[e + 75 >> 0] | 0) > -1) {\n i = d;while (1) {\n if (!i) {\n h = 0;g = b;break b;\n }g = i + -1 | 0;if ((a[b + g >> 0] | 0) == 10) break;else i = g;\n }f = sb[c[e + 36 >> 2] & 7](e, b, i) | 0;if (f >>> 0 < i >>> 0) break a;h = i;g = b + i | 0;d = d - i | 0;f = c[j >> 2] | 0;\n } else {\n h = 0;g = b;\n } while (0);BC(f | 0, g | 0, d | 0) | 0;c[j >> 2] = (c[j >> 2] | 0) + d;f = h + d | 0;\n } while (0);return f | 0;\n }function bC(b) {\n b = b | 0;var d = 0,\n e = 0;d = b + 74 | 0;e = a[d >> 0] | 0;a[d >> 0] = e + 255 | e;d = c[b >> 2] | 0;if (!(d & 8)) {\n c[b + 8 >> 2] = 0;c[b + 4 >> 2] = 0;e = c[b + 44 >> 2] | 0;c[b + 28 >> 2] = e;c[b + 20 >> 2] = e;c[b + 16 >> 2] = e + (c[b + 48 >> 2] | 0);b = 0;\n } else {\n c[b >> 2] = d | 32;b = -1;\n }return b | 0;\n }function cC(a, b) {\n a = T(a);b = T(b);var c = 0,\n d = 0;c = dC(a) | 0;do if ((c & 2147483647) >>> 0 <= 2139095040) {\n d = dC(b) | 0;if ((d & 2147483647) >>> 0 <= 2139095040) if ((d ^ c | 0) < 0) {\n a = (c | 0) < 0 ? b : a;break;\n } else {\n a = a < b ? b : a;break;\n }\n } else a = b; while (0);return T(a);\n }function dC(a) {\n a = T(a);return (g[j >> 2] = a, c[j >> 2] | 0) | 0;\n }function eC(a, b) {\n a = T(a);b = T(b);var c = 0,\n d = 0;c = fC(a) | 0;do if ((c & 2147483647) >>> 0 <= 2139095040) {\n d = fC(b) | 0;if ((d & 2147483647) >>> 0 <= 2139095040) if ((d ^ c | 0) < 0) {\n a = (c | 0) < 0 ? a : b;break;\n } else {\n a = a < b ? a : b;break;\n }\n } else a = b; while (0);return T(a);\n }function fC(a) {\n a = T(a);return (g[j >> 2] = a, c[j >> 2] | 0) | 0;\n }function gC(a, b) {\n a = T(a);b = T(b);var d = 0,\n e = 0,\n f = 0,\n h = 0,\n i = 0,\n k = 0,\n l = 0,\n m = 0;h = (g[j >> 2] = a, c[j >> 2] | 0);k = (g[j >> 2] = b, c[j >> 2] | 0);d = h >>> 23 & 255;i = k >>> 23 & 255;l = h & -2147483648;f = k << 1;a: do if ((f | 0) != 0 ? !((d | 0) == 255 | ((hC(b) | 0) & 2147483647) >>> 0 > 2139095040) : 0) {\n e = h << 1;if (e >>> 0 <= f >>> 0) {\n b = T(a * T(0.0));return T((e | 0) == (f | 0) ? b : a);\n }if (!d) {\n d = h << 9;if ((d | 0) > -1) {\n e = d;d = 0;do {\n d = d + -1 | 0;e = e << 1;\n } while ((e | 0) > -1);\n } else d = 0;e = h << 1 - d;\n } else e = h & 8388607 | 8388608;if (!i) {\n h = k << 9;if ((h | 0) > -1) {\n f = 0;do {\n f = f + -1 | 0;h = h << 1;\n } while ((h | 0) > -1);\n } else f = 0;i = f;k = k << 1 - f;\n } else k = k & 8388607 | 8388608;f = e - k | 0;h = (f | 0) > -1;b: do if ((d | 0) > (i | 0)) {\n while (1) {\n if (h) if (!f) break;else e = f;e = e << 1;d = d + -1 | 0;f = e - k | 0;h = (f | 0) > -1;if ((d | 0) <= (i | 0)) break b;\n }b = T(a * T(0.0));break a;\n } while (0);if (h) if (!f) {\n b = T(a * T(0.0));break;\n } else e = f;if (e >>> 0 < 8388608) do {\n e = e << 1;d = d + -1 | 0;\n } while (e >>> 0 < 8388608);if ((d | 0) > 0) d = e + -8388608 | d << 23;else d = e >>> (1 - d | 0);b = (c[j >> 2] = d | l, T(g[j >> 2]));\n } else m = 3; while (0);if ((m | 0) == 3) {\n b = T(a * b);b = T(b / b);\n }return T(b);\n }function hC(a) {\n a = T(a);return (g[j >> 2] = a, c[j >> 2] | 0) | 0;\n }function iC(a, b) {\n a = a | 0;b = b | 0;return CB(c[582] | 0, a, b) | 0;\n }function jC(a) {\n a = a | 0;Ta();\n }function kC(a) {\n a = a | 0;return;\n }function lC(a, b) {\n a = a | 0;b = b | 0;return 0;\n }function mC(a) {\n a = a | 0;if ((nC(a + 4 | 0) | 0) == -1) {\n nb[c[(c[a >> 2] | 0) + 8 >> 2] & 127](a);a = 1;\n } else a = 0;return a | 0;\n }function nC(a) {\n a = a | 0;var b = 0;b = c[a >> 2] | 0;c[a >> 2] = b + -1;return b + -1 | 0;\n }function oC(a) {\n a = a | 0;if (mC(a) | 0) pC(a);return;\n }function pC(a) {\n a = a | 0;var b = 0;b = a + 8 | 0;if (!((c[b >> 2] | 0) != 0 ? (nC(b) | 0) != -1 : 0)) nb[c[(c[a >> 2] | 0) + 16 >> 2] & 127](a);return;\n }function qC(a) {\n a = a | 0;var b = 0;b = (a | 0) == 0 ? 1 : a;while (1) {\n a = oB(b) | 0;if (a | 0) break;a = uC() | 0;if (!a) {\n a = 0;break;\n }Fb[a & 0]();\n }return a | 0;\n }function rC(a) {\n a = a | 0;return qC(a) | 0;\n }function sC(a) {\n a = a | 0;pB(a);return;\n }function tC(b) {\n b = b | 0;if ((a[b + 11 >> 0] | 0) < 0) sC(c[b >> 2] | 0);return;\n }function uC() {\n var a = 0;a = c[2923] | 0;c[2923] = a + 0;return a | 0;\n }function vC() {}function wC(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;return (A = d, a - c >>> 0 | 0) | 0;\n }function xC(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;c = a + c >>> 0;return (A = b + d + (c >>> 0 < a >>> 0 | 0) >>> 0, c | 0) | 0;\n }function yC(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0,\n i = 0;h = b + e | 0;d = d & 255;if ((e | 0) >= 67) {\n while (b & 3) {\n a[b >> 0] = d;b = b + 1 | 0;\n }f = h & -4 | 0;g = f - 64 | 0;i = d | d << 8 | d << 16 | d << 24;while ((b | 0) <= (g | 0)) {\n c[b >> 2] = i;c[b + 4 >> 2] = i;c[b + 8 >> 2] = i;c[b + 12 >> 2] = i;c[b + 16 >> 2] = i;c[b + 20 >> 2] = i;c[b + 24 >> 2] = i;c[b + 28 >> 2] = i;c[b + 32 >> 2] = i;c[b + 36 >> 2] = i;c[b + 40 >> 2] = i;c[b + 44 >> 2] = i;c[b + 48 >> 2] = i;c[b + 52 >> 2] = i;c[b + 56 >> 2] = i;c[b + 60 >> 2] = i;b = b + 64 | 0;\n }while ((b | 0) < (f | 0)) {\n c[b >> 2] = i;b = b + 4 | 0;\n }\n }while ((b | 0) < (h | 0)) {\n a[b >> 0] = d;b = b + 1 | 0;\n }return h - e | 0;\n }function zC(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;if ((c | 0) < 32) {\n A = b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c;return a << c;\n }A = a << c - 32;return 0;\n }function AC(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;if ((c | 0) < 32) {\n A = b >>> c;return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }A = 0;return b >>> c - 32 | 0;\n }function BC(b, d, e) {\n b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0,\n h = 0;if ((e | 0) >= 8192) return Oa(b | 0, d | 0, e | 0) | 0;h = b | 0;g = b + e | 0;if ((b & 3) == (d & 3)) {\n while (b & 3) {\n if (!e) return h | 0;a[b >> 0] = a[d >> 0] | 0;b = b + 1 | 0;d = d + 1 | 0;e = e - 1 | 0;\n }e = g & -4 | 0;f = e - 64 | 0;while ((b | 0) <= (f | 0)) {\n c[b >> 2] = c[d >> 2];c[b + 4 >> 2] = c[d + 4 >> 2];c[b + 8 >> 2] = c[d + 8 >> 2];c[b + 12 >> 2] = c[d + 12 >> 2];c[b + 16 >> 2] = c[d + 16 >> 2];c[b + 20 >> 2] = c[d + 20 >> 2];c[b + 24 >> 2] = c[d + 24 >> 2];c[b + 28 >> 2] = c[d + 28 >> 2];c[b + 32 >> 2] = c[d + 32 >> 2];c[b + 36 >> 2] = c[d + 36 >> 2];c[b + 40 >> 2] = c[d + 40 >> 2];c[b + 44 >> 2] = c[d + 44 >> 2];c[b + 48 >> 2] = c[d + 48 >> 2];c[b + 52 >> 2] = c[d + 52 >> 2];c[b + 56 >> 2] = c[d + 56 >> 2];c[b + 60 >> 2] = c[d + 60 >> 2];b = b + 64 | 0;d = d + 64 | 0;\n }while ((b | 0) < (e | 0)) {\n c[b >> 2] = c[d >> 2];b = b + 4 | 0;d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;while ((b | 0) < (e | 0)) {\n a[b >> 0] = a[d >> 0] | 0;a[b + 1 >> 0] = a[d + 1 >> 0] | 0;a[b + 2 >> 0] = a[d + 2 >> 0] | 0;a[b + 3 >> 0] = a[d + 3 >> 0] | 0;b = b + 4 | 0;d = d + 4 | 0;\n }\n }while ((b | 0) < (g | 0)) {\n a[b >> 0] = a[d >> 0] | 0;b = b + 1 | 0;d = d + 1 | 0;\n }return h | 0;\n }function CC(b) {\n b = b | 0;var c = 0;c = a[n + (b & 255) >> 0] | 0;if ((c | 0) < 8) return c | 0;c = a[n + (b >> 8 & 255) >> 0] | 0;if ((c | 0) < 8) return c + 8 | 0;c = a[n + (b >> 16 & 255) >> 0] | 0;if ((c | 0) < 8) return c + 16 | 0;return (a[n + (b >>> 24) >> 0] | 0) + 24 | 0;\n }function DC(a, b, d, e, f) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;f = f | 0;var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;l = a;j = b;k = j;h = d;n = e;i = n;if (!k) {\n g = (f | 0) != 0;if (!i) {\n if (g) {\n c[f >> 2] = (l >>> 0) % (h >>> 0);c[f + 4 >> 2] = 0;\n }n = 0;f = (l >>> 0) / (h >>> 0) >>> 0;return (A = n, f) | 0;\n } else {\n if (!g) {\n n = 0;f = 0;return (A = n, f) | 0;\n }c[f >> 2] = a | 0;c[f + 4 >> 2] = b & 0;n = 0;f = 0;return (A = n, f) | 0;\n }\n }g = (i | 0) == 0;do if (h) {\n if (!g) {\n g = (S(i | 0) | 0) - (S(k | 0) | 0) | 0;if (g >>> 0 <= 31) {\n m = g + 1 | 0;i = 31 - g | 0;b = g - 31 >> 31;h = m;a = l >>> (m >>> 0) & b | k << i;b = k >>> (m >>> 0) & b;g = 0;i = l << i;break;\n }if (!f) {\n n = 0;f = 0;return (A = n, f) | 0;\n }c[f >> 2] = a | 0;c[f + 4 >> 2] = j | b & 0;n = 0;f = 0;return (A = n, f) | 0;\n }g = h - 1 | 0;if (g & h | 0) {\n i = (S(h | 0) | 0) + 33 - (S(k | 0) | 0) | 0;p = 64 - i | 0;m = 32 - i | 0;j = m >> 31;o = i - 32 | 0;b = o >> 31;h = i;a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & b;b = b & k >>> (i >>> 0);g = l << p & j;i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;break;\n }if (f | 0) {\n c[f >> 2] = g & l;c[f + 4 >> 2] = 0;\n }if ((h | 0) == 1) {\n o = j | b & 0;p = a | 0 | 0;return (A = o, p) | 0;\n } else {\n p = CC(h | 0) | 0;o = k >>> (p >>> 0) | 0;p = k << 32 - p | l >>> (p >>> 0) | 0;return (A = o, p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n c[f >> 2] = (k >>> 0) % (h >>> 0);c[f + 4 >> 2] = 0;\n }o = 0;p = (k >>> 0) / (h >>> 0) >>> 0;return (A = o, p) | 0;\n }if (!l) {\n if (f | 0) {\n c[f >> 2] = 0;c[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }o = 0;p = (k >>> 0) / (i >>> 0) >>> 0;return (A = o, p) | 0;\n }g = i - 1 | 0;if (!(g & i)) {\n if (f | 0) {\n c[f >> 2] = a | 0;c[f + 4 >> 2] = g & k | b & 0;\n }o = 0;p = k >>> ((CC(i | 0) | 0) >>> 0);return (A = o, p) | 0;\n }g = (S(i | 0) | 0) - (S(k | 0) | 0) | 0;if (g >>> 0 <= 30) {\n b = g + 1 | 0;i = 31 - g | 0;h = b;a = k << i | l >>> (b >>> 0);b = k >>> (b >>> 0);g = 0;i = l << i;break;\n }if (!f) {\n o = 0;p = 0;return (A = o, p) | 0;\n }c[f >> 2] = a | 0;c[f + 4 >> 2] = j | b & 0;o = 0;p = 0;return (A = o, p) | 0;\n } while (0);if (!h) {\n k = i;j = 0;i = 0;\n } else {\n m = d | 0 | 0;l = n | e & 0;k = xC(m | 0, l | 0, -1, -1) | 0;d = A;j = i;i = 0;do {\n e = j;j = g >>> 31 | j << 1;g = i | g << 1;e = a << 1 | e >>> 31 | 0;n = a >>> 31 | b << 1 | 0;wC(k | 0, d | 0, e | 0, n | 0) | 0;p = A;o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;i = o & 1;a = wC(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;b = A;h = h - 1 | 0;\n } while ((h | 0) != 0);k = j;j = 0;\n }h = 0;if (f | 0) {\n c[f >> 2] = a;c[f + 4 >> 2] = b;\n }o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;p = (g << 1 | 0 >>> 31) & -2 | i;return (A = o, p) | 0;\n }function EC(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;return DC(a, b, c, d, 0) | 0;\n }function FC(a) {\n a = a | 0;var b = 0,\n d = 0;d = a + 15 & -16 | 0;b = c[i >> 2] | 0;a = b + d | 0;if ((d | 0) > 0 & (a | 0) < (b | 0) | (a | 0) < 0) {\n Y() | 0;Qa(12);return -1;\n }c[i >> 2] = a;if ((a | 0) > (X() | 0) ? (W() | 0) == 0 : 0) {\n c[i >> 2] = b;Qa(12);return -1;\n }return b | 0;\n }function GC(b, c, d) {\n b = b | 0;c = c | 0;d = d | 0;var e = 0;if ((c | 0) < (b | 0) & (b | 0) < (c + d | 0)) {\n e = b;c = c + d | 0;b = b + d | 0;while ((d | 0) > 0) {\n b = b - 1 | 0;c = c - 1 | 0;d = d - 1 | 0;a[b >> 0] = a[c >> 0] | 0;\n }b = e;\n } else BC(b, c, d) | 0;return b | 0;\n }function HC(a, b, d, e) {\n a = a | 0;b = b | 0;d = d | 0;e = e | 0;var f = 0,\n g = 0;g = l;l = l + 16 | 0;f = g | 0;DC(a, b, d, e, f) | 0;l = g;return (A = c[f + 4 >> 2] | 0, c[f >> 2] | 0) | 0;\n }function IC(a) {\n a = a | 0;return (a & 255) << 24 | (a >> 8 & 255) << 16 | (a >> 16 & 255) << 8 | a >>> 24 | 0;\n }function JC(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;jb[a & 1](b | 0, c | 0, d | 0, e | 0, f | 0);\n }function KC(a, b, c) {\n a = a | 0;b = b | 0;c = T(c);kb[a & 1](b | 0, T(c));\n }function LC(a, b, c) {\n a = a | 0;b = b | 0;c = +c;lb[a & 31](b | 0, +c);\n }function MC(a, b, c, d) {\n a = a | 0;b = b | 0;c = T(c);d = T(d);return T(mb[a & 0](b | 0, T(c), T(d)));\n }function NC(a, b) {\n a = a | 0;b = b | 0;nb[a & 127](b | 0);\n }function OC(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;ob[a & 31](b | 0, c | 0);\n }function PC(a, b) {\n a = a | 0;b = b | 0;return pb[a & 31](b | 0) | 0;\n }function QC(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = +c;d = +d;e = e | 0;qb[a & 1](b | 0, +c, +d, e | 0);\n }function RC(a, b, c, d) {\n a = a | 0;b = b | 0;c = +c;d = +d;rb[a & 1](b | 0, +c, +d);\n }function SC(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;return sb[a & 7](b | 0, c | 0, d | 0) | 0;\n }function TC(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;return +tb[a & 1](b | 0, c | 0, d | 0);\n }function UC(a, b) {\n a = a | 0;b = b | 0;return +ub[a & 15](b | 0);\n }function VC(a, b, c) {\n a = a | 0;b = b | 0;c = +c;return vb[a & 1](b | 0, +c) | 0;\n }function WC(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;return wb[a & 15](b | 0, c | 0) | 0;\n }function XC(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = +d;e = +e;f = f | 0;xb[a & 1](b | 0, c | 0, +d, +e, f | 0);\n }function YC(a, b, c, d, e, f, g) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;g = g | 0;yb[a & 1](b | 0, c | 0, d | 0, e | 0, f | 0, g | 0);\n }function ZC(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;return +zb[a & 7](b | 0, c | 0);\n }function _C(a) {\n a = a | 0;return Ab[a & 7]() | 0;\n }function $C(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;return Bb[a & 1](b | 0, c | 0, d | 0, e | 0, f | 0) | 0;\n }function aD(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = +e;Cb[a & 1](b | 0, c | 0, d | 0, +e);\n }function bD(a, b, c, d, e, f, g) {\n a = a | 0;b = b | 0;c = c | 0;d = T(d);e = e | 0;f = T(f);g = g | 0;Db[a & 1](b | 0, c | 0, T(d), e | 0, T(f), g | 0);\n }function cD(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;Eb[a & 15](b | 0, c | 0, d | 0);\n }function dD(a) {\n a = a | 0;Fb[a & 0]();\n }function eD(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = +d;Gb[a & 15](b | 0, c | 0, +d);\n }function fD(a, b, c) {\n a = a | 0;b = +b;c = +c;return Hb[a & 1](+b, +c) | 0;\n }function gD(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;Ib[a & 15](b | 0, c | 0, d | 0, e | 0);\n }function hD(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;U(0);\n }function iD(a, b) {\n a = a | 0;b = T(b);U(1);\n }function jD(a, b) {\n a = a | 0;b = +b;U(2);\n }function kD(a, b, c) {\n a = a | 0;b = T(b);c = T(c);U(3);return ib;\n }function lD(a) {\n a = a | 0;U(4);\n }function mD(a, b) {\n a = a | 0;b = b | 0;U(5);\n }function nD(a) {\n a = a | 0;U(6);return 0;\n }function oD(a, b, c, d) {\n a = a | 0;b = +b;c = +c;d = d | 0;U(7);\n }function pD(a, b, c) {\n a = a | 0;b = +b;c = +c;U(8);\n }function qD(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;U(9);return 0;\n }function rD(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;U(10);return 0.0;\n }function sD(a) {\n a = a | 0;U(11);return 0.0;\n }function tD(a, b) {\n a = a | 0;b = +b;U(12);return 0;\n }function uD(a, b) {\n a = a | 0;b = b | 0;U(13);return 0;\n }function vD(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = +c;d = +d;e = e | 0;U(14);\n }function wD(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;f = f | 0;U(15);\n }function xD(a, b) {\n a = a | 0;b = b | 0;U(16);return 0.0;\n }function yD() {\n U(17);return 0;\n }function zD(a, b, c, d, e) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;e = e | 0;U(18);return 0;\n }function AD(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = +d;U(19);\n }function BD(a, b, c, d, e, f) {\n a = a | 0;b = b | 0;c = T(c);d = d | 0;e = T(e);f = f | 0;U(20);\n }function CD(a, b, c) {\n a = a | 0;b = b | 0;c = c | 0;U(21);\n }function DD() {\n U(22);\n }function ED(a, b, c) {\n a = a | 0;b = b | 0;c = +c;U(23);\n }function FD(a, b) {\n a = +a;b = +b;U(24);return 0;\n }function GD(a, b, c, d) {\n a = a | 0;b = b | 0;c = c | 0;d = d | 0;U(25);\n }\n\n // EMSCRIPTEN_END_FUNCS\n var jb = [hD, Uw];var kb = [iD, of];var lb = [jD, Of, Pf, Qf, Rf, Sf, Tf, Uf, Wf, Xf, Zf, _f, $f, ag, bg, cg, dg, eg, fg, jD, jD, jD, jD, jD, jD, jD, jD, jD, jD, jD, jD, jD];var mb = [kD];var nb = [lD, kC, Ki, Li, Mi, rn, sn, tn, Pu, Qu, Ru, Cw, Dw, Ew, DA, EA, FA, Rb, tf, yf, Vf, Yf, hh, ih, ri, Ui, kj, Jj, bk, zk, Wk, nl, Hl, bm, um, Nm, en, Nn, fo, yo, Ro, ip, Bp, Xp, nq, Eq, Zq, lf, Hr, _r, us, Ps, ft, Ct, Ot, Rt, ju, mu, Eu, Uu, Xu, pv, Kv, Vi, $x, Ky, az, sz, Rz, hA, tA, wA, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD, lD];var ob = [mD, zf, Af, Df, Ef, Ff, Gf, Hf, If, Lf, Mf, Nf, wg, zg, Ag, Bg, Cg, Dg, Eg, Jg, Ng, rh, $p, qq, Ts, cy, Sv, xy, mD, mD, mD, mD];var pb = [nD, rB, sf, jg, ng, og, pg, qg, rg, sg, ug, vg, Kg, Lg, jh, ar, jt, sv, hy, jy, nD, nD, nD, nD, nD, nD, nD, nD, nD, nD, nD, nD];var qb = [oD, kh];var rb = [pD, Hu];var sb = [qD, sB, tB, zB, Dk, Rn, Lr, wz];var tb = [rD, ym];var ub = [sD, xg, yg, Fg, lh, mh, nh, oh, ph, qh, sD, sD, sD, sD, sD, sD];var vb = [tD, Kt];var wb = [uD, lC, Mg, xi, Nj, _k, rl, jn, jo, Iq, pf, ez, uD, uD, uD, uD];var xb = [vD, oj];var yb = [wD, Vz];var zb = [xD, Gg, sh, th, uh, Rm, xD, xD];var Ab = [yD, vh, qf, jf, Wt, qu, av, AA];var Bb = [zD, ee];var Cb = [AD, Vo];var Db = [BD, Pg];var Eb = [CD, kg, tg, Hg, Ig, fk, Ll, mp, Fp, nf, vx, Oy, lA, CD, CD, CD];var Fb = [DD];var Gb = [ED, Bf, Cf, Jf, Kf, gg, hg, ig, Co, cs, Ft, ED, ED, ED, ED, ED];var Hb = [FD, Mu];var Ib = [GD, fm, ir, ys, st, au, wu, hv, Pv, oy, LA, GD, GD, GD, GD, GD];return { _llvm_bswap_i32: IC, dynCall_idd: fD, dynCall_i: _C, _i64Subtract: wC, ___udivdi3: EC, dynCall_vif: KC, setThrew: Nb, dynCall_viii: cD, _bitshift64Lshr: AC, _bitshift64Shl: zC, dynCall_vi: NC, dynCall_viiddi: XC, dynCall_diii: TC, dynCall_iii: WC, _memset: yC, _sbrk: FC, _memcpy: BC, __GLOBAL__sub_I_Yoga_cpp: hf, dynCall_vii: OC, ___uremdi3: HC, dynCall_vid: LC, stackAlloc: Jb, _nbind_init: _A, getTempRet0: Pb, dynCall_di: UC, dynCall_iid: VC, setTempRet0: Ob, _i64Add: xC, dynCall_fiff: MC, dynCall_iiii: SC, _emscripten_get_global_libc: qB, dynCall_viid: eD, dynCall_viiid: aD, dynCall_viififi: bD, dynCall_ii: PC, __GLOBAL__sub_I_Binding_cc: Sx, dynCall_viiii: gD, dynCall_iiiiii: $C, stackSave: Kb, dynCall_viiiii: JC, __GLOBAL__sub_I_nbind_cc: wh, dynCall_vidd: RC, _free: pB, runPostSets: vC, dynCall_viiiiii: YC, establishStackSpace: Mb, _memmove: GC, stackRestore: Lb, _malloc: oB, __GLOBAL__sub_I_common_cc: Bv, dynCall_viddi: QC, dynCall_dii: ZC, dynCall_v: dD };\n }(\n\n // EMSCRIPTEN_END_ASM\n Module.asmGlobalArg, Module.asmLibraryArg, buffer);var _llvm_bswap_i32 = Module[\"_llvm_bswap_i32\"] = asm[\"_llvm_bswap_i32\"];var getTempRet0 = Module[\"getTempRet0\"] = asm[\"getTempRet0\"];var ___udivdi3 = Module[\"___udivdi3\"] = asm[\"___udivdi3\"];var setThrew = Module[\"setThrew\"] = asm[\"setThrew\"];var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];var _memset = Module[\"_memset\"] = asm[\"_memset\"];var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];var _nbind_init = Module[\"_nbind_init\"] = asm[\"_nbind_init\"];var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];var setTempRet0 = Module[\"setTempRet0\"] = asm[\"setTempRet0\"];var _i64Add = Module[\"_i64Add\"] = asm[\"_i64Add\"];var _emscripten_get_global_libc = Module[\"_emscripten_get_global_libc\"] = asm[\"_emscripten_get_global_libc\"];var __GLOBAL__sub_I_Yoga_cpp = Module[\"__GLOBAL__sub_I_Yoga_cpp\"] = asm[\"__GLOBAL__sub_I_Yoga_cpp\"];var __GLOBAL__sub_I_Binding_cc = Module[\"__GLOBAL__sub_I_Binding_cc\"] = asm[\"__GLOBAL__sub_I_Binding_cc\"];var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];var __GLOBAL__sub_I_nbind_cc = Module[\"__GLOBAL__sub_I_nbind_cc\"] = asm[\"__GLOBAL__sub_I_nbind_cc\"];var _free = Module[\"_free\"] = asm[\"_free\"];var runPostSets = Module[\"runPostSets\"] = asm[\"runPostSets\"];var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];var _memmove = Module[\"_memmove\"] = asm[\"_memmove\"];var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];var __GLOBAL__sub_I_common_cc = Module[\"__GLOBAL__sub_I_common_cc\"] = asm[\"__GLOBAL__sub_I_common_cc\"];var dynCall_viiiii = Module[\"dynCall_viiiii\"] = asm[\"dynCall_viiiii\"];var dynCall_vif = Module[\"dynCall_vif\"] = asm[\"dynCall_vif\"];var dynCall_vid = Module[\"dynCall_vid\"] = asm[\"dynCall_vid\"];var dynCall_fiff = Module[\"dynCall_fiff\"] = asm[\"dynCall_fiff\"];var dynCall_vi = Module[\"dynCall_vi\"] = asm[\"dynCall_vi\"];var dynCall_vii = Module[\"dynCall_vii\"] = asm[\"dynCall_vii\"];var dynCall_ii = Module[\"dynCall_ii\"] = asm[\"dynCall_ii\"];var dynCall_viddi = Module[\"dynCall_viddi\"] = asm[\"dynCall_viddi\"];var dynCall_vidd = Module[\"dynCall_vidd\"] = asm[\"dynCall_vidd\"];var dynCall_iiii = Module[\"dynCall_iiii\"] = asm[\"dynCall_iiii\"];var dynCall_diii = Module[\"dynCall_diii\"] = asm[\"dynCall_diii\"];var dynCall_di = Module[\"dynCall_di\"] = asm[\"dynCall_di\"];var dynCall_iid = Module[\"dynCall_iid\"] = asm[\"dynCall_iid\"];var dynCall_iii = Module[\"dynCall_iii\"] = asm[\"dynCall_iii\"];var dynCall_viiddi = Module[\"dynCall_viiddi\"] = asm[\"dynCall_viiddi\"];var dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = asm[\"dynCall_viiiiii\"];var dynCall_dii = Module[\"dynCall_dii\"] = asm[\"dynCall_dii\"];var dynCall_i = Module[\"dynCall_i\"] = asm[\"dynCall_i\"];var dynCall_iiiiii = Module[\"dynCall_iiiiii\"] = asm[\"dynCall_iiiiii\"];var dynCall_viiid = Module[\"dynCall_viiid\"] = asm[\"dynCall_viiid\"];var dynCall_viififi = Module[\"dynCall_viififi\"] = asm[\"dynCall_viififi\"];var dynCall_viii = Module[\"dynCall_viii\"] = asm[\"dynCall_viii\"];var dynCall_v = Module[\"dynCall_v\"] = asm[\"dynCall_v\"];var dynCall_viid = Module[\"dynCall_viid\"] = asm[\"dynCall_viid\"];var dynCall_idd = Module[\"dynCall_idd\"] = asm[\"dynCall_idd\"];var dynCall_viiii = Module[\"dynCall_viiii\"] = asm[\"dynCall_viiii\"];Runtime.stackAlloc = Module[\"stackAlloc\"];Runtime.stackSave = Module[\"stackSave\"];Runtime.stackRestore = Module[\"stackRestore\"];Runtime.establishStackSpace = Module[\"establishStackSpace\"];Runtime.setTempRet0 = Module[\"setTempRet0\"];Runtime.getTempRet0 = Module[\"getTempRet0\"];Module[\"asm\"] = asm;function ExitStatus(status) {\n this.name = \"ExitStatus\";this.message = \"Program terminated with exit(\" + status + \")\";this.status = status;\n }ExitStatus.prototype = new Error();ExitStatus.prototype.constructor = ExitStatus;var initialStackTop;var preloadStartTime = null;var calledMain = false;dependenciesFulfilled = function runCaller() {\n if (!Module[\"calledRun\"]) run();if (!Module[\"calledRun\"]) dependenciesFulfilled = runCaller;\n };Module[\"callMain\"] = Module.callMain = function callMain(args) {\n args = args || [];ensureInitRuntime();var argc = args.length + 1;function pad() {\n for (var i = 0; i < 4 - 1; i++) {\n argv.push(0);\n }\n }var argv = [allocate(intArrayFromString(Module[\"thisProgram\"]), \"i8\", ALLOC_NORMAL)];pad();for (var i = 0; i < argc - 1; i = i + 1) {\n argv.push(allocate(intArrayFromString(args[i]), \"i8\", ALLOC_NORMAL));pad();\n }argv.push(0);argv = allocate(argv, \"i32\", ALLOC_NORMAL);try {\n var ret = Module[\"_main\"](argc, argv, 0);exit(ret, true);\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else if (e == \"SimulateInfiniteLoop\") {\n Module[\"noExitRuntime\"] = true;return;\n } else {\n var toLog = e;if (e && typeof e === \"object\" && e.stack) {\n toLog = [e, e.stack];\n }Module.printErr(\"exception thrown: \" + toLog);Module[\"quit\"](1, e);\n }\n } finally {\n calledMain = true;\n }\n };function run(args) {\n args = args || Module[\"arguments\"];if (preloadStartTime === null) preloadStartTime = Date.now();if (runDependencies > 0) {\n return;\n }preRun();if (runDependencies > 0) return;if (Module[\"calledRun\"]) return;function doRun() {\n if (Module[\"calledRun\"]) return;Module[\"calledRun\"] = true;if (ABORT) return;ensureInitRuntime();preMain();if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();if (Module[\"_main\"] && shouldRunNow) Module[\"callMain\"](args);postRun();\n }if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);doRun();\n }, 1);\n } else {\n doRun();\n }\n }Module[\"run\"] = Module.run = run;function exit(status, implicit) {\n if (implicit && Module[\"noExitRuntime\"]) {\n return;\n }if (Module[\"noExitRuntime\"]) {} else {\n ABORT = true;EXITSTATUS = status;STACKTOP = initialStackTop;exitRuntime();if (Module[\"onExit\"]) Module[\"onExit\"](status);\n }if (ENVIRONMENT_IS_NODE) {\n process[\"exit\"](status);\n }Module[\"quit\"](status, new ExitStatus(status));\n }Module[\"exit\"] = Module.exit = exit;var abortDecorators = [];function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }if (what !== undefined) {\n Module.print(what);Module.printErr(what);what = JSON.stringify(what);\n } else {\n what = \"\";\n }ABORT = true;EXITSTATUS = 1;var extra = \"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output = \"abort(\" + what + \") at \" + stackTrace() + extra;if (abortDecorators) {\n abortDecorators.forEach(function (decorator) {\n output = decorator(output, what);\n });\n }throw output;\n }Module[\"abort\"] = Module.abort = abort;if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }var shouldRunNow = true;if (Module[\"noInitialRun\"]) {\n shouldRunNow = false;\n }run();\n});\n","\"use strict\";\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @format\n */\n\nvar CONSTANTS = {\n ALIGN_COUNT: 8,\n ALIGN_AUTO: 0,\n ALIGN_FLEX_START: 1,\n ALIGN_CENTER: 2,\n ALIGN_FLEX_END: 3,\n ALIGN_STRETCH: 4,\n ALIGN_BASELINE: 5,\n ALIGN_SPACE_BETWEEN: 6,\n ALIGN_SPACE_AROUND: 7,\n\n DIMENSION_COUNT: 2,\n DIMENSION_WIDTH: 0,\n DIMENSION_HEIGHT: 1,\n\n DIRECTION_COUNT: 3,\n DIRECTION_INHERIT: 0,\n DIRECTION_LTR: 1,\n DIRECTION_RTL: 2,\n\n DISPLAY_COUNT: 2,\n DISPLAY_FLEX: 0,\n DISPLAY_NONE: 1,\n\n EDGE_COUNT: 9,\n EDGE_LEFT: 0,\n EDGE_TOP: 1,\n EDGE_RIGHT: 2,\n EDGE_BOTTOM: 3,\n EDGE_START: 4,\n EDGE_END: 5,\n EDGE_HORIZONTAL: 6,\n EDGE_VERTICAL: 7,\n EDGE_ALL: 8,\n\n EXPERIMENTAL_FEATURE_COUNT: 1,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: 0,\n\n FLEX_DIRECTION_COUNT: 4,\n FLEX_DIRECTION_COLUMN: 0,\n FLEX_DIRECTION_COLUMN_REVERSE: 1,\n FLEX_DIRECTION_ROW: 2,\n FLEX_DIRECTION_ROW_REVERSE: 3,\n\n JUSTIFY_COUNT: 6,\n JUSTIFY_FLEX_START: 0,\n JUSTIFY_CENTER: 1,\n JUSTIFY_FLEX_END: 2,\n JUSTIFY_SPACE_BETWEEN: 3,\n JUSTIFY_SPACE_AROUND: 4,\n JUSTIFY_SPACE_EVENLY: 5,\n\n LOG_LEVEL_COUNT: 6,\n LOG_LEVEL_ERROR: 0,\n LOG_LEVEL_WARN: 1,\n LOG_LEVEL_INFO: 2,\n LOG_LEVEL_DEBUG: 3,\n LOG_LEVEL_VERBOSE: 4,\n LOG_LEVEL_FATAL: 5,\n\n MEASURE_MODE_COUNT: 3,\n MEASURE_MODE_UNDEFINED: 0,\n MEASURE_MODE_EXACTLY: 1,\n MEASURE_MODE_AT_MOST: 2,\n\n NODE_TYPE_COUNT: 2,\n NODE_TYPE_DEFAULT: 0,\n NODE_TYPE_TEXT: 1,\n\n OVERFLOW_COUNT: 3,\n OVERFLOW_VISIBLE: 0,\n OVERFLOW_HIDDEN: 1,\n OVERFLOW_SCROLL: 2,\n\n POSITION_TYPE_COUNT: 2,\n POSITION_TYPE_RELATIVE: 0,\n POSITION_TYPE_ABSOLUTE: 1,\n\n PRINT_OPTIONS_COUNT: 3,\n PRINT_OPTIONS_LAYOUT: 1,\n PRINT_OPTIONS_STYLE: 2,\n PRINT_OPTIONS_CHILDREN: 4,\n\n UNIT_COUNT: 4,\n UNIT_UNDEFINED: 0,\n UNIT_POINT: 1,\n UNIT_PERCENT: 2,\n UNIT_AUTO: 3,\n\n WRAP_COUNT: 3,\n WRAP_NO_WRAP: 0,\n WRAP_WRAP: 1,\n WRAP_WRAP_REVERSE: 2\n};\n\nmodule.exports = CONSTANTS;","'use strict';\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @format\n */\n\nvar Yoga = require('./entry-common');\nvar nbind = require('../build/Release/nbind.js');\n\nvar ran = false;\nvar ret = null;\n\nnbind({}, function (err, result) {\n if (ran) {\n return;\n }\n\n ran = true;\n\n if (err) {\n throw err;\n }\n\n ret = result;\n});\n\nif (!ran) {\n throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");\n}\n\n// $FlowFixMe ret will not be null here\nmodule.exports = Yoga(ret.bind, ret.lib);","'use strict';\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @format\n */\n\nvar CONSTANTS = require('./YGEnums');\n\nvar Layout = function () {\n function Layout(left, right, top, bottom, width, height) {\n _classCallCheck(this, Layout);\n\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n this.width = width;\n this.height = height;\n }\n\n _createClass(Layout, [{\n key: 'fromJS',\n value: function fromJS(expose) {\n expose(this.left, this.right, this.top, this.bottom, this.width, this.height);\n }\n }, {\n key: 'toString',\n value: function toString() {\n return '';\n }\n }]);\n\n return Layout;\n}();\n\nvar Size = function () {\n _createClass(Size, null, [{\n key: 'fromJS',\n value: function fromJS(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return new Size(width, height);\n }\n }]);\n\n function Size(width, height) {\n _classCallCheck(this, Size);\n\n this.width = width;\n this.height = height;\n }\n\n _createClass(Size, [{\n key: 'fromJS',\n value: function fromJS(expose) {\n expose(this.width, this.height);\n }\n }, {\n key: 'toString',\n value: function toString() {\n return '';\n }\n }]);\n\n return Size;\n}();\n\nvar Value = function () {\n function Value(unit, value) {\n _classCallCheck(this, Value);\n\n this.unit = unit;\n this.value = value;\n }\n\n _createClass(Value, [{\n key: 'fromJS',\n value: function fromJS(expose) {\n expose(this.unit, this.value);\n }\n }, {\n key: 'toString',\n value: function toString() {\n switch (this.unit) {\n case CONSTANTS.UNIT_POINT:\n return String(this.value);\n case CONSTANTS.UNIT_PERCENT:\n return this.value + '%';\n case CONSTANTS.UNIT_AUTO:\n return 'auto';\n default:\n {\n return this.value + '?';\n }\n }\n }\n }, {\n key: 'valueOf',\n value: function valueOf() {\n return this.value;\n }\n }]);\n\n return Value;\n}();\n\nmodule.exports = function (bind, lib) {\n function patch(prototype, name, fn) {\n var original = prototype[name];\n\n prototype[name] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return fn.call.apply(fn, [this, original].concat(args));\n };\n }\n\n var _arr = ['setPosition', 'setMargin', 'setFlexBasis', 'setWidth', 'setHeight', 'setMinWidth', 'setMinHeight', 'setMaxWidth', 'setMaxHeight', 'setPadding'];\n\n var _loop = function _loop() {\n var _methods;\n\n var fnName = _arr[_i];\n var methods = (_methods = {}, _defineProperty(_methods, CONSTANTS.UNIT_POINT, lib.Node.prototype[fnName]), _defineProperty(_methods, CONSTANTS.UNIT_PERCENT, lib.Node.prototype[fnName + 'Percent']), _defineProperty(_methods, CONSTANTS.UNIT_AUTO, lib.Node.prototype[fnName + 'Auto']), _methods);\n\n patch(lib.Node.prototype, fnName, function (original) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n // We patch all these functions to add support for the following calls:\n // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n var value = args.pop();\n var unit = void 0,\n asNumber = void 0;\n\n if (value === 'auto') {\n unit = CONSTANTS.UNIT_AUTO;\n asNumber = undefined;\n } else if (value instanceof Value) {\n unit = value.unit;\n asNumber = value.valueOf();\n } else {\n unit = typeof value === 'string' && value.endsWith('%') ? CONSTANTS.UNIT_PERCENT : CONSTANTS.UNIT_POINT;\n asNumber = parseFloat(value);\n if (!Number.isNaN(value) && Number.isNaN(asNumber)) {\n throw new Error('Invalid value ' + value + ' for ' + fnName);\n }\n }\n\n if (!methods[unit]) throw new Error('Failed to execute \"' + fnName + '\": Unsupported unit \\'' + value + '\\'');\n\n if (asNumber !== undefined) {\n var _methods$unit;\n\n return (_methods$unit = methods[unit]).call.apply(_methods$unit, [this].concat(args, [asNumber]));\n } else {\n var _methods$unit2;\n\n return (_methods$unit2 = methods[unit]).call.apply(_methods$unit2, [this].concat(args));\n }\n });\n };\n\n for (var _i = 0; _i < _arr.length; _i++) {\n _loop();\n }\n\n patch(lib.Config.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Config.create),\n // we also need to handle the deallocation\n lib.Config.destroy(this);\n });\n\n patch(lib.Node, 'create', function (_, config) {\n // We decide the constructor we want to call depending on the parameters\n return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();\n });\n\n patch(lib.Node.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Node.create),\n // we also need to handle the deallocation\n lib.Node.destroy(this);\n });\n\n patch(lib.Node.prototype, 'freeRecursive', function () {\n for (var t = 0, T = this.getChildCount(); t < T; ++t) {\n this.getChild(0).freeRecursive();\n }\n this.free();\n });\n\n patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {\n // This patch is just a convenience patch, since it helps write more\n // idiomatic source code (such as .setMeasureFunc(null))\n // We also automatically convert the return value of the measureFunc\n // to a Size object, so that we can return anything that has .width and\n // .height properties\n if (measureFunc) {\n return original.call(this, function () {\n return Size.fromJS(measureFunc.apply(undefined, arguments));\n });\n } else {\n return this.unsetMeasureFunc();\n }\n });\n\n patch(lib.Node.prototype, 'calculateLayout', function (original) {\n var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;\n var direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : CONSTANTS.DIRECTION_LTR;\n\n // Just a small patch to add support for the function default parameters\n return original.call(this, width, height, direction);\n });\n\n return _extends({\n Config: lib.Config,\n Node: lib.Node,\n Layout: bind('Layout', Layout),\n Size: bind('Size', Size),\n Value: bind('Value', Value),\n getInstanceCount: function getInstanceCount() {\n return lib.getInstanceCount.apply(lib, arguments);\n }\n }, CONSTANTS);\n};","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\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&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function () {\n return _DraggableCore.default;\n }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\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); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n ...DraggableCoreDefaultProps,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: Bounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n scale: number,\n};*/\n/*:: export type DraggableProps = {\n ...DraggableCoreProps,\n ...DraggableDefaultProps,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n};*/\n//\n// Define \n//\nclass Draggable extends React.Component /*:: */{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\n });\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: {\n ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef,\n};*/\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: */{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element*/{\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n children: _propTypes.default.node.isRequired,\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * \n *
Example Target
\n *
\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return '';\n\n // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by 's events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by 's events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","/**\n * @license React\n * react-reconciler.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 */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||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{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;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 C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(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(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(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 wc(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=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(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}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(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>=g;e-=g;Nd=1<<32-qc(b)+e|c<u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;uu?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){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===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){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=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))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 Ae=[];\nfunction Be(){for(var a=0;ac?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);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(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();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=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(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&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(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)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));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 Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(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 Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kE()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(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(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(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=qd(-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|=\nc);id(f.return,c,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(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(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}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(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 Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(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 le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(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 Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||rg)){v>f&&(k.height+=v-f,k.y=f);re)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\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// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var C = Object.defineProperty;\nvar x = (t, e, s) => e in t ? C(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar h = (t, e, s) => (x(t, typeof e != \"symbol\" ? e + \"\" : e, s), s);\nconst T = {\n stringify: (t) => t,\n parse: (t) => t\n}, V = {\n stringify: (t) => `${t}`,\n parse: (t) => parseFloat(t)\n}, N = {\n stringify: (t) => t ? \"true\" : \"false\",\n parse: (t) => /^[ty1-9]/i.test(t)\n}, P = {\n stringify: (t) => t.name,\n parse: (t, e, s) => {\n const c = (() => {\n if (typeof window < \"u\" && t in window)\n return window[t];\n if (typeof global < \"u\" && t in global)\n return global[t];\n })();\n return typeof c == \"function\" ? c.bind(s) : void 0;\n }\n}, $ = {\n stringify: (t) => JSON.stringify(t),\n parse: (t) => JSON.parse(t)\n}, A = {\n string: T,\n number: V,\n boolean: N,\n function: P,\n json: $\n};\nfunction J(t) {\n return t.replace(\n /([a-z0-9])([A-Z])/g,\n (e, s, c) => `${s}-${c.toLowerCase()}`\n );\n}\nconst d = Symbol.for(\"r2wc.render\"), g = Symbol.for(\"r2wc.connected\"), l = Symbol.for(\"r2wc.context\"), p = Symbol.for(\"r2wc.props\");\nfunction _(t, e, s) {\n var k, O, j;\n e.props || (e.props = t.propTypes ? Object.keys(t.propTypes) : []);\n const c = Array.isArray(e.props) ? e.props.slice() : Object.keys(e.props), b = {}, m = {}, w = {};\n for (const r of c) {\n b[r] = Array.isArray(e.props) ? \"string\" : e.props[r];\n const u = J(r);\n m[r] = u, w[u] = r;\n }\n class S extends HTMLElement {\n constructor() {\n super();\n h(this, k, !0);\n h(this, O);\n h(this, j, {});\n h(this, \"container\");\n e.shadow ? this.container = this.attachShadow({\n mode: e.shadow\n }) : this.container = this, this[p].container = this.container;\n for (const n of c) {\n const f = m[n], o = this.getAttribute(f), i = b[n], a = i ? A[i] : null;\n a != null && a.parse && o && (this[p][n] = a.parse(o, f, this));\n }\n }\n static get observedAttributes() {\n return Object.keys(w);\n }\n connectedCallback() {\n this[g] = !0, this[d]();\n }\n disconnectedCallback() {\n this[g] = !1, this[l] && s.unmount(this[l]), delete this[l];\n }\n attributeChangedCallback(n, f, o) {\n const i = w[n], a = b[i], y = a ? A[a] : null;\n i in b && (y != null && y.parse) && o && (this[p][i] = y.parse(o, n, this), this[d]());\n }\n [(k = g, O = l, j = p, d)]() {\n this[g] && (this[l] ? s.update(this[l], this[p]) : this[l] = s.mount(\n this.container,\n t,\n this[p]\n ));\n }\n }\n for (const r of c) {\n const u = m[r], n = b[r];\n Object.defineProperty(S.prototype, r, {\n enumerable: !0,\n configurable: !0,\n get() {\n return this[p][r];\n },\n set(f) {\n this[p][r] = f;\n const o = n ? A[n] : null;\n if (o != null && o.stringify) {\n const i = o.stringify(f, u, this);\n this.getAttribute(u) !== i && this.setAttribute(u, i);\n } else\n this[d]();\n }\n });\n }\n return S;\n}\nexport {\n _ as default\n};\n","import o from \"react\";\nimport { createRoot as c } from \"react-dom/client\";\nimport m from \"@r2wc/core\";\nfunction f(t, e, r) {\n const n = c(t), u = o.createElement(e, r);\n return n.render(u), {\n root: n,\n ReactComponent: e\n };\n}\nfunction i({ root: t, ReactComponent: e }, r) {\n const n = o.createElement(e, r);\n t.render(n);\n}\nfunction a({ root: t }) {\n t.unmount();\n}\nfunction s(t, e = {}) {\n return m(t, e, { mount: f, update: i, unmount: a });\n}\nexport {\n s as default\n};\n","'use client'\nimport * as React from 'react'\n\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport const QueryClientContext = React.createContext(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = React.useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: React.ReactNode\n}\n\nexport const QueryClientProvider = ({\n client,\n children,\n}: QueryClientProviderProps): React.JSX.Element => {\n React.useEffect(() => {\n client.mount()\n return () => {\n client.unmount()\n }\n }, [client])\n\n return (\n \n {children}\n \n )\n}\n","import React from \"react\";\r\n\r\nfunction AddSceneIcon() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AddSceneIcon;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","function _checkPrivateRedeclaration(e, t) {\n if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n}\nexport { _checkPrivateRedeclaration as default };","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nfunction _classPrivateMethodInitSpec(e, a) {\n checkPrivateRedeclaration(e, a), a.add(e);\n}\nexport { _classPrivateMethodInitSpec as default };","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nfunction _classPrivateFieldInitSpec(e, t, a) {\n checkPrivateRedeclaration(e, t), t.set(e, a);\n}\nexport { _classPrivateFieldInitSpec as default };","function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}\nexport { _assertClassBrand as default };","import assertClassBrand from \"./assertClassBrand.js\";\nfunction _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}\nexport { _classPrivateFieldGet2 as default };","import assertClassBrand from \"./assertClassBrand.js\";\nfunction _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}\nexport { _classPrivateFieldSet2 as default };","import type {\n DefaultError,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate(\n updater: Updater,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTime,\n query: Query,\n): number | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions(\n queryKey: TQueryKey,\n options?: Pick, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n if (\n ((!array && aItems.includes(key)) || array) &&\n a[key] === undefined &&\n b[key] === undefined\n ) {\n copy[key] = undefined\n equalItems++\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key] && a[key] !== undefined) {\n equalItems++\n }\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create()\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(ms: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd(items: Array, item: T, max = 0): Array {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart(items: Array, item: T, max = 0): Array {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport const ensureQueryFn = <\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions,\n): QueryFunction => {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n","// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\ntype BatchCallsCallback> = (...args: T) => void\n\ntype ScheduleFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: Array = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n let scheduleFn: ScheduleFunction = (cb) => setTimeout(cb, 0)\n\n const setScheduler = (fn: ScheduleFunction) => {\n scheduleFn = fn\n }\n\n const batch = (callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleFn(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = >(\n callback: BatchCallsCallback,\n ): BatchCallsCallback => {\n return (...args) => {\n schedule(() => {\n callback(...args)\n })\n }\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","type Listener = () => void\n\nexport class Subscribable {\n protected listeners: Set\n\n constructor() {\n this.listeners = new Set()\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.add(listener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners.delete(listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.size > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (focused: boolean) => void\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n #focused?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibilitychange\n window.addEventListener('visibilitychange', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n }\n }\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n const changed = this.#focused !== focused\n if (changed) {\n this.#focused = focused\n this.onFocus()\n }\n }\n\n onFocus(): void {\n const isFocused = this.isFocused()\n this.listeners.forEach((listener) => {\n listener(isFocused)\n })\n }\n\n isFocused(): boolean {\n if (typeof this.#focused === 'boolean') {\n return this.#focused\n }\n\n // document global can be unavailable in react native\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return globalThis.document?.visibilityState !== 'hidden'\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { isServer, sleep } from './utils'\nimport type { CancelOptions, DefaultError, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig {\n fn: () => TData | Promise\n initialPromise?: Promise\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue\n retryDelay?: RetryDelayValue\n networkMode: NetworkMode | undefined\n canRun: () => boolean\n}\n\nexport interface Retryer {\n promise: Promise\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => Promise\n cancelRetry: () => void\n continueRetry: () => void\n canStart: () => boolean\n start: () => Promise\n}\n\nexport type RetryValue = boolean | number | ShouldRetryFunction\n\ntype ShouldRetryFunction = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue = number | RetryDelayFunction\n\ntype RetryDelayFunction = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer(\n config: RetryerConfig,\n): Retryer {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n let promiseResolve: (data: TData) => void\n let promiseReject: (error: TError) => void\n\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve\n promiseReject = outerReject\n })\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const canContinue = () =>\n focusManager.isFocused() &&\n (config.networkMode === 'always' || onlineManager.isOnline()) &&\n config.canRun()\n\n const canStart = () => canFetch(config.networkMode) && config.canRun()\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n promiseResolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n promiseReject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // we can re-use config.initialPromise on the first call of run()\n const initialPromise =\n failureCount === 0 ? config.initialPromise : undefined\n\n // Execute query\n try {\n promiseOrValue = initialPromise ?? config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? (isServer ? 0 : 3)\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n return canContinue() ? undefined : pause()\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.()\n return promise\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n // Start loop\n if (canStart()) {\n run()\n } else {\n pause().then(run)\n }\n return promise\n },\n }\n}\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n gcTime!: number\n #gcTimeout?: ReturnType\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.gcTime)\n }\n }\n\n protected updateGcTime(newGcTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no gcTime is set\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout)\n this.#gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","import { ensureQueryFn, noop, replaceData, timeUntilStale } from './utils'\nimport { notifyManager } from './notifyManager'\nimport { canFetch, createRetryer, isCancelledError } from './retryer'\nimport { Removable } from './removable'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunction,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n options?: QueryOptions\n defaultOptions?: QueryOptions\n state?: QueryState\n}\n\nexport interface QueryState {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise\n fetchOptions?: FetchOptions\n signal: AbortSignal\n options: QueryOptions\n queryKey: TQueryKey\n state: QueryState\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext,\n query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\n}\n\ninterface SuccessAction {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction {\n type: 'setState'\n state: Partial>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction\n | SuccessAction\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions\n state: QueryState\n isFetchingOptimistic?: boolean\n\n #initialState: QueryState\n #revertState?: QueryState\n #cache: QueryCache\n #retryer?: Retryer\n observers: Array>\n #defaultOptions?: QueryOptions\n #abortSignalConsumed: boolean\n\n constructor(config: QueryConfig) {\n super()\n\n this.#abortSignalConsumed = false\n this.#defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.#cache = config.cache\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = config.state || getDefaultState(this.options)\n this.state = this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get promise(): Promise | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.#cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.#dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.#dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise {\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.#initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n if (this.state.isInvalidated) {\n return true\n }\n\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n this.state.data === undefined ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n addObserver(observer: QueryObserver): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.#cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true })\n } else {\n this.#retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.#cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions,\n fetchOptions?: FetchOptions,\n ): Promise {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.#retryer.continueRetry()\n // Return current promise if we are already fetching\n return this.#retryer.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = new AbortController()\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: this.queryKey,\n meta: this.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn as QueryFunction,\n queryFnContext as QueryFunctionContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext as QueryFunctionContext)\n }\n\n // Trigger behavior hook\n const context: OmitKeyof<\n FetchContext,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext,\n this as unknown as Query,\n )\n\n // Store state in case the current fetch needs to be reverted\n this.#revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.#dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.#cache.config.onError?.(\n error as any,\n this as Query,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query,\n )\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise\n | undefined,\n fn: context.fetchFn as () => Promise,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true,\n })\n\n return this.#retryer.start()\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: QueryState,\n ): QueryState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: 'idle' }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error as TError,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions,\n): QueryState {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction)()\n : options.initialData\n\n const hasData = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n","import {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { fetchState } from './query'\nimport type { FetchOptions, Query, QueryState } from './query'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n DefaultedQueryObserverOptions,\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\n\ntype QueryObserverListener = (\n result: QueryObserverResult,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable> {\n #client: QueryClient\n #currentQuery: Query = undefined!\n #currentQueryInitialState: QueryState = undefined!\n #currentResult: QueryObserverResult = undefined!\n #currentResultState?: QueryState\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query\n #staleTimeoutId?: ReturnType\n #refetchIntervalId?: ReturnType\n #currentRefetchInterval?: number | false\n #trackedProps = new Set()\n\n constructor(\n client: QueryClient,\n public options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n } else {\n this.updateResult()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (\n this.options.enabled !== undefined &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n this.#updateQuery()\n this.#currentQuery.setOptions(this.options)\n\n if (\n prevOptions._defaulted &&\n !shallowEqualObjects(this.options, prevOptions)\n ) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n resolveStaleTime(this.options.staleTime, this.#currentQuery) !==\n resolveStaleTime(prevOptions.staleTime, this.#currentQuery))\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n const result = this.createResult(query, options)\n\n if (shouldAssignObserverCurrentProperties(this, result)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult every time\n // an observer reads an optimistic value.\n\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.#currentResult = result\n this.#currentResultOptions = this.options\n this.#currentResultState = this.#currentQuery.state\n }\n return result\n }\n\n getCurrentResult(): QueryObserverResult {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult,\n onPropTracked?: (key: keyof QueryObserverResult) => void,\n ): QueryObserverResult {\n const trackedResult = {} as QueryObserverResult\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key as keyof QueryObserverResult)\n onPropTracked?.(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n trackProp(key: keyof QueryObserverResult) {\n this.#trackedProps.add(key)\n }\n\n getCurrentQuery(): Query {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: Omit,\n ): Promise {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise = this.#currentQuery.fetch(\n this.options as QueryOptions,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery,\n )\n\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return\n }\n\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime)\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.#currentQuery)\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let newState = { ...state }\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options),\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n newState.fetchStatus = 'idle'\n }\n }\n\n let { error, errorUpdatedAt, status } = newState\n\n // Select data if needed\n if (options.select && newState.data !== undefined) {\n // Memoize select result\n if (\n prevResult &&\n newState.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(newState.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = newState.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n options.placeholderData !== undefined &&\n data === undefined &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && placeholderData !== undefined) {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (placeholderData !== undefined) {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = newState.fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n const hasData = data !== undefined\n\n const result: QueryObserverBaseResult = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount:\n newState.dataUpdateCount > queryInitialState.dataUpdateCount ||\n newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n const notifyOnChangePropsValue =\n typeof notifyOnChangeProps === 'function'\n ? notifyOnChangeProps()\n : notifyOnChangeProps\n\n if (\n notifyOnChangePropsValue === 'all' ||\n (!notifyOnChangePropsValue && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps,\n )\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n options.enabled !== false &&\n query.state.data === undefined &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.data !== undefined &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query,\n options: QueryObserverOptions,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query,\n prevQuery: Query,\n options: QueryObserverOptions,\n prevOptions: QueryObserverOptions,\n): boolean {\n return (\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query,\n options: QueryObserverOptions,\n): boolean {\n return (\n options.enabled !== false &&\n query.isStaleByTime(resolveStaleTime(options.staleTime, query))\n )\n}\n\n// this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\nfunction shouldAssignObserverCurrentProperties<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n observer: QueryObserver,\n optimisticResult: QueryObserverResult,\n) {\n // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true\n }\n\n // basically, just keep previous properties if nothing changed\n return false\n}\n","'use client'\nimport * as React from 'react'\n\n// CONTEXT\n\nexport interface QueryErrorResetBoundaryValue {\n clearReset: () => void\n isReset: () => boolean\n reset: () => void\n}\n\nfunction createValue(): QueryErrorResetBoundaryValue {\n let isReset = false\n return {\n clearReset: () => {\n isReset = false\n },\n reset: () => {\n isReset = true\n },\n isReset: () => {\n return isReset\n },\n }\n}\n\nconst QueryErrorResetBoundaryContext = React.createContext(createValue())\n\n// HOOK\n\nexport const useQueryErrorResetBoundary = () =>\n React.useContext(QueryErrorResetBoundaryContext)\n\n// COMPONENT\n\nexport interface QueryErrorResetBoundaryProps {\n children:\n | ((value: QueryErrorResetBoundaryValue) => React.ReactNode)\n | React.ReactNode\n}\n\nexport const QueryErrorResetBoundary = ({\n children,\n}: QueryErrorResetBoundaryProps) => {\n const [value] = React.useState(() => createValue())\n return (\n \n {typeof children === 'function'\n ? (children as Function)(value)\n : children}\n \n )\n}\n","'use client'\nimport * as React from 'react'\n\nconst IsRestoringContext = React.createContext(false)\n\nexport const useIsRestoring = () => React.useContext(IsRestoringContext)\nexport const IsRestoringProvider = IsRestoringContext.Provider\n","export function shouldThrowError) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n\nexport function noop() {}\n","'use client'\nimport * as React from 'react'\nimport { shouldThrowError } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const ensurePreventErrorBoundaryRetry = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n if (options.suspense || options.throwOnError) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false\n }\n }\n}\n\nexport const useClearResetErrorBoundary = (\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset()\n }, [errorResetBoundary])\n}\n\nexport const getHasError = <\n TData,\n TError,\n TQueryFnData,\n TQueryData,\n TQueryKey extends QueryKey,\n>({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n}: {\n result: QueryObserverResult\n errorResetBoundary: QueryErrorResetBoundaryValue\n throwOnError: ThrowOnError\n query: Query | undefined\n}) => {\n return (\n result.isError &&\n !errorResetBoundary.isReset() &&\n !result.isFetching &&\n query &&\n shouldThrowError(throwOnError, [result.error, query])\n )\n}\n","import type { DefaultError } from '@tanstack/query-core'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const defaultThrowOnError = <\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n _error: TError,\n query: Query,\n) => query.state.data === undefined\n\nexport const ensureStaleTime = (\n defaultedOptions: DefaultedQueryObserverOptions,\n) => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000\n }\n }\n}\n\nexport const willFetch = (\n result: QueryObserverResult,\n isRestoring: boolean,\n) => result.isLoading && result.isFetching && !isRestoring\n\nexport const shouldSuspend = (\n defaultedOptions:\n | DefaultedQueryObserverOptions\n | undefined,\n result: QueryObserverResult,\n) => defaultedOptions?.suspense && result.isPending\n\nexport const fetchOptimistic = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n defaultedOptions: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n observer: QueryObserver,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) =>\n observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset()\n })\n","'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport type {\n DefinedInitialDataOptions,\n UndefinedInitialDataOptions,\n} from './queryOptions'\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions,\n queryClient?: QueryClient,\n): DefinedUseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions,\n queryClient?: QueryClient,\n): UseQueryResult\n\nexport function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n","'use client'\nimport * as React from 'react'\n\nimport { notifyManager } from '@tanstack/query-core'\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'\nimport { useQueryClient } from './QueryClientProvider'\nimport { useIsRestoring } from './isRestoring'\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary,\n} from './errorBoundaryUtils'\nimport { ensureStaleTime, fetchOptimistic, shouldSuspend } from './suspense'\nimport type { UseBaseQueryOptions } from './types'\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: UseBaseQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n Observer: typeof QueryObserver,\n queryClient?: QueryClient,\n): QueryObserverResult {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object',\n )\n }\n }\n\n const client = useQueryClient(queryClient)\n const isRestoring = useIsRestoring()\n const errorResetBoundary = useQueryErrorResetBoundary()\n const defaultedOptions = client.defaultQueryOptions(options)\n\n // Make sure results are optimistically set in fetching state before subscribing or updating options\n defaultedOptions._optimisticResults = isRestoring\n ? 'isRestoring'\n : 'optimistic'\n\n ensureStaleTime(defaultedOptions)\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)\n\n useClearResetErrorBoundary(errorResetBoundary)\n\n const [observer] = React.useState(\n () =>\n new Observer(\n client,\n defaultedOptions,\n ),\n )\n\n const result = observer.getOptimisticResult(defaultedOptions)\n\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring\n ? () => undefined\n : observer.subscribe(notifyManager.batchCalls(onStoreChange))\n\n // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n observer.updateResult()\n\n return unsubscribe\n },\n [observer, isRestoring],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, { listeners: false })\n }, [defaultedOptions, observer])\n\n // Handle suspense\n if (shouldSuspend(defaultedOptions, result)) {\n // Do the same thing as the effect right above because the effect won't run\n // when we suspend but also, the component won't re-mount so our observer would\n // be out of date.\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n }\n\n // Handle error boundary\n if (\n getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client\n .getQueryCache()\n .get<\n TQueryFnData,\n TError,\n TQueryData,\n TQueryKey\n >(defaultedOptions.queryHash),\n })\n ) {\n throw result.error\n }\n\n // Handle result property usage tracking\n return !defaultedOptions.notifyOnChangeProps\n ? observer.trackResult(result)\n : result\n}\n","import { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport type {\n DefaultError,\n MutationMeta,\n MutationOptions,\n MutationStatus,\n} from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions\n state?: MutationState\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n submittedAt: number\n}\n\ninterface FailedAction {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface PendingAction {\n type: 'pending'\n isPaused: boolean\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\nexport type Action =\n | ContinueAction\n | ErrorAction\n | FailedAction\n | PendingAction\n | PauseAction\n | SuccessAction\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> extends Removable {\n state: MutationState\n options!: MutationOptions\n readonly mutationId: number\n\n #observers: Array>\n #mutationCache: MutationCache\n #retryer?: Retryer\n\n constructor(config: MutationConfig) {\n super()\n\n this.mutationId = config.mutationId\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options: MutationOptions,\n ): void {\n this.options = options\n\n this.updateGcTime(this.options.gcTime)\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n addObserver(observer: MutationObserver): void {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.#mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver): void {\n this.#observers = this.#observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.#mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === 'pending') {\n this.scheduleGc()\n } else {\n this.#mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise {\n return (\n this.#retryer?.continue() ??\n // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables!)\n )\n }\n\n async execute(variables: TVariables): Promise {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error('No mutationFn found'))\n }\n return this.options.mutationFn(variables)\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this),\n })\n\n const restored = this.state.status === 'pending'\n const isPaused = !this.#retryer.canStart()\n\n try {\n if (!restored) {\n this.#dispatch({ type: 'pending', variables, isPaused })\n // Notify cache callback\n await this.#mutationCache.config.onMutate?.(\n variables,\n this as Mutation,\n )\n const context = await this.options.onMutate?.(variables)\n if (context !== this.state.context) {\n this.#dispatch({\n type: 'pending',\n context,\n variables,\n isPaused,\n })\n }\n }\n const data = await this.#retryer.start()\n\n // Notify cache callback\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSuccess?.(data, variables, this.state.context!)\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(data, null, variables, this.state.context)\n\n this.#dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.#mutationCache.config.onError?.(\n error as any,\n variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onError?.(\n error as TError,\n variables,\n this.state.context,\n )\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n variables,\n this.state.context,\n )\n throw error\n } finally {\n this.#dispatch({ type: 'error', error: error as TError })\n }\n } finally {\n this.#mutationCache.runNext(this)\n }\n }\n\n #dispatch(action: Action): void {\n const reducer = (\n state: MutationState,\n ): MutationState => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'pending':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: 'pending',\n variables: action.variables,\n submittedAt: Date.now(),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.#mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n submittedAt: 0,\n }\n}\n","import { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport { hashKey, shallowEqualObjects } from './utils'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n MutateOptions,\n MutationObserverOptions,\n MutationObserverResult,\n} from './types'\nimport type { Action, Mutation } from './mutation'\n\n// TYPES\n\ntype MutationObserverListener = (\n result: MutationObserverResult,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener\n> {\n options!: MutationObserverOptions\n\n #client: QueryClient\n #currentResult: MutationObserverResult =\n undefined!\n #currentMutation?: Mutation\n #mutateOptions?: MutateOptions\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options: MutationObserverOptions,\n ) {\n const prevOptions = this.options as\n | MutationObserverOptions\n | undefined\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n\n if (\n prevOptions?.mutationKey &&\n this.options.mutationKey &&\n hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)\n ) {\n this.reset()\n } else if (this.#currentMutation?.state.status === 'pending') {\n this.#currentMutation.setOptions(this.options)\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n // reset needs to remove the observer from the mutation because there is no way to \"get it back\"\n // another mutate call will yield a new mutation!\n this.#currentMutation?.removeObserver(this)\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions,\n ): Promise {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, this.options)\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult\n }\n\n #notify(action?: Action): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables!\n const context = this.#currentResult.context\n\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(action.data, variables, context!)\n this.#mutateOptions.onSettled?.(action.data, null, variables, context)\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(action.error, variables, context)\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n variables,\n context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n","'use client'\nimport * as React from 'react'\nimport { MutationObserver, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { noop, shouldThrowError } from './utils'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions,\n queryClient?: QueryClient,\n): UseMutationResult {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","import { create } from \"zustand\";\r\nimport { Scene, TourData } from \"../Types\";\r\nimport { AxiosProgressEvent } from \"axios\";\r\n\r\ntype dataRootStoreType = {\r\n root: string;\r\n};\r\n\r\nexport const useDataRootStore = create()((set) => ({\r\n root: \"https://editor.deepreality.cloud\",\r\n}));\r\n\r\nexport const useJWTStore = create<{ jwt?: string }>()(() => ({}));\r\n\r\ntype tourIDStore = {\r\n tourID?: number;\r\n setTourID: (number: number) => void;\r\n};\r\n\r\nexport const useTourIDStore = create()((set) => ({\r\n tourID: undefined,\r\n setTourID: (number: number) => set({ tourID: number }),\r\n}));\r\n\r\ntype currentSceneIDStoreType = {\r\n currentSceneID: number;\r\n currentScene?: Scene;\r\n setCurrentSceneID: (number: number) => void;\r\n setSceneIDOnLoad: (number?: number) => void;\r\n setCurrentScene: (sc: Scene) => void;\r\n};\r\nexport const useCurrentSceneStore = create()(\r\n (set, get) => ({\r\n currentSceneID: -1,\r\n currentScene: undefined,\r\n setCurrentSceneID: (number: number) => {\r\n console.debug(\"moving to scene \" + number);\r\n set({\r\n currentSceneID: number,\r\n });\r\n },\r\n setCurrentScene: (sc: Scene) => set({ currentScene: sc }),\r\n setSceneIDOnLoad: (number?: number) => {\r\n if (number && get().currentSceneID === -1) {\r\n console.debug(\"moving to initial scene\");\r\n set({ currentSceneID: number });\r\n } else return;\r\n },\r\n })\r\n);\r\n\r\ntype parameterStore = {\r\n tourID: number;\r\n userID: number;\r\n isEditor: boolean;\r\n jwt: string;\r\n lang: \"it\" | \"en\";\r\n setTourID: (tourID: number) => void;\r\n setUserID: (userID: number) => void;\r\n setJwt: (jwt: string) => void;\r\n setIsEditor: (bool: boolean) => void;\r\n setLang: (lang: \"it\" | \"en\") => void;\r\n};\r\n\r\nexport const useParametersStore = create()((set) => ({\r\n tourID: 0,\r\n userID: 0,\r\n isEditor: false,\r\n jwt: \"\",\r\n lang: \"it\",\r\n setTourID: (tourID: number) => set({ tourID: tourID }),\r\n setUserID: (userID: number) => set({ userID: userID }),\r\n setJwt: (jwt: string) => set({ jwt: jwt }),\r\n setIsEditor: (bool: boolean) => set({ isEditor: bool }),\r\n setLang: (lang: \"it\" | \"en\") => set({ lang: lang }),\r\n}));\r\n\r\ntype tourDataStore = {\r\n tourData: TourData | undefined;\r\n setTourData: (data: TourData) => void;\r\n};\r\n\r\nexport const useTourDataStore = create()((set) => ({\r\n tourData: undefined,\r\n setTourData: (data: TourData) => set({ tourData: data }),\r\n}));\r\n\r\ntype editorHotspotType = {\r\n hotspot: boolean;\r\n hotspotData?: string;\r\n openHotspot: (bool: boolean) => void;\r\n setHotspotData: (str?: string) => void;\r\n};\r\n\r\nexport const editorHotspotStore = create()((set) => ({\r\n hotspot: false,\r\n hotspotData: undefined,\r\n openHotspot: (bool: boolean) => set({ hotspot: bool }),\r\n setHotspotData: (str?: string) => set({ hotspotData: str }),\r\n}));\r\n\r\ntype editorExperienceType = {\r\n // DRAG\r\n dragging: boolean;\r\n setDragging: (bool?: boolean) => void;\r\n stopDragging: () => void;\r\n\r\n //TRANSITION\r\n transition: boolean;\r\n setTransition: (bool: boolean) => void;\r\n stopTransition: () => void;\r\n};\r\n\r\nexport const editorExperienceStore = create()(\r\n (set, get) => ({\r\n dragging: false,\r\n setDragging: (bool?: boolean) => set({ dragging: bool || true }),\r\n stopDragging: () => set({ dragging: false }),\r\n\r\n transition: false,\r\n\r\n setTransition: (bool: boolean) => {\r\n if (bool === get().transition) return;\r\n else set({ transition: bool });\r\n },\r\n\r\n stopTransition: () => set({ transition: false }),\r\n })\r\n);\r\n\r\ntype sceneStoreType = {\r\n scene?: Scene;\r\n setScene: (sc?: Scene) => void;\r\n};\r\n\r\nexport const useSceneStore = create()((set) => ({\r\n scene: undefined,\r\n setScene: (sc?: Scene) => set({ scene: sc }),\r\n}));\r\n\r\ntype viewerStore = {\r\n viewer: boolean;\r\n setViewer: (bool: boolean) => void;\r\n};\r\n\r\nexport const useViewerStore = create()((set) => ({\r\n viewer: false,\r\n setViewer: (bool: boolean) => set({ viewer: bool }),\r\n}));\r\n\r\ntype widePopupStoreType = {\r\n isOpen: boolean;\r\n isTakingScreenshot: boolean;\r\n target?: string;\r\n setIsOpen: (bool: boolean, target?: string) => void;\r\n setTakingScreen: (bool: boolean) => void;\r\n title?: string;\r\n setTitle: (str: string) => void;\r\n\r\n visionIsloading: boolean;\r\n setVisionIsLoading: (bool: boolean) => void;\r\n};\r\n\r\nexport const useWidePopupStore = create()((set) => ({\r\n isOpen: false,\r\n isTakingScreenshot: false,\r\n\r\n setTakingScreen: (bool: boolean) =>\r\n set({ isOpen: !bool, isTakingScreenshot: bool }),\r\n setIsOpen: (bool: boolean, target?: string) =>\r\n set({ isOpen: bool, target: target }),\r\n title: undefined,\r\n setTitle: (str: string) => set({ title: str }),\r\n visionIsloading: false,\r\n setVisionIsLoading: (bool: boolean) => set({ visionIsloading: bool }),\r\n}));\r\n\r\ntype screenshotRectangleStoreType = {\r\n position: {\r\n x: number;\r\n y: number;\r\n h: number;\r\n w: number;\r\n bottomSpace: boolean;\r\n };\r\n\r\n image?: string;\r\n setImage: (img: string) => void;\r\n resetImage: () => void;\r\n\r\n setPosition: (pos: {\r\n x: number;\r\n y: number;\r\n h: number;\r\n w: number;\r\n bottomSpace: boolean;\r\n }) => void;\r\n};\r\n\r\nexport const useScreenshotRectangleStore =\r\n create()((set) => ({\r\n position: { x: 0, y: 0, h: 256, w: 256, bottomSpace: true },\r\n\r\n setImage: (img: string) => set({ image: img }),\r\n resetImage: () => set({ image: undefined }),\r\n setPosition: (pos: {\r\n x: number;\r\n y: number;\r\n h: number;\r\n w: number;\r\n bottomSpace: boolean;\r\n }) => set({ position: pos }),\r\n }));\r\n\r\ntype progressBarStoreType = {\r\n upProgress: number;\r\n dlProgress: number;\r\n setUpProgress: (prog: AxiosProgressEvent) => void;\r\n setUpComplete: () => void;\r\n};\r\n\r\nexport const useProgressBarStore = create()((set) => ({\r\n upProgress: 0,\r\n dlProgress: 0,\r\n setUpProgress: (prog: AxiosProgressEvent) => {\r\n if (prog.total) {\r\n let percentage = prog.loaded / prog.total;\r\n set({ upProgress: percentage * 100 });\r\n }\r\n },\r\n setUpComplete: () => set({ upProgress: 0 }),\r\n}));\r\ninterface languageFile {\r\n [key: string]: string;\r\n}\r\ntype languageStore = {\r\n languageFile: languageFile | undefined;\r\n setLanguage: (t: languageFile) => void;\r\n};\r\n\r\nexport const useLocalizationStore = create()((set) => ({\r\n languageFile: undefined,\r\n setLanguage: (t: languageFile) => set({ languageFile: t }),\r\n}));\r\n\r\ntype editingElementStoreType = {\r\n type:\r\n | \"scene\"\r\n | \"link\"\r\n | \"transition\"\r\n | \"popup\"\r\n | \"groups\"\r\n | \"quiz\"\r\n | \"audio\"\r\n | \"tour\"\r\n | \"escapeRoomPops\";\r\n id: string | number;\r\n goBackTo?: string | number;\r\n setEditingElem: (\r\n type:\r\n | \"scene\"\r\n | \"link\"\r\n | \"transition\"\r\n | \"popup\"\r\n | \"groups\"\r\n | \"quiz\"\r\n | \"audio\"\r\n | \"tour\"\r\n | \"escapeRoomPops\",\r\n id: string | number,\r\n goBackTo?: string | number\r\n ) => void;\r\n};\r\n\r\nexport const useEditingElementStore = create()(\r\n (set) => ({\r\n type: \"tour\",\r\n id: 0,\r\n setEditingElem: (type, id, goBackTo) =>\r\n set({ type: type, id: id, goBackTo: goBackTo || undefined }),\r\n })\r\n);\r\n\r\ntype assetListStoreType = {\r\n isOpen: boolean;\r\n isLoading?: boolean;\r\n type?: 1 | 2 | 3;\r\n forMap?: boolean;\r\n mapID?: number;\r\n\r\n setOpen: (type: 1 | 2 | 3) => void;\r\n setClosed: () => void;\r\n setOpenForMap: (id: number) => void;\r\n setLoading: (bool: boolean) => void;\r\n};\r\n\r\nexport const useAssetListStore = create()((set) => ({\r\n isOpen: false,\r\n setOpen: (type: 1 | 2 | 3) => set({ isOpen: true, type: type }),\r\n setOpenForMap: (id: number) =>\r\n set({ isOpen: true, type: 2, forMap: true, mapID: id }),\r\n setClosed: () =>\r\n set({\r\n isOpen: false,\r\n isLoading: undefined,\r\n type: 1,\r\n forMap: undefined,\r\n mapID: undefined,\r\n }),\r\n setLoading: (bool: boolean) => set({ isLoading: bool }),\r\n}));\r\n\r\ntype mapEditorStoreType = {\r\n isOpen: boolean;\r\n currentMap?: number;\r\n onPage?: 1 | 2;\r\n fromScene?: boolean;\r\n\r\n setOpen: (id?: number, bool?: boolean) => void;\r\n\r\n setClosed: () => void;\r\n};\r\n\r\nexport const useMapEditorStore = create()((set) => ({\r\n isOpen: false,\r\n setClosed: () =>\r\n set({\r\n isOpen: false,\r\n currentMap: 0,\r\n fromScene: false,\r\n onPage: 1,\r\n }),\r\n\r\n setOpen: (id?: number, bool?: boolean) => {\r\n set({ isOpen: true, currentMap: id });\r\n if (bool) set({ fromScene: bool, onPage: 2 });\r\n },\r\n}));\r\n\r\n// setMapList({\r\n// isOpen: true,\r\n// currentMap: currentScene?.map,\r\n// onPage: 2,\r\n// fromScene: true,\r\n// })\r\n","import axios from \"axios\";\r\nimport { TourData } from \"../../Types\";\r\nimport { useJWTStore } from \"../Zustand\";\r\n\r\nconst BASE_URL = \"https://api.deepreality.cloud/api/\";\r\n\r\nexport const axiosInstance = axios.create({ baseURL: BASE_URL });\r\n\r\nexport const previousTourData: TourData[] = [];\r\n\r\n//WIP\r\n//WIP\r\n//WIP\r\nexport let token: string | null = null;\r\n\r\nasync function requireToken() {\r\n const resp = await axios.post(\r\n process.env.REACT_APP_TOKEN_ENDPOINT!,\r\n\r\n {\r\n grant_type: \"client_credentials\",\r\n },\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n\r\n auth: {\r\n username: process.env.REACT_APP_CLIENT_ID!,\r\n password: process.env.REACT_APP_CLIENT_SECRET!,\r\n },\r\n }\r\n );\r\n\r\n return resp.data;\r\n}\r\n\r\naxiosInstance.interceptors.request.use(\r\n async (config) => {\r\n if (!token) {\r\n const fetchedToken = await requireToken();\r\n\r\n token = fetchedToken.access_token;\r\n }\r\n\r\n const jwtToken = useJWTStore.getState().jwt\r\n\r\n\r\n if (jwtToken) {\r\n config.headers.set(\"DeepRealityJwt\", jwtToken);\r\n }\r\n\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n },\r\n async (err) => {\r\n throw err;\r\n }\r\n);\r\n\r\naxiosInstance.interceptors.response.use(\r\n (data) => {\r\n return data;\r\n },\r\n async (error) => {\r\n const originalRequest = error.config;\r\n if (\r\n (!error.response ||\r\n error.response.status === 403 ||\r\n error.response.status === 401) &&\r\n token &&\r\n !originalRequest._retry\r\n ) {\r\n originalRequest._retry = true;\r\n\r\n const fetchedToken = await requireToken();\r\n\r\n token = fetchedToken.access_token;\r\n\r\n error.config.headers.Authorization = `Bearer ${token}`;\r\n\r\n return axiosInstance(originalRequest);\r\n }\r\n throw error;\r\n }\r\n);\r\n","import axios, { AxiosError } from \"axios\";\r\nimport {\r\n UseMutationResult,\r\n useMutation,\r\n useQuery,\r\n useQueryClient,\r\n} from \"@tanstack/react-query\";\r\nimport { Asset, TourData, Scene, Group, Hotspot, Popup } from \"../../Types\";\r\nimport {\r\n useCurrentSceneStore,\r\n useDataRootStore,\r\n useLocalizationStore,\r\n useParametersStore,\r\n} from \"../Zustand\";\r\nimport { axiosInstance, token } from \"./Axios\";\r\n\r\n//LOAD TOUR DATA\r\n\r\nconst baseTourData: TourData = {\r\n title: \"Nuovo tour\",\r\n fov: 75,\r\n scenes: [],\r\n maps: [],\r\n groups: [\r\n {\r\n id: Math.floor(100000 + Math.random() * 900000),\r\n name: \"Primo gruppo\",\r\n scenes: [],\r\n mainColor: \"#bada55\",\r\n textColor: \"#222\",\r\n },\r\n ],\r\n popups: [],\r\n isNew: true,\r\n startingScene: undefined,\r\n assignedQuizID: undefined,\r\n quizData: undefined,\r\n};\r\n\r\nexport const UseGetTour = (tourId: number) => {\r\n return useQuery({\r\n queryKey: [\"GetTour\", tourId],\r\n queryFn: () => GetTour(tourId),\r\n\r\n retry: 1,\r\n });\r\n};\r\n\r\nconst GetTour = async (id: number): Promise => {\r\n const axiosResp = await axiosInstance\r\n .get(\"Tour/tour/getTour\", {\r\n params: {\r\n idTour: id,\r\n },\r\n })\r\n .then((resp) => {\r\n return resp.data;\r\n })\r\n .catch((e) => {\r\n return e;\r\n });\r\n\r\n if (axiosResp.data.jsonData === \"\" || axiosResp.data.jsonData === null) {\r\n return {\r\n ...baseTourData,\r\n title: axiosResp.data.title || \"Nuovo tour\",\r\n isNew: undefined,\r\n };\r\n } else {\r\n const json = JSON.parse(axiosResp.data.jsonData);\r\n\r\n const generatedBackup = {\r\n maps: json.maps,\r\n popups: json.popups,\r\n };\r\n\r\n const parsedTourData: TourData = {\r\n ...json,\r\n zoom: parseInt(json.zoom),\r\n title: axiosResp.data.title || \"Nuovo tour\",\r\n scenes: json?.scenes?.map((sc: Scene) => {\r\n // let { imageData, imageFull, imageLow, imageThumb, image, ...rest } = sc;\r\n\r\n return {\r\n ...sc,\r\n fov: parseInt(sc.fov as unknown as string),\r\n hotspots: sc.hotspots.map((hs: Hotspot) => {\r\n let { EDIT_POS, isNew, ...rest } = hs;\r\n return rest;\r\n }),\r\n };\r\n }),\r\n\r\n groups: json?.groups?.map((group: Group) => {\r\n return {\r\n ...group,\r\n scenes: json.scenes\r\n .filter((sc: Scene) => sc.group === group.id)\r\n .map((sc: Scene) => sc.id),\r\n };\r\n }),\r\n backup: json.backup || generatedBackup,\r\n };\r\n\r\n // previousTourData.push(parsedTourData);\r\n\r\n const { setSceneIDOnLoad } = useCurrentSceneStore.getState();\r\n\r\n setSceneIDOnLoad(parsedTourData.startingScene);\r\n\r\n // setSceneIDOnLoad(parsedTourData.initialScene)\r\n return parsedTourData;\r\n // return tempTourData;\r\n }\r\n};\r\n\r\n//SAVE TOUR DATA\r\n\r\nexport const UseSaveTour = () => {\r\n const tourId = useParametersStore.getState().tourID;\r\n\r\n const userId = useParametersStore.getState().userID;\r\n\r\n return useMutation({\r\n mutationFn: (newTourData: TourData) =>\r\n SaveTour(newTourData, tourId, userId),\r\n });\r\n};\r\n\r\nconst SaveTour = async (newTourData: TourData, id: number, userId: number) => {\r\n const usedPanos = newTourData.scenes\r\n .map((sc) => sc.imageID)\r\n .filter((images) => images !== undefined);\r\n // DELETE UNUSED HOTSPOTS\r\n\r\n const mergedSceneHotspots = newTourData.scenes\r\n .map((sc: Scene) => sc.hotspots.map((hs) => hs))\r\n .flat();\r\n\r\n const escapeRoomPopups = [\r\n newTourData.escapeRoomData?.endPopupID,\r\n newTourData.escapeRoomData?.startPopupID,\r\n ];\r\n\r\n const escapeRoomQuestionPopups: (number | undefined)[] = [\r\n ...(newTourData.escapeRoomData?.escapeRoomQuestions?.map((q) => {\r\n return q.correctAnsPopID;\r\n }) ?? []),\r\n ...(newTourData.escapeRoomData?.escapeRoomQuestions?.map((q) => {\r\n return q.wrongAnsPopID;\r\n }) ?? []),\r\n ];\r\n\r\n const mergedScenePopups = mergedSceneHotspots.filter(\r\n (hs) => hs.type === \"popup\"\r\n );\r\n\r\n const allExistingPopupsIDS = [\r\n ...mergedScenePopups.map((pop) => {\r\n return pop.id;\r\n }),\r\n ...(escapeRoomPopups ?? []),\r\n ...(escapeRoomQuestionPopups ?? []),\r\n ];\r\n\r\n const newPopups = newTourData.popups.filter((pops) =>\r\n allExistingPopupsIDS.find((one) => one === pops.id)\r\n );\r\n\r\n const usedQuestions = mergedSceneHotspots\r\n .filter((hs) => hs.type === \"quiz\")\r\n .map((hs) => {\r\n return hs.target;\r\n });\r\n const uniqueUsedQuestions = [...new Set(usedQuestions)].filter(\r\n (elem) => elem !== undefined\r\n );\r\n\r\n const usedImagesInPops = [...new Set(newPopups.map((pop) => pop.imageID))];\r\n\r\n const usedImagesInMaps = newTourData.maps\r\n ?.map((map) => map.assetId)\r\n .filter((images) => images !== undefined);\r\n const usedAudiosHotspots = mergedSceneHotspots\r\n .filter((hs) => hs.type === \"audio\")\r\n .map((audio) => audio.target)\r\n .filter((audios) => audios !== undefined);\r\n\r\n const usedAudios = newTourData.scenes\r\n .map((sc) => sc.audio)\r\n .filter((audio) => audio !== undefined);\r\n\r\n const usedAssets = [\r\n // @ts-expect-error\r\n ...usedImagesInMaps,\r\n ...usedImagesInPops,\r\n ...usedAudiosHotspots,\r\n ...usedAudios,\r\n ].filter((elem) => elem !== undefined);\r\n\r\n const quizIds = [newTourData.assignedQuizID].filter(\r\n (val) => val !== undefined\r\n );\r\n\r\n const fixedPopups = newTourData.popups.filter((pop) =>\r\n allExistingPopupsIDS.find((one) => one === pop.id)\r\n );\r\n\r\n const fixedMaps = newTourData.maps?.map((map) => {\r\n return {\r\n ...map,\r\n points: map.points?.filter((points) =>\r\n newTourData.scenes.find((scene) => scene.id === points.target)\r\n ),\r\n };\r\n });\r\n\r\n const fixedTourData = {\r\n ...newTourData,\r\n popups: fixedPopups,\r\n maps: fixedMaps,\r\n usePanos: undefined,\r\n usedPanos: usedPanos,\r\n usedAssets: usedAssets,\r\n };\r\n\r\n const axiosResp = await axiosInstance.post(\"Tour/tour/postSaveTour\", {\r\n idTour: id,\r\n jsonData: [\r\n JSON.stringify(fixedTourData),\r\n JSON.stringify(usedPanos),\r\n JSON.stringify(usedAssets),\r\n JSON.stringify(quizIds),\r\n JSON.stringify(uniqueUsedQuestions),\r\n ],\r\n userId: userId,\r\n });\r\n\r\n return axiosResp;\r\n};\r\n\r\n//IMAGE DOWNLOAD\r\n\r\nexport const UseDownloadAsset = (\r\n assetKey: string | undefined,\r\n setPercentage?: (number?: number) => void\r\n) => {\r\n return useQuery({\r\n queryKey: [\"DownloadAsset\", assetKey],\r\n queryFn: () => downloadAsset(assetKey, setPercentage),\r\n\r\n refetchOnMount: false,\r\n refetchOnWindowFocus: false,\r\n retry: 1,\r\n\r\n enabled: !!assetKey,\r\n staleTime: Infinity,\r\n\r\n // cacheTime: Infinity,\r\n });\r\n};\r\n\r\nconst downloadAsset = async (\r\n assetKey: string | undefined,\r\n setPercentage?: (number?: number) => void\r\n) => {\r\n const axiosResp = await axiosInstance\r\n .get(\"Tour/assets/downloadAsset\", {\r\n responseType: \"blob\",\r\n params: {\r\n AssetKey: assetKey,\r\n },\r\n onDownloadProgress: (dl) => {\r\n if (setPercentage) setPercentage(dl.progress);\r\n },\r\n })\r\n .then((res) => {\r\n if (setPercentage) {\r\n setPercentage(undefined);\r\n }\r\n let blob = new Blob([res.data], {\r\n type: res.headers[\"content-type\"],\r\n });\r\n\r\n // @ts-expect-error\r\n URL.revokeObjectURL(blob);\r\n\r\n let objBlob = URL.createObjectURL(blob);\r\n return objBlob;\r\n });\r\n return axiosResp;\r\n};\r\n\r\n//PANO UPLOAD\r\nexport const UseSetAsset: (\r\n assetType: number,\r\n setProgress?: React.Dispatch>\r\n) => UseMutationResult<\r\n any,\r\n AxiosError,\r\n {\r\n file: File;\r\n assetFileType: string;\r\n assetId: number | undefined;\r\n },\r\n unknown\r\n> = (\r\n assetType: number,\r\n setProgress?: React.Dispatch>\r\n) => {\r\n return useMutation({\r\n mutationFn: (props: {\r\n file: File;\r\n assetFileType: string;\r\n assetId: number | undefined;\r\n }) =>\r\n setAsset(\r\n props.file,\r\n props.assetFileType,\r\n props.assetId,\r\n\r\n assetType,\r\n setProgress\r\n ),\r\n });\r\n };\r\n\r\n//AXIOS\r\n\r\nconst setAsset = async (\r\n file: File,\r\n assetFileType: string,\r\n assetId: number | undefined,\r\n assetType: number,\r\n setProgress?: React.Dispatch>\r\n) => {\r\n const userId = useParametersStore.getState().userID;\r\n const tourId = useParametersStore.getState().tourID;\r\n\r\n const longDesc = {\r\n type: file.type,\r\n lastModified: file.lastModified,\r\n size: file.size,\r\n };\r\n\r\n const formData = new FormData();\r\n\r\n const json = {\r\n AssetId: assetId || 0,\r\n UserId: userId,\r\n AssetType: assetType,\r\n IdTour: tourId,\r\n AssetFileType: assetFileType,\r\n AssetShortDescription: assetFileType === \"F\" ? file.name : undefined,\r\n AssetExtDescription: JSON.stringify(longDesc),\r\n };\r\n\r\n formData.append(\"AssetFile\", file);\r\n formData.append(\"json\", JSON.stringify(json));\r\n\r\n const axiosResp = await axiosInstance\r\n .post(\"Tour/assets/SetAsset\", formData, {\r\n headers: {\r\n \"Content-Type\":\r\n \"multipart/form-data; boundary=\",\r\n },\r\n onUploadProgress: (p) => {\r\n if (p.total && setProgress) {\r\n let prog = p.loaded / p.total;\r\n setProgress(prog);\r\n }\r\n },\r\n })\r\n .then((res) => {\r\n // return res;\r\n return res.data.data[0];\r\n });\r\n return axiosResp;\r\n};\r\n\r\nexport function UseAssetsQuery(tourID: number, assetType: number) {\r\n // const prova = useParametersStore.getState().tourID;\r\n\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: [\"GetAssets\", tourID, assetType],\r\n queryFn: async () => {\r\n const data = axiosInstance\r\n .post(\"Tour/assets/GetAssets\", {\r\n idTour: tourID,\r\n assetType: assetType,\r\n })\r\n .then((resp) => {\r\n const data = resp?.data?.data;\r\n if (data) {\r\n if (assetType === 1) {\r\n // @ts-ignore\r\n queryClient.setQueryData([\"GetTour\", tourID], (old: TourData) => {\r\n return {\r\n ...old,\r\n scenes: old?.scenes?.map((sc: Scene) => {\r\n return sc.imageID === undefined\r\n ? {\r\n ...sc,\r\n imageID: data.find(\r\n // @ts-ignore\r\n (one) => one.assetKeyFull === sc.imageFull\r\n )?.assetId,\r\n }\r\n : sc;\r\n }),\r\n };\r\n });\r\n } else if (assetType === 2) {\r\n queryClient.setQueryData([\"GetTour\", tourID], (old: TourData) => {\r\n return {\r\n ...old,\r\n popups: old?.popups?.map((pop: Popup) => {\r\n return pop.type === \"image\"\r\n ? {\r\n ...pop,\r\n imageID: data.find(\r\n // @ts-ignore\r\n (one) => one.assetKeyFull === pop.image\r\n )?.assetId,\r\n }\r\n : pop;\r\n }),\r\n };\r\n });\r\n }\r\n return data;\r\n }\r\n })\r\n .catch((err) => console.debug(err));\r\n\r\n return data;\r\n },\r\n enabled: !!token,\r\n });\r\n}\r\n\r\nexport function useDeleteAsset(assetType: 1 | 2 | 3) {\r\n const tourId = useParametersStore.getState().tourID;\r\n\r\n const { refetch } = UseAssetsQuery(tourId, assetType);\r\n\r\n return useMutation({\r\n mutationKey: [\"DeleteAsset\"],\r\n mutationFn: async (assetID: number) => {\r\n const payload = { AssetId: assetID, AssetType: assetType };\r\n\r\n return axiosInstance\r\n .post(\"Tour/assets/deleteAsset\", payload)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n },\r\n onSuccess: () => {\r\n refetch();\r\n },\r\n });\r\n}\r\n\r\nexport function useLocalizationFile() {\r\n const { root } = useDataRootStore();\r\n\r\n const { lang: lang_ID } = useParametersStore();\r\n\r\n const isInDev = process.env.NODE_ENV === \"development\";\r\n\r\n const localUrl = \"./lang/\" + lang_ID + \".json\";\r\n const baseUrl = root + \"/lang/\" + lang_ID + \".json\";\r\n\r\n const { setLanguage } = useLocalizationStore();\r\n return useQuery({\r\n queryKey: [\"FetchLanguageFile\", lang_ID],\r\n\r\n queryFn: async () => {\r\n try {\r\n const data = await axios.get(isInDev ? localUrl : baseUrl);\r\n\r\n const languageNonProcessed: {\r\n [key: string]: string;\r\n } = data.data;\r\n let processed: { [key: string]: string } = {};\r\n\r\n for (const [key, value] of Object.entries(languageNonProcessed)) {\r\n const outerKey = key;\r\n const obj = value;\r\n\r\n for (const [key, value] of Object.entries(obj)) {\r\n processed[outerKey + \".\" + key] = value;\r\n }\r\n }\r\n\r\n setLanguage(processed);\r\n return processed;\r\n } catch (err) {\r\n throw err;\r\n }\r\n },\r\n staleTime: Infinity,\r\n refetchOnMount: false,\r\n refetchOnWindowFocus: false,\r\n gcTime: 1000 * 60 * 60,\r\n });\r\n}\r\n","import React from \"react\";\r\nimport { UseDownloadAsset } from \"../../../api/calls/Queries\";\r\n\r\nexport default function BottomBarThumbnail({\r\n thumb,\r\n}: {\r\n thumb: string | undefined;\r\n}) {\r\n const { data: imageBlob } = UseDownloadAsset(thumb);\r\n\r\n return (\r\n <>\r\n {imageBlob && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { create } from \"zustand\";\r\n\r\ntype rightSidePanelStoreType = {\r\n isOpen: boolean;\r\n setOpen: (bool: boolean) => void;\r\n};\r\n\r\nexport const useRightSidePanelStore = create()(\r\n (set) => ({\r\n isOpen: false,\r\n setOpen: (bool: boolean) => set({ isOpen: bool }),\r\n })\r\n);\r\n","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '145';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022; // @deprecated since r137\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseFloat( color[ 2 ] ) / 100;\n\t\t\t\t\t\tconst l = parseFloat( color[ 3 ] ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// handle empty sphere cases\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t} else if ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n\t// @deprecated since r138, 02cf0df1cb4575d5842fef9c85bb5a89fe020d53\n\n\ttoVector3() {\n\n\t\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n\t}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DefaultMatrixWorldAutoUpdate; // checked by the renderer\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.DefaultMatrixWorldAutoUpdate = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n\t// @deprecated\n\n\tcopyColorsArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyColorsArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector2sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector2sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector3sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector3sArray() was removed in r144.' );\n\n\t}\n\n\tcopyVector4sArray() {\n\n\t\tconsole.error( 'THREE.BufferAttribute: copyVector4sArray() was removed in r144.' );\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t// @deprecated since r144\n\n\tmerge() {\n\n\t\tconsole.error( 'THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead.' );\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv2 = geometry.attributes.uv2;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\t return vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat R21 = R12;\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\\t\\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_v0 0.339\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_v1 0.276\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_v4 0.046\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_v5 0.016\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_v6 0.0038\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if defined( USE_SHADOWMAP ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_COORDS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\toutput_fragment: output_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tuv2Transform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 } // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, 35718 );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst vertexTextures = capabilities.vertexTextures;\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\t\tconst useIridescence = material.iridescence > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tiridescence: useIridescence,\n\t\t\tiridescenceMap: useIridescence && !! material.iridescenceMap,\n\t\t\tiridescenceThicknessMap: useIridescence && !! material.iridescenceThicknessMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: !! material.depthPacking,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.iridescenceMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.iridescenceThicknessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 30 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 31 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 32 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 24 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgamMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = 33984 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgamMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgamMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgamMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( uniformsGroup ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, forceLinearEncoding = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding && forceLinearEncoding === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture, 33984 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture, 33984 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture, 33984 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture, 33984 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, 33984 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture, 33984 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, null );\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( 36064 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36008, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// @deprecated since r137\n\n\t\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. iridescence map\n\t\t// 14. iridescence thickness map\n\t\t// 15. specular intensity map\n\t\t// 16. specular tint map\n\t\t// 17. transmission map\n\t\t// 18. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.iridescenceMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceMap;\n\n\t\t} else if ( material.iridescenceThicknessMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceThicknessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( 35375 ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( 35345, buffer );\n\t\tgl.bufferData( 35345, size, usage );\n\t\tgl.bindBuffer( 35345, null );\n\t\tgl.bindBufferBase( 35345, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( 35345, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\n\t\t\t// partly update the buffer if necessary\n\n\t\t\tif ( hasUniformChanged( uniform, i, cache ) === true ) {\n\n\t\t\t\tconst value = uniform.value;\n\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\tgl.bufferSubData( 35345, offset, uniform.__data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( uniform.value.isMatrix3 ) {\n\n\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\tuniform.__data[ 0 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 1 ] = uniform.value.elements[ 1 ];\n\t\t\t\t\t\tuniform.__data[ 2 ] = uniform.value.elements[ 2 ];\n\t\t\t\t\t\tuniform.__data[ 3 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 4 ] = uniform.value.elements[ 3 ];\n\t\t\t\t\t\tuniform.__data[ 5 ] = uniform.value.elements[ 4 ];\n\t\t\t\t\t\tuniform.__data[ 6 ] = uniform.value.elements[ 5 ];\n\t\t\t\t\t\tuniform.__data[ 7 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 8 ] = uniform.value.elements[ 6 ];\n\t\t\t\t\t\tuniform.__data[ 9 ] = uniform.value.elements[ 7 ];\n\t\t\t\t\t\tuniform.__data[ 10 ] = uniform.value.elements[ 8 ];\n\t\t\t\t\t\tuniform.__data[ 11 ] = uniform.value.elements[ 0 ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvalue.toArray( uniform.__data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( 35345, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( 35345, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, cache ) {\n\n\t\tconst value = uniform.value;\n\n\t\tif ( cache[ index ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tcache[ index ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ index ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tif ( cache[ index ] !== value ) {\n\n\t\t\t\t\tcache[ index ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst cachedObject = cache[ index ];\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\t\tlet chunkOffset = 0; // offset within a single chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\t\t\tconst info = getUniformSize( uniform );\n\n\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\tuniform.__offset = offset;\n\n\t\t\t//\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\tchunkOffset = offset % chunkSize;\n\n\t\t\t\tconst remainingSizeInChunk = chunkSize - chunkOffset;\n\n\t\t\t\t// check for chunk overflow\n\n\t\t\t\tif ( chunkOffset !== 0 && ( remainingSizeInChunk - info.boundary ) < 0 ) {\n\n\t\t\t\t\t// add padding and adjust offset\n\n\t\t\t\t\toffset += ( chunkSize - chunkOffset );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset += info.storage;\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tchunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( uniform ) {\n\n\t\tconst value = uniform.value;\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' ) {\n\n\t\t\t// float/int\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tthis.isWebGLRenderer = true;\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet _alpha;\n\n\tif ( _context !== null ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t//\n\n\tObject.defineProperties( this, {\n\n\t\t// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d\n\n\t\tgammaFactor: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\t\treturn 2;\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates, uniformsGroups;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\tinfo = new WebGLInfo();\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tuniformsGroups.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onContextCreationError( event ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tfunction prepare( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tprepare( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tprepare( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t// UBOs\n\n\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t} else {\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t}\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\t// @deprecated\n\n\tget autoUpdate() {\n\n\t\tconsole.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );\n\t\treturn this.matrixWorldAutoUpdate;\n\n\t}\n\n\tset autoUpdate( value ) {\n\n\t\tconsole.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );\n\t\tthis.matrixWorldAutoUpdate = value;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// same as Array.prototype.slice, but also works on typed arrays\nfunction arraySlice( array, from, to ) {\n\n\tif ( isTypedArray( array ) ) {\n\n\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t}\n\n\treturn array.slice( from, to );\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nvar AnimationUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tarraySlice: arraySlice,\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n});\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = arraySlice( times, from, to );\n\t\t\tthis.values = arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = arraySlice( this.times ),\n\t\t\tvalues = arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = arraySlice( this.times, 0 );\n\t\tconst values = arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isHemisphereLightProbe = true;\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isAmbientLightProbe = true;\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tthis.uniforms.push( uniformsSource[ i ].clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 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\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nvar DataUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat\n});\n\n// r134, d65e0af06644fe5a84a6fc0e372f4318f95a04c0\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\n// r138, 48b05d3500acc084df50be9b4c90781ad9b8cb17\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\t\tsuper( width, height, options );\n\t\tthis.samples = 4;\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture2DArray extends DataArrayTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture3D extends Data3DTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\n// r144\n\nclass BoxBufferGeometry extends BoxGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tconsole.warn( 'THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry.' );\n\t\tsuper( width, height, depth, widthSegments, heightSegments, depthSegments );\n\n\n\t}\n\n}\n\n// r144\n\nclass CapsuleBufferGeometry extends CapsuleGeometry {\n\n\tconstructor( radius, length, capSegments, radialSegments ) {\n\n\t\tconsole.warn( 'THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry.' );\n\t\tsuper( radius, length, capSegments, radialSegments );\n\n\t}\n\n}\n\n// r144\n\nclass CircleBufferGeometry extends CircleGeometry {\n\n\tconstructor( radius, segments, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry.' );\n\t\tsuper( radius, segments, thetaStart, thetaLength );\n\n\t}\n\n}\n\n// r144\n\nclass ConeBufferGeometry extends ConeGeometry {\n\n\tconstructor( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry.' );\n\t\tsuper( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t}\n\n}\n\n// r144\n\nclass CylinderBufferGeometry extends CylinderGeometry {\n\n\tconstructor( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry.' );\n\t\tsuper( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t}\n\n}\n\n// r144\n\nclass DodecahedronBufferGeometry extends DodecahedronGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\n// r144\n\nclass ExtrudeBufferGeometry extends ExtrudeGeometry {\n\n\tconstructor( shapes, options ) {\n\n\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry.' );\n\t\tsuper( shapes, options );\n\n\t}\n\n}\n\n// r144\n\nclass IcosahedronBufferGeometry extends IcosahedronGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\n// r144\n\nclass LatheBufferGeometry extends LatheGeometry {\n\n\tconstructor( points, segments, phiStart, phiLength ) {\n\n\t\tconsole.warn( 'THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry.' );\n\t\tsuper( points, segments, phiStart, phiLength );\n\n\t}\n\n}\n\n// r144\n\nclass OctahedronBufferGeometry extends OctahedronGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\n// r144\n\nclass PlaneBufferGeometry extends PlaneGeometry {\n\n\tconstructor( width, height, widthSegments, heightSegments ) {\n\n\t\tconsole.warn( 'THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry.' );\n\t\tsuper( width, height, widthSegments, heightSegments );\n\n\t}\n\n}\n\n// r144\n\nclass PolyhedronBufferGeometry extends PolyhedronGeometry {\n\n\tconstructor( vertices, indices, radius, detail ) {\n\n\t\tconsole.warn( 'THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry.' );\n\t\tsuper( vertices, indices, radius, detail );\n\n\t}\n\n}\n\n// r144\n\nclass RingBufferGeometry extends RingGeometry {\n\n\tconstructor( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.RingBufferGeometry has been renamed to THREE.RingGeometry.' );\n\t\tsuper( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength );\n\n\t}\n\n}\n\n// r144\n\nclass ShapeBufferGeometry extends ShapeGeometry {\n\n\tconstructor( shapes, curveSegments ) {\n\n\t\tconsole.warn( 'THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry.' );\n\t\tsuper( shapes, curveSegments );\n\n\t}\n\n}\n\n// r144\n\nclass SphereBufferGeometry extends SphereGeometry {\n\n\tconstructor( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tconsole.warn( 'THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry.' );\n\t\tsuper( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength );\n\n\t}\n\n}\n\n// r144\n\nclass TetrahedronBufferGeometry extends TetrahedronGeometry {\n\n\tconstructor( radius, detail ) {\n\n\t\tconsole.warn( 'THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry.' );\n\t\tsuper( radius, detail );\n\n\t}\n\n}\n\n// r144\n\nclass TorusBufferGeometry extends TorusGeometry {\n\n\tconstructor( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tconsole.warn( 'THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry.' );\n\t\tsuper( radius, tube, radialSegments, tubularSegments, arc );\n\n\t}\n\n}\n\n// r144\n\nclass TorusKnotBufferGeometry extends TorusKnotGeometry {\n\n\tconstructor( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\t\tconsole.warn( 'THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry.' );\n\t\tsuper( radius, tube, tubularSegments, radialSegments, p, q );\n\n\t}\n\n}\n\n// r144\n\nclass TubeBufferGeometry extends TubeGeometry {\n\n\tconstructor( path, tubularSegments, radius, radialSegments, closed ) {\n\n\t\tconsole.warn( 'THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry.' );\n\t\tsuper( path, tubularSegments, radius, radialSegments, closed );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGBColorSpace, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","import { RootState } from \"@react-three/fiber\";\r\nimport { Vector3 } from \"three\";\r\nimport { create } from \"zustand\";\r\n\r\ntype glRendererStoreType = {\r\n state?: RootState;\r\n setState: (st: RootState) => void;\r\n};\r\nexport const useGLRendererStore = create()((set) => ({\r\n state: undefined,\r\n setState: (st: RootState) => set({ state: st }),\r\n}));\r\n\r\ntype lookingAtPointStoreType = {\r\n lookingAt: Vector3;\r\n setLookingAt: (v3: Vector3) => void;\r\n};\r\n\r\nexport const useLookingAtPointStore = create()(\r\n (set) => ({\r\n lookingAt: new Vector3(0, 0, 0),\r\n\r\n setLookingAt: (v3: Vector3) => set({ lookingAt: v3 }),\r\n })\r\n);\r\n\r\ntype compassHeadingType = {\r\n heading: number;\r\n headingDeg: number;\r\n setHeading: (number: number) => void;\r\n};\r\n\r\nexport const useCompassHeadingStore = create()((set) => ({\r\n heading: 0,\r\n headingDeg: 0,\r\n setHeading: (number: number) =>\r\n set({\r\n heading: number,\r\n headingDeg: Math.floor(180 + (-number * 180) / Math.PI),\r\n }),\r\n}));\r\n\r\ntype cameraPositionType = {\r\n cameraLookAt: Vector3 | null;\r\n setCameraLookAt: (v3: Vector3) => void;\r\n resetCameraLookAt: () => void;\r\n};\r\n\r\nexport const useCameraPositionStore = create()((set) => ({\r\n cameraLookAt: null,\r\n setCameraLookAt: (v3: Vector3) => set({ cameraLookAt: v3.normalize() }),\r\n resetCameraLookAt: () => set({ cameraLookAt: null }),\r\n}));\r\n","import { useLocalizationStore } from \"../../api/Zustand\";\r\n\r\nexport function getLanguageFile(key: string) {\r\n const { languageFile } = useLocalizationStore.getState();\r\n\r\n if (languageFile && languageFile[key]) return languageFile[key];\r\n else return key;\r\n}\r\n","import { useEffect } from \"react\";\r\nimport * as React from \"react\";\r\n\r\n/* eslint import/no-webpack-loader-syntax: off */\r\n// @ts-expect-error\r\nimport css from \"!raw-loader!./bottom-bar.css\";\r\n\r\n//QUERY\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\n\r\n//ICONS\r\n\r\nimport AddSceneIcon from \"../../Icons/AddSceneIcon.tsx\";\r\nimport { Asset, Hotspot, Scene } from \"../../../Types.ts\";\r\nimport { UseAssetsQuery, UseGetTour } from \"../../../api/calls/Queries.ts\";\r\nimport BottomBarThumbnail from \"./BottomBarThumbnail\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useParametersStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand.ts\";\r\nimport { useRightSidePanelStore } from \"../../../state management/zustand/editor-elements-stores.ts\";\r\nimport { useGLRendererStore } from \"../../../state management/zustand/gl-stores.ts\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile.ts\";\r\n\r\nfunction BottomBar() {\r\n const { tourID } = useParametersStore();\r\n\r\n const { data: tourData } = UseGetTour(tourID);\r\n\r\n const { data: panos } = UseAssetsQuery(tourID, 1);\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const rightPanel = useRightSidePanelStore();\r\n\r\n const { currentSceneID, setCurrentSceneID } = useCurrentSceneStore();\r\n\r\n // useEffect(() => {\r\n // if (tourData?.startingScene && currentSceneID === -1) {\r\n // setCurrentSceneID(tourData?.startingScene);\r\n // }\r\n // }, [tourData?.startingScene, currentSceneID, setCurrentSceneID]);\r\n\r\n const camera = useGLRendererStore((state) => state.state?.camera);\r\n\r\n const onSceneAdd = React.useCallback(() => {\r\n // RESETTING CAMERA POSITION\r\n camera?.position.set(0, 0, -1);\r\n\r\n const randomlyGenId = Math.floor(10000000 + Math.random() * 90000000);\r\n\r\n if (tourData!.scenes.find((one: Scene) => one.isNew)) {\r\n return null;\r\n } else {\r\n if (tourData!.scenes.length === 0) {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n startingScene: 1,\r\n scenes: [\r\n {\r\n id: 1,\r\n title: \"Nuova Scena\",\r\n image: \"\",\r\n fov: tourData!.fov,\r\n rotation: 0,\r\n lockRotation: false,\r\n north: 0,\r\n isNew: true,\r\n hotspots: [],\r\n },\r\n ],\r\n });\r\n setCurrentSceneID(1);\r\n\r\n setEditingElem(\"scene\", 1);\r\n rightPanel.setOpen(true);\r\n } else {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes,\r\n {\r\n id: randomlyGenId,\r\n\r\n title: \"Scena \" + (tourData?.scenes.length! + 1),\r\n image: \"\",\r\n fov: tourData!.fov,\r\n rotation: 0,\r\n lockRotation: false,\r\n north: 0,\r\n isNew: true,\r\n hotspots: [],\r\n },\r\n ],\r\n });\r\n setCurrentSceneID(randomlyGenId);\r\n\r\n setEditingElem(\"scene\", randomlyGenId);\r\n rightPanel.setOpen(true);\r\n }\r\n }\r\n }, [\r\n camera,\r\n rightPanel,\r\n queryClient,\r\n setCurrentSceneID,\r\n\r\n setEditingElem,\r\n tourData,\r\n tourID,\r\n ]);\r\n\r\n const { isTakingScreenshot } = useWidePopupStore();\r\n\r\n const addSceneIsBlocked: boolean = React.useMemo(() => {\r\n return (\r\n !!tourData?.scenes\r\n .find((one: Scene) => one.id === currentSceneID)\r\n ?.hotspots.find((one: Hotspot) => one.isNew || one.EDIT_POS) ||\r\n isTakingScreenshot\r\n );\r\n }, [currentSceneID, isTakingScreenshot, tourData?.scenes]);\r\n\r\n const spotInTempState = React.useMemo(() => {\r\n return tourData?.scenes\r\n .find((one: Scene) => one.id === currentSceneID)\r\n ?.hotspots.find((one: Hotspot) => one.EDIT_POS || one.isNew);\r\n }, [tourData, currentSceneID]);\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n {tourData &&\r\n panos &&\r\n tourData?.scenes.map((scene: Scene, index: number) => (\r\n \r\n ))}\r\n\r\n {\r\n if (addSceneIsBlocked) return;\r\n else onSceneAdd();\r\n }}\r\n style={{ height: \"100%\" }}\r\n >\r\n
    \r\n \r\n

    \r\n {getLanguageFile(\"bottom_bar.add_scene\").toLocaleUpperCase()}\r\n

    \r\n
    \r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nexport default BottomBar;\r\n\r\nconst BottomBarElement = (props: {\r\n scene: Scene;\r\n index: number;\r\n spotInTempState: Hotspot | undefined;\r\n panos: Asset[];\r\n}) => {\r\n const { currentSceneID, setCurrentSceneID } = useCurrentSceneStore();\r\n const { isTakingScreenshot } = useWidePopupStore();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n const { scene, spotInTempState, index, panos } = props;\r\n\r\n const elementRef = React.useRef(null);\r\n\r\n const rightPanel = useRightSidePanelStore();\r\n\r\n const isSelected = currentSceneID === scene.id;\r\n\r\n React.useEffect(() => {\r\n if (scene.id === currentSceneID) {\r\n elementRef.current?.scrollIntoView({\r\n behavior: \"smooth\",\r\n inline: \"center\",\r\n });\r\n } else return;\r\n }, [elementRef, scene, currentSceneID]);\r\n\r\n return (\r\n {\r\n if (spotInTempState || isTakingScreenshot) return;\r\n else {\r\n rightPanel.setOpen(true);\r\n }\r\n }}\r\n onClick={() => {\r\n if (spotInTempState || isTakingScreenshot) return;\r\n else {\r\n if (currentSceneID !== scene.id) {\r\n setCurrentSceneID(scene.id as number);\r\n setEditingElem(\"scene\", scene.id);\r\n }\r\n }\r\n }}\r\n >\r\n \r\n
\r\n {index + 1 <= 9\r\n ? 0 + JSON.stringify(index + 1)\r\n : JSON.stringify(index + 1)}\r\n
\r\n\r\n
\r\n
\r\n one.assetId === scene.imageID)\r\n ?.assetKeyThumb || scene.imageThumb\r\n }\r\n />\r\n
\r\n
\r\n \r\n {scene.title || scene.id}\r\n \r\n \r\n \r\n );\r\n};\r\n","export default \"ul.bottom-bar {\\r\\n color: #383a40;\\r\\n list-style: none;\\r\\n padding: 0;\\r\\n max-width: 100%;\\r\\n overflow-x: auto;\\r\\n margin: 0;\\r\\n height: 100%;\\r\\n box-sizing: border-box;\\r\\n white-space: nowrap;\\r\\n\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\nul.bottom-bar li {\\r\\n cursor: pointer;\\r\\n\\r\\n margin-inline: 5px;\\r\\n height: 100%;\\r\\n aspect-ratio: 4/3;\\r\\n /* overflow: hidden; */\\r\\n\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n}\\r\\nul.bottom-bar li:first-child {\\r\\n margin-left: 10px;\\r\\n}\\r\\n\\r\\n.bottom-bar li#add {\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n}\\r\\n\\r\\n.bottom-bar li#add p {\\r\\n margin: 0;\\r\\n font-size: 0.9rem;\\r\\n}\\r\\n\\r\\n.bottom-bar li#add svg {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n}\\r\\n.bottom-bar li#add:hover {\\r\\n opacity: 0.6;\\r\\n}\\r\\n.bottom-bar li#add svg:hover {\\r\\n opacity: 0.6;\\r\\n}\\r\\n\\r\\n.icon {\\r\\n cursor: pointer;\\r\\n padding: 0;\\r\\n border-radius: 50%;\\r\\n margin: 0;\\r\\n font-size: 1.4em;\\r\\n display: flex;\\r\\n transition: 150ms ease-out;\\r\\n}\\r\\n\\r\\n@media (hover: hover) {\\r\\n .bottom-icon:hover {\\r\\n opacity: 0.5;\\r\\n }\\r\\n .bottom-bar-item:hover p {\\r\\n text-decoration: underline;\\r\\n }\\r\\n\\r\\n .bottom-icon#add:hover {\\r\\n background: #383a40;\\r\\n opacity: 0.5;\\r\\n }\\r\\n\\r\\n .icon:hover {\\r\\n opacity: 0.5;\\r\\n color: #083344;\\r\\n background: #fff;\\r\\n }\\r\\n}\\r\\n\\r\\ndiv.add-scene {\\r\\n height: 100%;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\ndiv.scene-element {\\r\\n font-weight: 400;\\r\\n width: 100%;\\r\\n height: 95%;\\r\\n transition: all 150ms;\\r\\n\\r\\n opacity: 0.5;\\r\\n\\r\\n white-space: normal;\\r\\n /* overflow: hidden; */\\r\\n text-overflow: ellipsis;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\ndiv.scene-element.selected {\\r\\n opacity: 1;\\r\\n /* background-color: aqua; */\\r\\n}\\r\\n\\r\\ndiv.scene-element.disabled {\\r\\n cursor: not-allowed;\\r\\n opacity: 0.6;\\r\\n}\\r\\n\\r\\ndiv.scene-element.selected {\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\ndiv.thumbnail-wrapper {\\r\\n position: absolute;\\r\\n height: 95%;\\r\\n display: flex;\\r\\n transition: all 150ms ease-in-out;\\r\\n\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n background-color: #e6e4f4;\\r\\n border-radius: 0.25rem;\\r\\n width: 100%;\\r\\n overflow: hidden;\\r\\n\\r\\n border: 2px solid;\\r\\n\\r\\n border-color: transparent;\\r\\n box-sizing: border-box;\\r\\n filter: drop-shadow(4px 4px 0px transparent);\\r\\n}\\r\\n\\r\\ndiv.thumbnail-wrapper.selected {\\r\\n border-color: #383a40;\\r\\n filter: drop-shadow(3px 3px 0px #383a40);\\r\\n}\\r\\n\\r\\n/* style={{\\r\\n position: \\\"absolute\\\",\\r\\n height: \\\"95%\\\",\\r\\n\\r\\n display: \\\"flex\\\",\\r\\n flexDirection: \\\"column\\\",\\r\\n alignItems: \\\"center\\\",\\r\\n justifyContent: \\\"center\\\",\\r\\n background: \\\"#E6E4F4\\\",\\r\\n borderRadius: \\\".25rem\\\",\\r\\n width: \\\"100%\\\",\\r\\n overflow: \\\"hidden\\\",\\r\\n\\r\\n opacity: isSelected ? 1 : 0.5,\\r\\n }}*/\\r\\n\";","import * as React from \"react\";\r\nconst LoadingSplashIcon = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\nexport default LoadingSplashIcon;\r\n","import React from \"react\";\r\nimport LoadingSplashIcon from \"../Icons/LoadingSplashIcon\";\r\n\r\nfunction LoadingScreen() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LoadingScreen;\r\n","import React from \"react\";\r\nimport { getLanguageFile } from \"../common/GetLanguageFile\";\r\n\r\nfunction SceneDelConfirmPanel(props: {\r\n setIsDeletingScene: React.Dispatch>;\r\n handleSceneDelete: () => void;\r\n children?: JSX.Element;\r\n differentConfirmBtnMessage?: string;\r\n}) {\r\n const {\r\n handleSceneDelete,\r\n setIsDeletingScene,\r\n children,\r\n differentConfirmBtnMessage,\r\n } = props;\r\n\r\n return (\r\n
\r\n
\r\n
{children}
\r\n\r\n
\r\n setIsDeletingScene(false)}\r\n >\r\n {getLanguageFile(\"generics.cancel\")}\r\n \r\n\r\n {\r\n setIsDeletingScene(false);\r\n handleSceneDelete();\r\n }}\r\n >\r\n {differentConfirmBtnMessage ?? getLanguageFile(\"generics.delete\")}\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default SceneDelConfirmPanel;\r\n","import * as React from \"react\";\r\nexport function EditPencil(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function Trashbin(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function CloseIcon(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\nexport function AddIcon(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function FolderIcon(props: any) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import { FolderIcon } from \"../../Icons/gui-elements-icons\";\r\n\r\nconst FileSelectorButton = (props: {\r\n children: string | undefined;\r\n onClickFunction: () => void;\r\n id?: string;\r\n disabled?: boolean;\r\n}) => {\r\n return (\r\n props.onClickFunction()}\r\n >\r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FileSelectorButton;\r\n","import { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nexport const SaveButton = (\r\n props: {\r\n savingBool?: boolean;\r\n isTemp?: boolean;\r\n } & React.ButtonHTMLAttributes\r\n) => {\r\n const { savingBool, isTemp, ...otherProps } = props;\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { useEffect, useState, useCallback } from \"react\";\r\nimport * as React from \"react\";\r\n\r\n//QUERIES\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { UseAssetsQuery, UseSaveTour } from \"../../../api/calls/Queries\";\r\nimport SceneDelConfirmPanel from \"../SceneDelConfirmPanel\";\r\n\r\n//SVG ICONS\r\n//TYPESCRIPT\r\n\r\nimport { Scene, TourData } from \"../../../Types\";\r\nimport {\r\n useAssetListStore,\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useMapEditorStore,\r\n useTourDataStore,\r\n} from \"../../../api/Zustand\";\r\n\r\nimport FileSelectorButton from \"../GuiElements/FileSelectorButton\";\r\nimport { AddIcon, EditPencil, Trashbin } from \"../../Icons/gui-elements-icons\";\r\nimport { useCompassHeadingStore } from \"../../../state management/zustand/gl-stores\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\nimport { SaveButton } from \"./UiElements\";\r\n\r\nexport default SceneEditing;\r\n\r\nfunction SceneEditing({ tourID }: { tourID: number }) {\r\n const { tourData } = useTourDataStore();\r\n\r\n const { mutateAsync: saveTour, isPending: isSaving } = UseSaveTour();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n const { setOpen } = useAssetListStore();\r\n\r\n const { data: panos } = UseAssetsQuery(tourID, 1);\r\n const { data: audioList } = UseAssetsQuery(tourID, 3);\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const [currentScene, setCurrentScene] = useState();\r\n\r\n const { currentSceneID, setCurrentSceneID } = useCurrentSceneStore();\r\n\r\n const [isDeletingScene, setIsDeletingScene] = useState(false);\r\n\r\n useEffect(() => {\r\n if (tourData && tourData.scenes.length > 0) {\r\n let current = tourData.scenes.find((one) => one.id === currentSceneID);\r\n setCurrentScene(current);\r\n }\r\n return;\r\n }, [currentSceneID, tourData]);\r\n\r\n const [tempTitle, setTempTitle] = React.useState();\r\n\r\n useEffect(() => {\r\n if (currentScene) {\r\n setTempTitle(currentScene.title);\r\n }\r\n }, [currentScene]);\r\n\r\n const onTitleChange = React.useCallback(\r\n (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, title: e.target.value }\r\n : scene\r\n ),\r\n });\r\n },\r\n [queryClient, tourData, tourID, currentSceneID]\r\n );\r\n\r\n // const onFovChange = (e: React.ChangeEvent) => {\r\n // queryClient.setQueryData([\"GetTour\", tourID], {\r\n // ...tourData,\r\n // scenes: tourData!.scenes.map((scene) =>\r\n // scene.id === currentSceneID\r\n // ? { ...scene, fov: e.target.valueAsNumber }\r\n // : scene\r\n // ),\r\n // });\r\n // };\r\n\r\n const onRotationChange = React.useCallback(\r\n (rot: number) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID ? { ...scene, rotation: rot } : scene\r\n ),\r\n });\r\n },\r\n [queryClient, tourData, currentSceneID, tourID]\r\n );\r\n const onLockRotationChange = React.useCallback(\r\n (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, lockRotation: e.target.checked }\r\n : scene\r\n ),\r\n });\r\n },\r\n [tourData, tourID, queryClient, currentSceneID]\r\n );\r\n\r\n const onNorthChange = React.useCallback(\r\n (north: number) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID ? { ...scene, north: north } : scene\r\n ),\r\n });\r\n },\r\n [queryClient, tourID, currentSceneID, tourData]\r\n );\r\n\r\n const handleSceneDelete = React.useCallback(() => {\r\n let tempScenes = tourData!.scenes.filter(\r\n (scene) => scene.id !== currentSceneID\r\n );\r\n\r\n const newTourData: TourData | undefined = queryClient.setQueryData(\r\n [\"GetTour\", tourID],\r\n {\r\n ...tourData,\r\n scenes: tempScenes,\r\n groups: tourData!.groups.map((group) => {\r\n const newScenes = group.scenes!.filter(\r\n (scene: number) => scene !== currentSceneID\r\n );\r\n\r\n return { ...group, scenes: newScenes };\r\n }),\r\n // @ts-expect-error\r\n startingScene:\r\n tourData?.startingScene === currentSceneID\r\n ? tourData!.scenes.filter((sc) => sc.id !== currentSceneID)[0]?.id\r\n : tourData!.startingScene,\r\n }\r\n );\r\n\r\n saveTour(newTourData as TourData);\r\n\r\n const firstScene = newTourData?.scenes[0];\r\n\r\n setCurrentSceneID(firstScene?.id as number);\r\n }, [\r\n saveTour,\r\n currentSceneID,\r\n queryClient,\r\n setCurrentSceneID,\r\n tourData,\r\n tourID,\r\n ]);\r\n\r\n const onGroupAdd = useCallback(() => {\r\n const newTourID = Math.floor(100000 + Math.random() * 900000);\r\n\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID ? { ...scene, group: newTourID } : scene\r\n ),\r\n groups: [\r\n ...tourData!.groups,\r\n {\r\n id: newTourID,\r\n name: \"Nuovo gruppo\",\r\n scenes: [currentSceneID],\r\n mainColor: \"#1c64f2\",\r\n textColor: \"#fff\",\r\n },\r\n ],\r\n });\r\n\r\n setEditingElem(\"groups\", newTourID);\r\n }, [queryClient, tourData, tourID, currentSceneID, setEditingElem]);\r\n\r\n const handleGroupAssign = useCallback(\r\n (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, group: JSON.parse(e.target.value) }\r\n : scene\r\n ),\r\n groups: tourData!.groups.map((group) =>\r\n group.id === JSON.parse(e.target.value)\r\n ? { ...group, scenes: [...(group.scenes || []), currentSceneID] }\r\n : {\r\n ...group,\r\n scenes: group.scenes!.filter(\r\n (scene: number) => scene !== currentSceneID\r\n ),\r\n }\r\n ),\r\n });\r\n },\r\n [currentSceneID, queryClient, tourData, tourID]\r\n );\r\n\r\n const mapEditor = useMapEditorStore();\r\n\r\n const displayedAudioTitle: string | undefined = React.useMemo(() => {\r\n if (!currentScene?.audio) {\r\n return getLanguageFile(\"right_panel.add_audio\");\r\n } else if (\r\n audioList?.find((one) => one.assetId === currentScene?.audio)\r\n ?.assetDescription\r\n )\r\n return audioList?.find((one) => one.assetId === currentScene?.audio)\r\n ?.assetDescription;\r\n else return getLanguageFile(\"audio_name_error\");\r\n }, [currentScene?.audio, audioList]);\r\n\r\n const scenePanoName: string | undefined = React.useMemo(() => {\r\n let name;\r\n if (!currentScene?.imageID && !currentScene?.imageFull) {\r\n name = getLanguageFile(\"right_panel.select\");\r\n } else\r\n name = panos?.find(\r\n (one) =>\r\n one.assetId === currentScene.imageID ||\r\n one.assetKeyFull === currentScene.imageFull\r\n )?.assetDescription;\r\n\r\n return name;\r\n }, [currentScene, panos]);\r\n\r\n const onAudioRemoval = React.useCallback(() => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData?.scenes.map((sc) =>\r\n sc.id === currentSceneID ? { ...sc, audio: undefined } : sc\r\n ),\r\n });\r\n }, [tourID, queryClient, tourData, currentSceneID]);\r\n\r\n const { headingDeg } = useCompassHeadingStore();\r\n\r\n return (\r\n <>\r\n {isDeletingScene && (\r\n \r\n
\r\n {getLanguageFile(\"right_panel.confirm_delete_scene\")}{\" \"}\r\n {currentScene?.title}?\r\n
\r\n \r\n )}\r\n \r\n {tourData && panos && currentScene ? (\r\n
\r\n {currentScene?.imageFull || currentScene?.imageID ? null : (\r\n

{getLanguageFile(\"right_panel.add_image\")}

\r\n )}\r\n\r\n {\r\n e.preventDefault();\r\n }}\r\n >\r\n
\r\n \r\n {\r\n onTitleChange(e);\r\n setTempTitle(e.target.value);\r\n }}\r\n />\r\n
\r\n \r\n setOpen(1)}>\r\n {scenePanoName}\r\n \r\n {currentScene?.imageID && !currentScene?.isUsingNewPano ? (\r\n <>\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n onLockRotationChange(e)}\r\n />\r\n\r\n {getLanguageFile(\"right_panel.rotation_lock\")}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n onNorthChange(e.target.valueAsNumber)\r\n }\r\n />\r\n {/* onNorthChange(headingDeg)}\r\n type=\"button\"\r\n >\r\n {getLanguageFile(\"right_panel.current\")}\r\n */}\r\n \r\n {currentScene?.north}\r\n \r\n °\r\n
\r\n
\r\n
\r\n\r\n
\r\n

{getLanguageFile(\"right_panel.audio\")}

\r\n
\r\n
\r\n \r\n {/* {audioList && currentScene?.audio && (\r\n \r\n )} */}\r\n setOpen(3)}\r\n >\r\n {displayedAudioTitle ?? getLanguageFile(\"generics.error\")}\r\n \r\n\r\n {currentScene?.audio && (\r\n {\r\n onAudioRemoval();\r\n setCurrentScene({\r\n ...currentScene,\r\n audio: undefined,\r\n });\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n
\r\n

{getLanguageFile(\"right_panel.map\")}

\r\n
\r\n
\r\n \r\n {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? { ...sc, map: parseInt(e.target.value) }\r\n : sc\r\n ),\r\n });\r\n }}\r\n value={currentScene?.map}\r\n >\r\n \r\n {tourData.maps?.map((map) => (\r\n \r\n ))}\r\n \r\n\r\n {currentScene?.map ? (\r\n {\r\n mapEditor.setOpen(currentScene.map!, true);\r\n }}\r\n >\r\n \r\n \r\n ) : null}\r\n \r\n {currentScene.map && (\r\n \r\n )}\r\n
\r\n

{getLanguageFile(\"right_panel.group\")}

\r\n
\r\n
\r\n \r\n \r\n \r\n {JSON.stringify(currentScene?.group)}\r\n\r\n {!currentScene?.group && (\r\n \r\n )}\r\n\r\n {tourData!.groups.map((group) => (\r\n \r\n ))}\r\n \r\n\r\n {\r\n if (currentScene?.group) {\r\n setEditingElem(\"groups\", currentScene.group);\r\n } else onGroupAdd();\r\n }}\r\n >\r\n {currentScene?.group ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n setIsDeletingScene(true)}\r\n >\r\n {getLanguageFile(\"generics.delete\")}\r\n \r\n \r\n\r\n saveTour(tourData!)}\r\n >\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n )}\r\n \r\n \r\n ) : null}\r\n \r\n \r\n );\r\n}\r\n","import React, { SVGProps } from \"react\";\r\n\r\nfunction LinkInputIcon(props: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LinkInputIcon;\r\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown): value is object =>\n typeof value === 'object';\n\nexport default (value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set, name: InternalFieldName) =>\n names.has(getNodeParentName(name));\n","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","import isObject from './isObject';\n\nexport default (tempObject: object) => {\n const prototypeCopy =\n tempObject.constructor && tempObject.constructor.prototype;\n\n return (\n isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n );\n};\n","export default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (\n !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : {};\n\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","export default (value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default (object: T, path?: string, defaultValue?: unknown): any => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) =>\n isNullOrUndefined(result) ? result : result[key as keyof {}],\n object,\n );\n\n return isUndefined(result) || result === object\n ? isUndefined(object[path as keyof T])\n ? defaultValue\n : object[path as keyof T]\n : result;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (object: FieldValues, path: string, value?: unknown) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n\n if (key === '__proto__') {\n return;\n }\n\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n","export const EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n} as const;\n\nexport const VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n} as const;\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n} as const;\n","import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n TContext = any,\n TransformedValues extends FieldValues | undefined = undefined,\n>(): UseFormReturn =>\n React.useContext(HookFormContext) as UseFormReturn<\n TFieldValues,\n TContext,\n TransformedValues\n >;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
\n * \n * \n * \n *
\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: FormProviderProps,\n) => {\n const { children, ...data } = props;\n return (\n \n {children}\n \n );\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default (\n formState: FormState,\n control: Control,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n const result = {\n defaultValues: control._defaultValues,\n } as typeof formState;\n\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key as keyof FormState & keyof ReadFormState;\n\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n\n return result;\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport {\n Control,\n FieldValues,\n FormState,\n InternalFieldName,\n ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default (\n formStateData: Partial> & { name?: InternalFieldName },\n _proxyFormState: K,\n updateFormState: Control['_updateFormState'],\n isRoot?: boolean,\n) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default (value: T) => (Array.isArray(value) ? value : [value]);\n","import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props = {\n disabled?: boolean;\n subject: Subject;\n next: (value: T) => void;\n};\n\nexport function useSubscribe(props: Props) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const subscription =\n !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default (\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n defaultValue?: DeepPartial | unknown,\n) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n\n if (Array.isArray(names)) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n\n return formValues;\n};\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode, ValidationModeFlags } from '../types';\n\nexport default (mode?: Mode): ValidationModeFlags => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import { FieldRefs, InternalFieldName, Ref } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst iterateFieldsByAction = (\n fields: FieldRefs,\n action: (ref: Ref, name: string) => 1 | undefined | void,\n fieldsNames?: Set | InternalFieldName[] | 0,\n abortEarly?: boolean,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const { _f, ...currentField } = field;\n\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n break;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n break;\n } else {\n iterateFieldsByAction(currentField, action);\n }\n } else if (isObject(currentField)) {\n iterateFieldsByAction(currentField, action);\n }\n }\n }\n};\n\nexport default iterateFieldsByAction;\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport compact from '../utils/compact';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default (\n errors: FieldErrors,\n error: Partial>,\n name: InternalFieldName,\n): FieldErrors => {\n const fieldArrayErrors = compact(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n if (!isWeb) {\n return false;\n }\n\n const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n return (\n value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n );\n};\n","import { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message => isString(value);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n FieldValues,\n InternalFieldErrors,\n MaxType,\n Message,\n MinType,\n NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n field: Field,\n formValues: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n disabled,\n } = field._f;\n const inputValue: NativeFieldValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType: MaxType = INPUT_VALIDATION_RULES.maxLength,\n minType: MinType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n const convertTimeToDate = (time: unknown) =>\n new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (\n (maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n ) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue, formValues),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n const index = paths.length - 1;\n const key = paths[index];\n\n if (childObject) {\n delete childObject[key];\n }\n\n if (\n index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))\n ) {\n unset(object, paths.slice(0, -1));\n }\n\n return object;\n}\n","import { Noop } from '../types';\n\nexport type Observer = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject = {\n readonly observers: Observer[];\n subscribe: (value: Observer) => Subscription;\n unsubscribe: Noop;\n} & Observer;\n\nexport default (): Subject => {\n let _observers: Observer[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import isFunction from './isFunction';\n\nexport default (data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty(data: T, fields: Record = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: Record<\n Extract,\n ReturnType | boolean\n >,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default (defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default (\n fieldsNames: Set | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n rule?: ValidationRule | ValidationValueMessage,\n) =>\n isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup(\n errors: FieldErrors,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","import { ValidationModeFlags } from '../types';\n\nexport default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default (ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n Control,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UseFormClearErrors,\n UseFormGetFieldState,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport iterateFieldsByAction from './iterateFieldsByAction';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps = {},\n): Omit, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields: FieldRefs = {};\n let _defaultValues =\n isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback: DelayCallback | null;\n let timer = 0;\n const _proxyFormState: ReadFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n (callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n\n const _updateValid = async (shouldUpdateValid?: boolean) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n\n const _updateIsValidating = (names?: string[], isValidating?: boolean) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))\n ) {\n const errors = method(\n get(_formState.errors, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (\n _proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))\n ) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const _setErrors = (errors: FieldErrors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs: boolean,\n value?: unknown,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(\n _formValues,\n name,\n isUndefined(value) ? get(_defaultValues, name) : value,\n );\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n\n _state.mount && _updateValid();\n }\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isBlurEvent?: boolean,\n shouldDirty?: boolean,\n shouldRender?: boolean,\n ): Partial<\n Pick, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output: Partial> & { name: string } = {\n name,\n };\n const disabledField = !!(\n get(_fields, name) && get(_fields, name)._f.disabled\n );\n\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n\n const isCurrentFieldPristine =\n disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n\n return shouldUpdateField ? output : {};\n };\n\n const shouldRenderByError = (\n name: InternalFieldName,\n isValid?: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean;\n },\n ) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver!(\n _formValues as TFieldValues,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n );\n _updateIsValidating(name);\n return result;\n };\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema(names);\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n\n return errors;\n };\n\n const executeBuiltInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context: {\n valid: boolean;\n } = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const { _f, ...fieldValue } = field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n _updateIsValidating([name], true);\n const fieldError = await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation && !shouldOnlyCheckValid,\n isFieldArrayRoot,\n );\n _updateIsValidating([name]);\n\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(\n _formState.errors,\n fieldError,\n _f.name,\n )\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n\n fieldValue &&\n (await executeBuiltInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) => (\n name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues)\n );\n\n const _getWatch: WatchInternal = (\n names,\n defaultValue,\n isGlobal,\n ) =>\n generateWatchOutput(\n names,\n _names,\n {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n },\n isGlobal,\n defaultValue,\n );\n\n const _getFieldArray = (\n name: InternalFieldName,\n ): Partial[] =>\n compact(\n get(\n _state.mount ? _formValues : _defaultValues,\n name,\n props.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (optionRef) =>\n (optionRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(optionRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(\n name,\n fieldValue,\n options.shouldTouch,\n options.shouldDirty,\n true,\n );\n\n options.shouldValidate && trigger(name as Path);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name as string;\n let isFieldValueUpdated = true;\n const field: Field = get(_fields, name);\n const getCurrentFieldValue = () =>\n target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue: any): void => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n fieldValue === get(_formValues, name, fieldValue);\n };\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent =\n event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n\n if (shouldSkipValidation) {\n _proxyFormState.isValid && _updateValid();\n\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (\n await validateField(\n field,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n _updateIsValidating([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(\n field._f.deps as\n | FieldPath\n | FieldPath[],\n );\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n\n const _focusInput = (ref: Ref, key: string) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n\n const trigger: UseFormTrigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(\n _fields,\n _focusInput,\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues = (\n fieldNames?:\n | FieldPath\n | ReadonlyArray>,\n ) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n\n const getFieldState: UseFormGetFieldState = (\n name,\n formState,\n ) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n isValidating: !!get((formState || _formState).validatingFields, name),\n error: get((formState || _formState).errors, name),\n });\n\n const clearErrors: UseFormClearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n );\n\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n\n const setError: UseFormSetError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch = (\n name?:\n | FieldPath\n | ReadonlyArray>\n | WatchObserver,\n defaultValue?: DeepPartial,\n ) =>\n isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) =>\n name(\n _getWatch(undefined, defaultValue),\n payload as {\n name?: FieldPath;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue,\n true,\n );\n\n const unregister: UseFormUnregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n\n _subjects.values.next({\n values: { ..._formValues },\n });\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const _updateDisabledField: Control['_updateDisabledField'] = ({\n disabled,\n name,\n field,\n fields,\n value,\n }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n\n const register: UseFormRegister = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled);\n\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n if (field) {\n _updateDisabledField({\n field,\n disabled: options.disabled,\n name,\n value: options.value,\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n\n return {\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n\n if (\n radioOrCheckbox\n ? refs.find((option: Ref) => option === fieldRef)\n : fieldRef === field._f.ref\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const _focusError = () =>\n _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n\n const _disableForm = (disabled?: boolean) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(\n _fields,\n (ref, name) => {\n const currentField: Field = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n },\n 0,\n false,\n );\n }\n };\n\n const handleSubmit: UseFormHandleSubmit =\n (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n unset(_formState.errors, 'root');\n\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues as TFieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n\n const resetField: UseFormResetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(\n name,\n options.defaultValue as PathValue<\n TFieldValues,\n FieldPath\n >,\n );\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath,\n get(values, fieldName),\n );\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n\n _fields = {};\n }\n\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n\n _subjects.array.next({\n values: { ...values },\n });\n\n _subjects.values.next({\n values: { ...values },\n });\n }\n\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n\n _state.watch = !!props.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(\n keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)\n ),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? []\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n\n const reset: UseFormReset = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? formValues(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n\n const _updateFormState = (\n updatedFormState: Partial>,\n ) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n\n const _resetDefaultValues = () =>\n isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n *
\n * \n * \n * {errors.exampleRequired && This field is required}\n * \n *
\n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: UseFormProps = {},\n): UseFormReturn {\n const _formControl = React.useRef<\n UseFormReturn | undefined\n >();\n const _values = React.useRef();\n const [formState, updateFormState] = React.useState>({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useSubscribe({\n subject: control._subjects.state,\n next: (\n value: Partial> & { name?: InternalFieldName },\n ) => {\n if (\n shouldRenderFormState(\n value,\n control._proxyFormState,\n control._updateFormState,\n true,\n )\n ) {\n updateFormState({ ...control._formState });\n }\n },\n });\n\n React.useEffect(\n () => control._disableForm(props.disabled),\n [control, props.disabled],\n );\n\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n\n control._removeUnmounted();\n });\n\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n\n _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n","import React from \"react\";\r\nimport { Hotspot, Popup, Scene, TourData } from \"../../../Types\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n} from \"../../../api/Zustand\";\r\n\r\nimport * as THREE from \"three\";\r\nimport { useCameraPositionStore } from \"../../../state management/zustand/gl-stores\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst OtherHotspots = (props: {\r\n type: \"link\" | \"transition\" | \"popup\" | \"quiz\" | \"audio\";\r\n currentHotspot: Hotspot;\r\n icon: JSX.Element;\r\n tourData: TourData;\r\n disabled?: boolean;\r\n}) => {\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const camera = useCameraPositionStore();\r\n\r\n const { disabled, currentHotspot, tourData, type, icon } = props;\r\n\r\n const theresOtherSpots = React.useMemo(() => {\r\n return !!tourData?.scenes\r\n .find((one) => one.id === currentSceneID)!\r\n .hotspots.find(\r\n (link) => link.type === type && link.id !== currentHotspot?.id\r\n );\r\n }, [currentHotspot?.id, currentSceneID, type, tourData.scenes]);\r\n\r\n const displayedTitle = React.useMemo(() => {\r\n switch (props.type) {\r\n case \"audio\":\r\n return getLanguageFile(\"right_panel.other_audio\");\r\n case \"link\":\r\n return getLanguageFile(\"right_panel.other_link\");\r\n case \"transition\":\r\n return getLanguageFile(\"right_panel.other_waypoint\");\r\n case \"popup\":\r\n return getLanguageFile(\"right_panel.other_pop\");\r\n case \"quiz\":\r\n return getLanguageFile(\"right_panel.other_question\");\r\n }\r\n }, [props.type]);\r\n\r\n if (theresOtherSpots)\r\n return (\r\n <>\r\n {theresOtherSpots ? (\r\n <>\r\n

{displayedTitle}

\r\n \r\n
\r\n {tourData!.scenes\r\n .find((one) => one.id === currentSceneID)!\r\n .hotspots.filter(\r\n (link) =>\r\n link.type === type && link.id !== currentHotspot?.id\r\n )\r\n .map((link, index) => (\r\n {\r\n if (\r\n currentHotspot?.EDIT_POS ||\r\n currentHotspot?.isNew ||\r\n disabled\r\n ) {\r\n return;\r\n } else {\r\n const dir = new THREE.Vector3(link.x, link.y, link.z);\r\n\r\n camera.setCameraLookAt(dir.multiplyScalar(-1));\r\n\r\n setEditingElem(type, link.id);\r\n }\r\n }}\r\n >\r\n \r\n \r\n {icon}\r\n {innerText(link, tourData)} \r\n \r\n
\r\n \r\n ))}\r\n \r\n \r\n \r\n ) : (\r\n getLanguageFile(\"right_panel.no_other_spot\")\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst innerText = (hs: Hotspot, tourData: TourData) => {\r\n if (hs.type === \"transition\")\r\n return (\r\n tourData?.scenes.find((one: Scene) => one.id === hs.target)?.title ??\r\n \"Errore caricamento nome scena\"\r\n );\r\n else if (hs.type === \"quiz\") {\r\n const thisQuestion = tourData.quizData?.data.find(\r\n (one) => one.questionId === hs.target\r\n );\r\n\r\n return thisQuestion?.questionText;\r\n } else if (hs.type === \"popup\")\r\n return tourData?.popups.find((one: Popup) => one.id === hs.target)?.title;\r\n\r\n return hs.title;\r\n};\r\n\r\nexport default OtherHotspots;\r\n\r\nconst alternatingBackgrounds = [\"#fff3\", \"#fff1\"];\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\n\r\n//QUERIES\r\n//\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\n\r\n//TYPESCRIPT\r\n//\r\n\r\n//ICONS\r\n//\r\nimport LinkInputIcon from \"../../Icons/LinkInputIcon\";\r\n\r\nimport { Hotspot, Scene, TourData } from \"../../../Types\";\r\nimport { UseGetTour, UseSaveTour } from \"../../../api/calls/Queries\";\r\n\r\nimport { useForm, SubmitHandler } from \"react-hook-form\";\r\nimport OtherHotspots from \"./OtherHotspots\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n} from \"../../../api/Zustand\";\r\nimport { EditPencil, Trashbin } from \"../../Icons/gui-elements-icons\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction LinkEditing({ id, tourID }: { id: string; tourID: number }) {\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const queryClient = useQueryClient();\r\n const [currentLink, setCurrentLink] = useState();\r\n\r\n const { mutateAsync: saveTour, isPending: isSaving } = UseSaveTour();\r\n\r\n const { data: tourData } = UseGetTour(tourID);\r\n\r\n const { register, handleSubmit, formState, watch, reset } =\r\n useForm();\r\n\r\n useEffect(() => {\r\n if (tourData) {\r\n let temp = tourData?.scenes\r\n ?.find((one: Scene) => one.id === currentSceneID)\r\n ?.hotspots.find((one: Hotspot) => one.id === id);\r\n\r\n setCurrentLink(temp);\r\n }\r\n }, [currentSceneID, id, tourData]);\r\n\r\n const onTargetChange = (e: React.ChangeEvent) => {\r\n setCurrentLink({ ...currentLink, target: e.target.value } as Hotspot);\r\n };\r\n\r\n const onTitlechange = useCallback(\r\n (e: React.ChangeEvent) => {\r\n setCurrentLink((current) => {\r\n return {\r\n ...current,\r\n title: e.target.value,\r\n } as Hotspot;\r\n });\r\n },\r\n []\r\n );\r\n\r\n const handleLinkUpdate = async () => {\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData?.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === id\r\n ? {\r\n ...currentLink,\r\n EDIT_POS: undefined,\r\n isNew: undefined,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n });\r\n saveTour(newTourData as TourData);\r\n };\r\n\r\n //\r\n const handlePosEdit = async () => {\r\n if (currentLink) {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === currentLink.id\r\n ? {\r\n ...currentLink,\r\n EDIT_POS: currentLink.EDIT_POS ? undefined : true,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n }\r\n };\r\n\r\n const handleDelete = async () => {\r\n const tempSceneSpots = tourData!.scenes\r\n .find((one) => one.id === currentSceneID)!\r\n .hotspots.filter((spot) => spot.id !== currentLink!.id);\r\n\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, hotspots: tempSceneSpots }\r\n : scene\r\n ),\r\n });\r\n\r\n setEditingElem(\"scene\", currentSceneID);\r\n saveTour(newTourData as TourData);\r\n };\r\n\r\n const handleForm: SubmitHandler = (data) => {\r\n return data;\r\n };\r\n\r\n return (\r\n \r\n {currentLink && (\r\n
\r\n

LINK

\r\n\r\n
\r\n\r\n \r\n\r\n \r\n {getLanguageFile(\"right_panel.link\")}\r\n\r\n
\r\n \r\n\r\n onTargetChange(e)}\r\n placeholder={getLanguageFile(\"right_panel.url_placeholder\")}\r\n pattern=\"https://*\"\r\n />\r\n
\r\n \r\n\r\n \r\n {currentLink.EDIT_POS ? (\r\n getLanguageFile(\"right_panel.save_position\")\r\n ) : (\r\n <>\r\n {getLanguageFile(\"right_panel.edit_position\")} \r\n \r\n )}\r\n \r\n\r\n
\r\n \r\n {currentLink.isNew\r\n ? getLanguageFile(\"generics.create\")\r\n : isSaving\r\n ? getLanguageFile(\"generics.saving\")\r\n : getLanguageFile(\"generics.save\")}\r\n \r\n\r\n \r\n
\r\n
\r\n )}\r\n\r\n {currentLink && (\r\n }\r\n tourData={tourData!}\r\n type=\"link\"\r\n >\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default LinkEditing;\r\n","// icon:link-45deg | Bootstrap https://icons.getbootstrap.com/ | Bootstrap\r\nimport * as React from \"react\";\r\n\r\nexport function Link(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function RightArrow(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\nexport function PopupAddIcon(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function QuizAddIcon(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function GearIcon(props: any) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\nexport function GroupsIcon({ props }: any) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function MapIcon(props: React.SVGAttributes) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\n//REACT QUERY\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\n\r\n//ICONS\r\nimport { Hotspot, Scene, TourData } from \"../../../Types\";\r\nimport { UseGetTour, UseSaveTour } from \"../../../api/calls/Queries\";\r\n\r\nimport OtherHotspots from \"./OtherHotspots\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n} from \"../../../api/Zustand\";\r\nimport { RightArrow } from \"../../Icons/left-side-bar-icons\";\r\nimport { EditPencil, Trashbin } from \"../../Icons/gui-elements-icons\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction WaypointEditing({ id, tourID }: { id: string; tourID: number }) {\r\n const { data: tourData, isLoading: tourDataLoading } = UseGetTour(tourID);\r\n\r\n const { mutateAsync: saveTourData, isPending: tourIsSaving } = UseSaveTour();\r\n const queryClient = useQueryClient();\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const [currentWay, setCurrentWay] = useState();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n useEffect(() => {\r\n if (tourData) {\r\n let temp = tourData.scenes\r\n .find((one: Scene) => one.id === currentSceneID)!\r\n .hotspots.find((one: Hotspot) => one.id === id);\r\n\r\n setCurrentWay(temp);\r\n }\r\n }, [currentSceneID, id, tourData]);\r\n\r\n const handleDelete = async () => {\r\n const tempSceneSpots = tourData!.scenes\r\n .find((one: Scene) => one.id === currentSceneID)!\r\n .hotspots.filter((spot: Hotspot) => spot.id !== currentWay!.id);\r\n\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene: Scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, hotspots: tempSceneSpots }\r\n : scene\r\n ),\r\n });\r\n setEditingElem(\"scene\", currentSceneID);\r\n saveTourData(newTourData as TourData);\r\n };\r\n\r\n const onDirectionChange = async (dir: String) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === currentWay!.id ? { ...hs, dir: dir } : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n };\r\n\r\n const onTargetChange = (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === currentWay!.id\r\n ? { ...hs, target: JSON.parse(e.target.value) }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n };\r\n\r\n //\r\n const handlePosEdit = async () => {\r\n if (currentWay) {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === currentWay!.id\r\n ? {\r\n ...hs,\r\n EDIT_POS: currentWay.EDIT_POS ? undefined : true,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n }\r\n };\r\n\r\n const handleWaypointUpdate = async () => {\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData?.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === id\r\n ? {\r\n ...currentWay,\r\n EDIT_POS: undefined,\r\n isNew: undefined,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n });\r\n saveTourData(newTourData as TourData);\r\n };\r\n\r\n const currentScene = React.useMemo(() => {\r\n return tourData?.scenes.find((one) => one.id === currentSceneID);\r\n }, [tourData?.scenes, currentSceneID]);\r\n\r\n const sameGroupMaps = React.useMemo(() => {\r\n return tourData!.scenes.filter(\r\n (scn: Scene) =>\r\n scn.id !== currentSceneID && scn.group === currentScene?.group\r\n );\r\n }, [tourData, currentSceneID, currentScene?.group]);\r\n\r\n const otherGroupsMaps = React.useMemo(() => {\r\n return tourData!.scenes.filter(\r\n (scn: Scene) =>\r\n scn.id !== currentSceneID && scn.group !== currentScene?.group\r\n );\r\n }, [tourData, currentSceneID, currentScene?.group]);\r\n\r\n return (\r\n
\r\n

WAYPOINT

\r\n\r\n {currentWay && (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {currentWay.EDIT_POS ? (\r\n getLanguageFile(\"right_panel.save_position\")\r\n ) : (\r\n <>\r\n {getLanguageFile(\"right_panel.edit_position\")} \r\n \r\n )}\r\n \r\n\r\n
\r\n \r\n {currentWay.isNew\r\n ? getLanguageFile(\"right_panel.create_pop\")\r\n : tourIsSaving\r\n ? getLanguageFile(\"generics.saving\")\r\n : getLanguageFile(\"generics.save\")}\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n\r\n }\r\n currentHotspot={currentWay}\r\n tourData={tourData!}\r\n type=\"transition\"\r\n >\r\n \r\n )}\r\n \r\n );\r\n}\r\nexport default WaypointEditing;\r\n\r\nconst dirBtns = [\r\n { d: \"L\", r: -180 },\r\n { d: \"B\", r: 90 },\r\n { d: \"T\", r: -90 },\r\n { d: \"R\", r: 0 },\r\n];\r\n\r\nconst DirButtons = (props: {\r\n currentWay: Hotspot;\r\n onDirectionChange: (dir: String) => Promise;\r\n}) => {\r\n return (\r\n
\r\n {getLanguageFile(\"right_panel.direction\")}\r\n {dirBtns.map((dir: any, index) => (\r\n props.onDirectionChange(dir.d)}\r\n disabled={props.currentWay.dir === dir.d}\r\n >\r\n \r\n \r\n ))}\r\n
\r\n );\r\n};\r\n","// icon:search | Bootstrap https://icons.getbootstrap.com/ | Bootstrap\r\nimport * as React from \"react\";\r\n\r\nfunction PopupExpIcon(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PopupExpIcon;\r\n","import axios from \"axios\";\r\n\r\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\r\n\r\n\r\nimport { create } from \"zustand\";\r\nimport { useJWTStore } from \"../Zustand\";\r\n\r\ntype gptHistoryStoreType = {\r\n history: string[];\r\n setHistory: (string: string) => void;\r\n resetHistory: () => void;\r\n messageHistory: {\r\n role: \"user\" | \"assistant\";\r\n content: string;\r\n error?: Error;\r\n }[];\r\n setMessageHistory: (message: {\r\n role: \"user\" | \"assistant\";\r\n content: string;\r\n image?: string;\r\n error?: Error;\r\n }) => void;\r\n};\r\n\r\nexport const useGptHistoryStore = create()((set) => ({\r\n history: [],\r\n messageHistory: [],\r\n\r\n resetHistory: () => set({ history: [], messageHistory: [] }),\r\n setHistory: (str: string) =>\r\n set((state) => ({ ...state, history: [...state.history!, str] })),\r\n setMessageHistory: (message: {\r\n role: \"user\" | \"assistant\";\r\n content: string;\r\n }) =>\r\n set((state) => ({\r\n ...state,\r\n messageHistory: [...state.messageHistory!, message],\r\n })),\r\n}));\r\n\r\nconst UBI_API_ADDRESS = \"https://ubisiveaifunctions.azurewebsites.net/api/\";\r\n\r\nconst GPT_TOKEN = \"xPG7jMyq4dVxVxknAl0up4AwtYad47moEys9K4FtAiU9AzFufez_jw==\";\r\n\r\nconst VISION_TOKEN = \"qlqBFhLhLMUS3B_GuVp1ku_3Tn3BfVPEfNPYVzxRM9r4AzFuRzCfXg==\";\r\n\r\nconst DALLE_TOKEN = \"h2VOHu_a1pYlBEDkLm5_TNjtZo6GvN6uH_5RE9JrhBy1AzFuGst0Ng==\";\r\nconst ubiAiInstance = axios.create({\r\n baseURL: UBI_API_ADDRESS,\r\n});\r\n\r\nubiAiInstance.interceptors.request.use((config) => {\r\n const { jwt } = useJWTStore.getState()\r\n\r\n if (jwt) {\r\n config.headers.set(\"deeprealityjwt\", jwt);\r\n }\r\n\r\n return config;\r\n});\r\n\r\nexport const useUbiApiChatCompletion = () => {\r\n const { history, setHistory, setMessageHistory } = useGptHistoryStore();\r\n\r\n return useMutation({\r\n mutationKey: [\"UbisiveChatCompletion\"],\r\n\r\n mutationFn: async (prompt: string) => {\r\n if (prompt) {\r\n setHistory(prompt);\r\n\r\n setMessageHistory({ role: \"user\", content: prompt });\r\n\r\n const payload: payload = {\r\n input: prompt,\r\n history: history,\r\n };\r\n\r\n return ubiAiInstance\r\n .request({\r\n url: \"ChatGPT\",\r\n method: \"post\",\r\n data: JSON.stringify(payload),\r\n headers: { \"x-functions-key\": GPT_TOKEN },\r\n })\r\n .then((resp) => {\r\n setHistory(resp.data);\r\n setMessageHistory({ role: \"assistant\", content: resp.data });\r\n\r\n return resp.data;\r\n })\r\n .catch((err) => {\r\n setMessageHistory({\r\n role: \"assistant\",\r\n error: err,\r\n content: \"errore\",\r\n });\r\n throw err;\r\n });\r\n } else throw new Error(\"Missing prompt\");\r\n },\r\n });\r\n};\r\n\r\ntype payload = {\r\n input: string;\r\n history?: string[];\r\n engine?: string;\r\n system?: string;\r\n};\r\n\r\nexport function useUbiVision() {\r\n const { setHistory, setMessageHistory } = useGptHistoryStore();\r\n\r\n return useMutation({\r\n mutationKey: [\"UbisiveVision\"],\r\n mutationFn: async (variables: { image: string; prompt?: string }) => {\r\n setHistory(\"descrivimi cosa vedi\");\r\n setMessageHistory({\r\n role: \"user\",\r\n content: variables.prompt ?? \"Descrivimi cosa vedi\",\r\n image: variables.image,\r\n });\r\n\r\n const payload = {\r\n image: variables.image,\r\n input: variables.prompt ?? \"sapresti riconoscere questo luogo?\",\r\n };\r\n\r\n return ubiAiInstance\r\n .post(\"Vision\", JSON.stringify(payload), {\r\n headers: { \"x-functions-key\": VISION_TOKEN },\r\n })\r\n .then((resp) => {\r\n setHistory(resp.data);\r\n setMessageHistory({ role: \"assistant\", content: resp.data });\r\n return resp.data;\r\n })\r\n .catch((e) => {\r\n throw e;\r\n });\r\n },\r\n });\r\n}\r\n\r\nexport function useDallE() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationKey: [\"UbisiveDallE\"],\r\n\r\n mutationFn: async (variables: {\r\n prompt: string;\r\n numberOfImages?: number;\r\n }) => {\r\n const payload = {\r\n input: variables.prompt,\r\n count: 4,\r\n model: \"dall-e-2\",\r\n // size: \"1024x1024\",\r\n format: \"b64_json\",\r\n };\r\n\r\n console.debug(\"asking dallE \" + variables.prompt);\r\n\r\n return ubiAiInstance\r\n .post(\"DallE\", JSON.stringify(payload), {\r\n headers: {\r\n \"x-functions-key\": DALLE_TOKEN,\r\n },\r\n })\r\n .then((res) => {\r\n let response: string[] = res.data;\r\n\r\n const newResponse = response.map((el) => {\r\n const randIndx = Math.floor(100000000 + Math.random() * 900000000);\r\n return { url: el, index: randIndx };\r\n });\r\n\r\n queryClient.setQueryData(\r\n [\r\n \"DallEResult\",\r\n variables.prompt.toLocaleLowerCase().replace(/\\s/g, \"\"),\r\n ],\r\n newResponse\r\n );\r\n\r\n return newResponse;\r\n });\r\n },\r\n });\r\n}\r\n","import React, { useCallback, useEffect, useState } from \"react\";\r\n\r\n// TYPESCRIPT\r\n\r\nimport { Hotspot, Popup, TourData } from \"../../../Types\";\r\n\r\n// STATE MANAGEMENT\r\n\r\nimport {\r\n useAssetListStore,\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useTourDataStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand.ts\";\r\n\r\n// ICONS\r\n\r\nimport LinkInputIcon from \"../../Icons/LinkInputIcon\";\r\nimport PopupExpIcon from \"../../Icons/PopupExpIcon\";\r\n\r\n// QUERIES\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { UseAssetsQuery, UseSaveTour } from \"../../../api/calls/Queries.ts\";\r\nimport { useGptHistoryStore } from \"../../../api/calls/OpenAi.ts\";\r\n\r\n// GUI\r\n\r\nimport FileSelectorButton from \"../GuiElements/FileSelectorButton.tsx\";\r\nimport SceneDelConfirmPanel from \"../SceneDelConfirmPanel.tsx\";\r\nimport OtherHotspots from \"./OtherHotspots.tsx\";\r\nimport { EditPencil, Trashbin } from \"../../Icons/gui-elements-icons.tsx\";\r\nimport { OPENAIENABLED } from \"../../../App.tsx\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile.ts\";\r\n\r\n// import * as THREE from \"three\";\r\n\r\nfunction PopupEditing(props: { id: any; tourID: number }) {\r\n const { id, tourID } = props;\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { data: images } = UseAssetsQuery(tourID, 2);\r\n\r\n const [currentPop, setCurrentPop] = useState();\r\n const [currentPopContent, setCurrentPopContent] = useState();\r\n\r\n const { tourData } = useTourDataStore();\r\n\r\n const { mutateAsync: saveTourData, isPending: isSavingTour } = UseSaveTour();\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n // const { register, handleSubmit, reset, watch, setValue } = useForm({\r\n // defaultValues: React.useMemo(() => {\r\n // return { ...currentPop, content: currentPopContent };\r\n // }, [currentPop, currentPopContent]),\r\n // });\r\n\r\n //\r\n\r\n //\r\n // React.useEffect(() => {\r\n // reset({ ...currentPop, content: currentPopContent });\r\n // }, [currentPop, currentPopContent, reset]);\r\n //\r\n //\r\n // HOOK FORM\r\n //\r\n //\r\n // const onSubmit = handleSubmit(\r\n // React.useCallback(\r\n // (data) => {\r\n // let popData = data;\r\n // let popContentData = data.content;\r\n\r\n // delete popData.content;\r\n\r\n // const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n // ...tourData,\r\n\r\n // scenes: tourData?.scenes.map((sc) =>\r\n // sc.id === currentSceneID\r\n // ? {\r\n // ...sc,\r\n // hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n // hs.id === id\r\n // ? {\r\n // ...popData,\r\n // target: popContentData!.id,\r\n // EDIT_POS: undefined,\r\n // isNew: undefined,\r\n // }\r\n // : hs\r\n // ),\r\n // }\r\n // : sc\r\n // ),\r\n // popups: tourData!.popups.map((pop) =>\r\n // pop.id === popContentData!.id\r\n // ? {\r\n // ...popContentData,\r\n // type: popContentData!.image\r\n // ? \"image\"\r\n // : popContentData!.video\r\n // ? \"video\"\r\n // : \"text\",\r\n // }\r\n // : pop\r\n // ),\r\n // });\r\n // saveTourData(newTourData as TourData);\r\n // },\r\n // [tourID, tourData, queryClient, currentSceneID, id, saveTourData]\r\n // )\r\n\r\n // );\r\n // const formState = watch();\r\n\r\n useEffect(() => {\r\n if (tourData) {\r\n let temp = tourData!.scenes\r\n .find((one) => one.id === currentSceneID)!\r\n .hotspots.find((one) => one.id === id);\r\n\r\n const popTemp = tourData.popups.find((one) => one.id === id);\r\n\r\n setCurrentPop(temp);\r\n setCurrentPopContent(popTemp);\r\n }\r\n }, [currentSceneID, id, tourData]);\r\n\r\n const handlePosEdit = React.useCallback(async () => {\r\n //\r\n //\r\n // HOOF FORM STUFF\r\n // let popData = formState;\r\n // let popContentData = formState.content;\r\n // delete popData.content;\r\n // setValue(\"EDIT_POS\", currentPop?.EDIT_POS);\r\n\r\n //\r\n\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs) =>\r\n hs.id === currentPop!.id\r\n ? {\r\n ...currentPop,\r\n EDIT_POS: currentPop?.EDIT_POS ? undefined : true,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n // popups: [\r\n // ...tourData!.popups.map((pop) =>\r\n // pop.id === popContentData?.id ? { ...popContentData } : pop\r\n // ),\r\n // ],\r\n });\r\n }, [tourData, queryClient, currentSceneID, tourID, currentPop]);\r\n\r\n const handlePopupUpdate = React.useCallback(async () => {\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n\r\n scenes: tourData?.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs: Hotspot) =>\r\n hs.id === id\r\n ? {\r\n ...currentPop,\r\n target: currentPopContent!.id,\r\n EDIT_POS: undefined,\r\n isNew: undefined,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n popups: tourData!.popups.map((pop) =>\r\n pop.id === currentPopContent!.id\r\n ? {\r\n ...currentPopContent,\r\n type: currentPopContent!.image\r\n ? \"image\"\r\n : currentPopContent!.video\r\n ? \"video\"\r\n : \"text\",\r\n }\r\n : pop\r\n ),\r\n });\r\n saveTourData(newTourData as TourData);\r\n }, [\r\n tourData,\r\n queryClient,\r\n tourID,\r\n currentPopContent,\r\n currentSceneID,\r\n currentPop,\r\n id,\r\n saveTourData,\r\n ]);\r\n\r\n const handleDelete = React.useCallback(async () => {\r\n const tempSceneSpots = tourData!.scenes\r\n .find((one) => one.id === currentSceneID)!\r\n .hotspots.filter((spot) => spot.id !== currentPop!.id);\r\n\r\n const tempScenePops = tourData!.popups.filter(\r\n (pop) => pop.id !== currentPop!.id\r\n );\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene) =>\r\n scene.id === currentSceneID\r\n ? { ...scene, hotspots: tempSceneSpots }\r\n : scene\r\n ),\r\n\r\n popups: tempScenePops,\r\n });\r\n\r\n saveTourData(newTourData as TourData);\r\n setEditingElem(\"scene\", currentSceneID);\r\n }, [\r\n tourData,\r\n currentSceneID,\r\n currentPop,\r\n queryClient,\r\n saveTourData,\r\n tourID,\r\n\r\n setEditingElem,\r\n ]);\r\n\r\n const handleTitleChange = React.useCallback(\r\n (e: React.ChangeEvent) => {\r\n return queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n popups: tourData?.popups.map((pop) =>\r\n pop.id === id ? { ...pop, title: e.target.value } : pop\r\n ),\r\n });\r\n },\r\n [id, queryClient, tourData, tourID]\r\n );\r\n\r\n const handleTextChange = React.useCallback(\r\n (e: React.ChangeEvent) => {\r\n return queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n popups: tourData?.popups.map((pop) =>\r\n pop.id === id ? { ...pop, text: e.target.value } : pop\r\n ),\r\n });\r\n },\r\n [id, queryClient, tourData, tourID]\r\n );\r\n\r\n const handleImageRemove = React.useCallback(() => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n popups: tourData!.popups.map((pop) =>\r\n pop.id === currentPop!.target\r\n ? {\r\n ...currentPopContent,\r\n type: \"text\",\r\n image: undefined,\r\n imageID: undefined,\r\n imageInfo: undefined,\r\n }\r\n : pop\r\n ),\r\n });\r\n }, [queryClient, tourID, tourData, currentPopContent, currentPop]);\r\n\r\n const handleVideoChange = useCallback(\r\n (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n popups: tourData?.popups.map((pop: Popup) =>\r\n pop.id === id ? { ...pop, video: e.target.value } : pop\r\n ),\r\n });\r\n },\r\n [id, queryClient, tourData, tourID]\r\n );\r\n\r\n const { setOpen } = useAssetListStore();\r\n\r\n const shouldConfirmDeletion = React.useMemo(() => {\r\n if (\r\n currentPopContent?.text ||\r\n currentPopContent?.media ||\r\n currentPopContent?.video\r\n )\r\n return true;\r\n else return false;\r\n }, [\r\n currentPopContent?.text,\r\n currentPopContent?.media,\r\n currentPopContent?.video,\r\n ]);\r\n\r\n const [confirmationPanel, setConfirmationPanel] = React.useState(false);\r\n\r\n const widePopup = useWidePopupStore();\r\n\r\n const { isTakingScreenshot, setTakingScreen, setIsOpen } =\r\n useWidePopupStore();\r\n\r\n const { resetHistory } = useGptHistoryStore();\r\n return (\r\n
\r\n {/* \r\n \r\n\r\n \r\n {formState.EDIT_POS ? \"Salva\" : \"Modifica\"} Posizione{\" \"}\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n */}\r\n\r\n {confirmationPanel && (\r\n handleDelete()}\r\n setIsDeletingScene={() => setConfirmationPanel(false)}\r\n >\r\n
{getLanguageFile(\"right_panel.confirm_delete_pop\")}
\r\n \r\n )}\r\n
\r\n {currentPopContent && tourData && (\r\n <>\r\n {\r\n setTakingScreen(false);\r\n setIsOpen(false);\r\n resetHistory();\r\n e.preventDefault();\r\n handlePopupUpdate();\r\n }}\r\n >\r\n \r\n {currentPop && (\r\n \r\n {currentPop?.EDIT_POS ? (\r\n getLanguageFile(\"right_panel.save_position\")\r\n ) : (\r\n <>\r\n {getLanguageFile(\"right_panel.edit_position\")}\r\n \r\n \r\n )}\r\n \r\n )}\r\n\r\n
\r\n

{getLanguageFile(\"right_panel.content\")}

\r\n
\r\n
\r\n \r\n {OPENAIENABLED && (\r\n
\r\n {\r\n widePopup.setIsOpen(\r\n true,\r\n currentPopContent?.id as string\r\n );\r\n }}\r\n disabled={isTakingScreenshot}\r\n >\r\n {/* */}\r\n OpenAi\r\n \r\n
\r\n )}\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n {currentPop?.isNew\r\n ? getLanguageFile(\"right_panel.create_pop\")\r\n : isSavingTour\r\n ? getLanguageFile(\"generics.saving\")\r\n : getLanguageFile(\"generics.save\")}\r\n \r\n\r\n {\r\n setTakingScreen(false);\r\n setIsOpen(false);\r\n resetHistory();\r\n if (shouldConfirmDeletion) setConfirmationPanel(true);\r\n else handleDelete();\r\n }}\r\n type=\"button\"\r\n disabled={isSavingTour}\r\n style={{ flex: 1 }}\r\n >\r\n {currentPop?.isNew ? (\r\n getLanguageFile(\"generics.cancel\")\r\n ) : (\r\n <>\r\n {getLanguageFile(\"generics.delete\")} \r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n )}\r\n
\r\n\r\n }\r\n tourData={tourData!}\r\n type=\"popup\"\r\n >\r\n \r\n );\r\n}\r\n\r\nexport default PopupEditing;\r\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { create } from \"zustand\";\r\nimport { Popup, question } from \"../../Types\";\r\n\r\ntype viewerPopupStoreType = {\r\n isOpen: boolean;\r\n currentPopupContent?: Popup | question;\r\n setPopup: (pop?: Popup) => void;\r\n setQuestion: (question?: question) => void;\r\n id?: string | number;\r\n setOpen: (id: string | number) => void;\r\n setClose: () => void;\r\n\r\n innerPopJSX?: JSX.Element;\r\n setInnerJSX: (jsx?: JSX.Element) => void;\r\n};\r\n\r\nexport const useViewerPopupStore = create()((set) => ({\r\n isOpen: false,\r\n setOpen: (id: string | number) => {\r\n set({ isOpen: true, id: id });\r\n },\r\n setClose: () => {\r\n set({ id: undefined, isOpen: false, currentPopupContent: undefined });\r\n },\r\n setPopup: (pop?: Popup) => set({ currentPopupContent: pop }),\r\n\r\n setQuestion: (question?: question) => set({ currentPopupContent: question }),\r\n\r\n setInnerJSX: (jsx?: JSX.Element) => {\r\n if (jsx) set({ innerPopJSX: jsx });\r\n else set({ innerPopJSX: undefined });\r\n },\r\n}));\r\n\r\n\r\ntype viewerMapStoreType = {\r\n isOpen: boolean;\r\n id?: number;\r\n\r\n setOpen: (id: number) => void;\r\n setClosed: () => void;\r\n};\r\n\r\nexport const useViewerMapStore = create((set, get) => ({\r\n isOpen: false,\r\n setOpen: (id: number) => {\r\n const alreadyOpen = get().isOpen;\r\n\r\n if (alreadyOpen) set({ isOpen: false, id: undefined });\r\n else set({ isOpen: true, id: id });\r\n },\r\n setClosed: () => {\r\n set({ isOpen: false, id: undefined });\r\n },\r\n}));\r\n","import { create } from \"zustand\";\r\nimport { EscapeRoom, TourData } from \"../../../Types\";\r\nimport { useViewerPopupStore } from \"../../../state management/zustand/viewer-stores\";\r\nimport { useTourDataStore } from \"../../../api/Zustand\";\r\n\r\ntype timerStoreType = {\r\n remainingTime: string;\r\n secs: number;\r\n status: { started: boolean; paused?: boolean; ended?: boolean };\r\n setRemainingTime: (timestamp: number) => void;\r\n setTimer: (durationInMins: number) => void;\r\n addSecs: (amount: number) => void;\r\n pauseTimer: (bool: boolean) => void;\r\n};\r\n\r\nexport const useTimerStore = create()((set, get) => ({\r\n remainingTime: \"10:00\",\r\n status: { started: false },\r\n secs: 0,\r\n pauseTimer: (bool: boolean) => {\r\n set((state) => ({ status: { ...state.status, paused: bool } }));\r\n },\r\n setRemainingTime: (timeStamp: number) => {\r\n return;\r\n },\r\n addSecs: (amount: number) => {\r\n const total = get().secs + amount;\r\n\r\n set({ secs: total });\r\n },\r\n\r\n setTimer: (duration: number) => {\r\n let durationInMs = duration * 60 * 1000;\r\n\r\n let diff = durationInMs;\r\n\r\n const endBase = Date.now();\r\n\r\n let end = endBase + diff;\r\n // end = end + secs;\r\n\r\n const interval: NodeJS.Timeout = setInterval(() => {\r\n const isPaused = get().status.paused;\r\n\r\n const now = new Date().getTime();\r\n\r\n if (diff <= 0) {\r\n set({ status: { started: true, ended: true, paused: false } });\r\n return clearInterval(interval);\r\n } else if (!isPaused) {\r\n const secs = get().secs * 1000;\r\n\r\n diff = end + secs - now;\r\n\r\n set({ remainingTime: formatTime(diff) });\r\n } else if (isPaused) {\r\n console.debug(diff);\r\n end = Date.now() + diff;\r\n }\r\n }, 1000);\r\n return interval;\r\n },\r\n}));\r\n\r\nexport function formatTime(time: number): string {\r\n // Hours, minutes and seconds\r\n\r\n time = Math.ceil(time / 1000);\r\n\r\n let mins = ~~((time % 3600) / 60);\r\n let secs = ~~time % 60;\r\n\r\n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\r\n let ret = \"\";\r\n\r\n ret += \"\" + String(mins).padStart(2, \"0\") + \":\" + (secs < 10 ? \"0\" : \"\");\r\n // ret += \"\" + secs;\r\n return ret;\r\n}\r\n\r\nexport function formatSeconds(time: number): string {\r\n // Calculate minutes and seconds\r\n const minutes = Math.floor(time / 60);\r\n const seconds = time % 60;\r\n\r\n // Format the result as MM:SS\r\n return `${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(\r\n 2,\r\n \"0\"\r\n )}`;\r\n}\r\n\r\ntype escapeRoomStoreType = {\r\n type: 0 | 1 | 2 | 3;\r\n escapeRoomData?: EscapeRoom;\r\n setType: (tp?: 0 | 1 | 2 | 3) => void;\r\n setEscapeRoomData: (er?: EscapeRoom) => void;\r\n\r\n lives: number;\r\n reduceLives: () => void;\r\n\r\n points: number;\r\n addPoints: (p: number) => void;\r\n\r\n time: number;\r\n timeLeft: number;\r\n secondsModifier: number;\r\n addSecondToTimer: (n: number) => void;\r\n\r\n started: boolean;\r\n ended: boolean;\r\n startEscapeRoom: () => void;\r\n stopEscapeRoom: () => void;\r\n\r\n answers?: number[];\r\n beenAsnwered?: number[];\r\n setBeenAnswered?: (n: number) => void;\r\n};\r\n\r\nexport const useEscapeRoomDataStore = create()(\r\n (set, get) => ({\r\n type: 0,\r\n\r\n setEscapeRoomData: (er?: EscapeRoom) => {\r\n if (er)\r\n set({\r\n escapeRoomData: er,\r\n type: er.escapeRoomType,\r\n time: er.escapeRoomTime,\r\n points: er.escapeRoomScore,\r\n lives: er.escapeRoomLives,\r\n });\r\n else set({ escapeRoomData: undefined, type: 0 });\r\n },\r\n setType: (tp?: 0 | 1 | 2 | 3) => {\r\n if (tp) set({ type: tp });\r\n else set({ type: 0 });\r\n },\r\n\r\n lives: 0,\r\n reduceLives: () => {\r\n const currLives = get().lives;\r\n if (currLives > 0) set({ lives: currLives - 1 });\r\n else set({ lives: 0 });\r\n },\r\n\r\n points: 0,\r\n addPoints: (p: number) => set({ points: p }),\r\n\r\n time: 0,\r\n timeLeft: 0,\r\n secondsModifier: 0,\r\n addSecondToTimer: (n: number) =>\r\n set({ secondsModifier: get().secondsModifier + n }),\r\n\r\n started: false,\r\n ended: false,\r\n startEscapeRoom: () => {\r\n set({ started: true });\r\n const escapeRoom = get().escapeRoomData;\r\n\r\n if (escapeRoom?.escapeRoomType === 1) {\r\n set({ timeLeft: escapeRoom.escapeRoomTime! * 1000 });\r\n\r\n const endTime =\r\n getRoundedTimestamp() + escapeRoom.escapeRoomTime! * 1000;\r\n\r\n const timer = setInterval(() => {\r\n const now = getRoundedTimestamp();\r\n\r\n const modifier = get().secondsModifier * 1000;\r\n\r\n const diff = endTime + modifier - now;\r\n\r\n if (diff > 0) set({ timeLeft: diff });\r\n else {\r\n set({ ended: true, timeLeft: 0 });\r\n clearInterval(timer);\r\n\r\n const endPopupID = get().escapeRoomData?.endPopupID;\r\n return useViewerPopupStore.setState({\r\n isOpen: true,\r\n id: endPopupID,\r\n });\r\n }\r\n }, 1e3);\r\n return timer;\r\n } else return;\r\n },\r\n\r\n stopEscapeRoom: () => set({ ended: true }),\r\n })\r\n);\r\n\r\nfunction getRoundedTimestamp() {\r\n const now = Date.now();\r\n\r\n return Math.floor(now / 1000) * 1000;\r\n}\r\n\r\ntype mockEscapeRoomStoreType = {\r\n answeredQuestionsInScene: number[];\r\n\r\n hardLockQuestions: (number | undefined)[];\r\n softLockQuestions: (number | undefined)[];\r\n\r\n setRequiredQuestions: (id: number | undefined, tourData: TourData) => void;\r\n whipeRequiredQuestions: () => void;\r\n removeQuestion: (id: number) => void;\r\n answeredQuestions: number[];\r\n answeredCorrectly: number[];\r\n answeredWrongly: number[];\r\n\r\n setAnswered: (questionID: number, correct: boolean) => void;\r\n};\r\n\r\nexport const useMockEscapeRoomStore = create()(\r\n (set, get) => ({\r\n answeredQuestionsInScene: [],\r\n\r\n hardLockQuestions: [],\r\n softLockQuestions: [],\r\n\r\n setRequiredQuestions: (id: number | undefined, tourData: TourData) => {\r\n const { quizData } = tourData;\r\n\r\n const answeredQuestions = get().answeredQuestions;\r\n\r\n if (answeredQuestions.includes(id!)) {\r\n return;\r\n }\r\n\r\n const currentQuestionFLG = quizData?.data.find(\r\n (one) => one.questionId === id\r\n )?.mandatory;\r\n\r\n if (currentQuestionFLG === 1) {\r\n const currentSoftLock = get().softLockQuestions;\r\n const updatedSoftLock = [...new Set([...currentSoftLock, id])];\r\n set({ softLockQuestions: updatedSoftLock });\r\n } else if (currentQuestionFLG === 2) {\r\n const currentHardLock = get().hardLockQuestions;\r\n const updatedHardLock = [...new Set([...currentHardLock, id])];\r\n set({ hardLockQuestions: updatedHardLock });\r\n }\r\n },\r\n\r\n removeQuestion: (id: number) => {\r\n const hardLock = get().hardLockQuestions;\r\n const softLock = get().softLockQuestions;\r\n const answered = get().answeredQuestions;\r\n\r\n const filterHardLock = hardLock.filter((qu) => qu !== id);\r\n const filteredSoftLock = softLock.filter((qu) => qu !== id);\r\n\r\n set({\r\n hardLockQuestions: filterHardLock,\r\n softLockQuestions: filteredSoftLock,\r\n answeredQuestions: [...new Set([...answered, id])],\r\n });\r\n },\r\n\r\n answeredQuestions: [],\r\n\r\n whipeRequiredQuestions: () => {\r\n set({\r\n softLockQuestions: [],\r\n hardLockQuestions: [],\r\n });\r\n },\r\n\r\n answeredCorrectly: [],\r\n answeredWrongly: [],\r\n\r\n setAnswered: (questionID: number, correct: boolean) => {\r\n const currentAnsweredQ = get().answeredQuestionsInScene;\r\n set({ answeredQuestionsInScene: [...currentAnsweredQ, questionID] });\r\n\r\n if (correct === true) {\r\n set({\r\n answeredCorrectly: [\r\n ...new Set([...get().answeredCorrectly, questionID]),\r\n ],\r\n answeredWrongly: [\r\n ...new Set([\r\n ...get().answeredWrongly.filter((one) => one !== questionID),\r\n ]),\r\n ],\r\n });\r\n } else if (correct === false) {\r\n set({\r\n answeredWrongly: [...new Set([...get().answeredWrongly, questionID])],\r\n answeredCorrectly: [\r\n ...new Set([\r\n ...get().answeredCorrectly.filter((one) => one !== questionID),\r\n ]),\r\n ],\r\n });\r\n }\r\n },\r\n })\r\n);\r\n","import {\r\n UseQueryResult,\r\n useMutation,\r\n useQuery,\r\n useQueryClient,\r\n} from \"@tanstack/react-query\";\r\n\r\nimport { axiosInstance } from \"./Axios.ts\";\r\nimport { AxiosError } from \"axios\";\r\nimport { EscapeRoom, TourData, question } from \"../../Types.ts\";\r\nimport { v4 } from \"uuid\";\r\nimport { useEscapeRoomDataStore } from \"../../components/TourViewer/escape-room/zustand.ts\";\r\n\r\nconst sessionGuid = v4();\r\n\r\nexport function useGetTourQuizes(\r\n idTour: number\r\n): UseQueryResult {\r\n return useQuery({\r\n queryKey: [\"GetQuizes\", idTour],\r\n queryFn: async () => {\r\n return axiosInstance\r\n .post(\"Quiz/getQuizList/\", {\r\n idTour: idTour,\r\n })\r\n .then((res) => {\r\n return res.data;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n },\r\n });\r\n}\r\n\r\nexport type QuizListRespDataType = {\r\n data: question[];\r\n escapeRoom: EscapeRoom;\r\n isValid: boolean;\r\n message: string;\r\n success: true;\r\n};\r\n\r\nconst escapeRoomFlagType: 1 | 2 | 0 = 1;\r\n\r\nexport function useGetQuiz(tourID: number | undefined, quizId?: number) {\r\n const queryClient = useQueryClient();\r\n\r\n const { setEscapeRoomData } = useEscapeRoomDataStore();\r\n\r\n return useQuery({\r\n queryKey: [\"GetQuiz\", quizId],\r\n queryFn: async () => {\r\n return await axiosInstance\r\n .get(\"Quiz/getQuiz\", {\r\n params: {\r\n quizId: quizId,\r\n },\r\n })\r\n .then((res: { data: QuizListRespDataType }) => {\r\n const { data } = res;\r\n if (data.data) {\r\n const questions = data.data;\r\n\r\n const editedQuestions = questions.map((qu) => {\r\n return {\r\n ...qu,\r\n mandatory: qu.mandatory ?? escapeRoomFlagType,\r\n };\r\n });\r\n\r\n const editedQuizData = { ...data, data: editedQuestions };\r\n\r\n const updatedTourData = queryClient.setQueryData(\r\n [\"GetTour\", tourID],\r\n (oldData: TourData) =>\r\n oldData\r\n ? {\r\n ...oldData,\r\n quizData: {\r\n // ...oldData.quizData,\r\n\r\n ...editedQuizData,\r\n },\r\n escapeRoomData: undefined,\r\n escapeRoomBackup:\r\n oldData.escapeRoomData || oldData.escapeRoomBackup,\r\n scenes: oldData.scenes.map((sc) => {\r\n return {\r\n ...sc,\r\n hotspots: sc.hotspots?.filter((hs) =>\r\n questions.find(\r\n (one) =>\r\n hs?.type !== \"quiz\" ||\r\n one.questionId === hs.target\r\n )\r\n ),\r\n };\r\n }),\r\n }\r\n : oldData\r\n );\r\n\r\n const { escapeRoomData } = updatedTourData as TourData;\r\n\r\n if (escapeRoomData) {\r\n setEscapeRoomData(escapeRoomData);\r\n }\r\n\r\n // 0 = comportamento attuale,\r\n // 1 = messaggio di warning quando si prova a cambiare panoramica senza aver risposto al quiz,\r\n // 2 = impossibilità di muoversi tra le scene senza aver risposto al quiz\r\n\r\n return data;\r\n } else {\r\n queryClient.setQueryData([\"GetTour\", tourID], (oldData: TourData) =>\r\n oldData\r\n ? {\r\n ...oldData,\r\n quizData: undefined,\r\n scenes: oldData.scenes.map((sc) => {\r\n return {\r\n ...sc,\r\n hotspots: sc.hotspots?.filter(\r\n (hs) => hs?.type !== \"quiz\"\r\n ),\r\n };\r\n }),\r\n }\r\n : oldData\r\n );\r\n\r\n throw new Error(\"no quiz data\");\r\n }\r\n });\r\n },\r\n\r\n enabled: !!quizId,\r\n staleTime: Infinity,\r\n });\r\n}\r\n\r\nexport function useSetAnswer(tourId: number, quizId: number, userId: number) {\r\n return useMutation({\r\n mutationFn: (props: { questionId: number; answerIds: number[] }) =>\r\n setAnswer(tourId, quizId, userId, props.questionId, props.answerIds),\r\n });\r\n}\r\n\r\nconst setAnswer = async (\r\n tourId: number,\r\n quizId: number,\r\n userId: number,\r\n questionId: number,\r\n answerIds: number[]\r\n) => {\r\n const { data } = await axiosInstance.post(\"Quiz/setAnswer\", {\r\n userId: userId,\r\n idTour: tourId,\r\n quizId: quizId,\r\n questionId: questionId,\r\n answerIds: answerIds,\r\n sessionGuid: sessionGuid,\r\n });\r\n\r\n try {\r\n const resp = data.data;\r\n const respData: { CorrectAnswersIds: number[] } = JSON.parse(resp);\r\n const answerIsCorrect =\r\n respData?.CorrectAnswersIds?.filter(Set.prototype.has, new Set(answerIds))\r\n .length > 0;\r\n\r\n const response = {\r\n success: data.success,\r\n answerIsCorrect: answerIsCorrect,\r\n };\r\n\r\n return response;\r\n } catch (err) {\r\n throw err;\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { TourData } from \"../../../Types\";\r\nimport {\r\n UseFormRegister,\r\n UseFormSetValue,\r\n UseFormWatch,\r\n} from \"react-hook-form\";\r\nimport { useGetQuiz, useGetTourQuizes } from \"../../../api/calls/Quiz\";\r\nimport SceneDelConfirmPanel from \"../SceneDelConfirmPanel\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\nimport { useEditingElementStore } from \"../../../api/Zustand\";\r\nimport { formatSeconds } from \"../../TourViewer/escape-room/zustand\";\r\n\r\nfunction QuizSelector(props: {\r\n tourID: number;\r\n tourData: TourData;\r\n formData: TourData;\r\n setValue: UseFormSetValue;\r\n register: UseFormRegister;\r\n watch: UseFormWatch;\r\n}) {\r\n const { tourID, tourData, formData, setValue, register } = props;\r\n const [isChangingQuizData, setIsChanginQuizData] = React.useState<{\r\n open: boolean;\r\n quizId?: number;\r\n }>({ open: false });\r\n const [isRemovingQuizData, setIsRemovingQuizData] = React.useState(false);\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const { quizData: tourQuizData, escapeRoomData } = tourData;\r\n\r\n const {\r\n error: quizListError,\r\n data: quizListData,\r\n isLoading,\r\n } = useGetTourQuizes(tourID);\r\n const {\r\n error: quizError,\r\n isError,\r\n data: quizData,\r\n isLoading: loadingQuizData,\r\n } = useGetQuiz(tourID, tourData.assignedQuizID);\r\n\r\n const removeQuizData = React.useCallback(() => {\r\n setValue(\"assignedQuizID\", undefined, {\r\n shouldDirty: true,\r\n });\r\n setValue(\"quizData\", undefined, { shouldDirty: true });\r\n\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n assignedQuizID: undefined,\r\n quizData: undefined,\r\n scenes: tourData.scenes.map((sc) => {\r\n return {\r\n ...sc,\r\n hotspots: sc.hotspots.filter((ones) => ones.type !== \"quiz\"),\r\n };\r\n }),\r\n });\r\n\r\n return;\r\n }, [setValue, tourID, queryClient, tourData]);\r\n\r\n const changeQuizData = React.useCallback(\r\n (id: number) => {\r\n return queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n\r\n assignedQuizID: id,\r\n scenes: tourData.scenes.map((sc) => {\r\n return {\r\n ...sc,\r\n hotspots: sc.hotspots.filter((ones) => ones.type !== \"quiz\"),\r\n };\r\n }),\r\n });\r\n },\r\n [tourID, queryClient, tourData]\r\n );\r\n\r\n const changingQuizWarning: boolean = React.useMemo(() => {\r\n if (\r\n !!tourData.scenes.find((sc) =>\r\n sc.hotspots.find((one) => one.type === \"quiz\")\r\n )\r\n )\r\n return true;\r\n else return false;\r\n }, [tourData.scenes]);\r\n\r\n return (\r\n
\r\n {isRemovingQuizData && (\r\n {\r\n removeQuizData();\r\n return;\r\n }}\r\n setIsDeletingScene={() => setIsRemovingQuizData(false)}\r\n >\r\n
\r\n {getLanguageFile(\"right_panel.quiz_del_confirm\")}\r\n
\r\n \r\n )}\r\n\r\n {isChangingQuizData.open && (\r\n {\r\n changeQuizData(isChangingQuizData.quizId!);\r\n return;\r\n }}\r\n differentConfirmBtnMessage={getLanguageFile(\"generics.confirm\")}\r\n setIsDeletingScene={() =>\r\n setIsChanginQuizData({ open: false, quizId: undefined })\r\n }\r\n >\r\n
\r\n {getLanguageFile(\"right_panel.quiz_change_confirm\")}\r\n
\r\n \r\n )}\r\n {quizListError?.response?.status === 500 && (\r\n {getLanguageFile(\"right_panel.no_available_quiz\")}\r\n )}\r\n {quizListError ? null : (\r\n <>\r\n {isLoading && (\r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n {tourData.assignedQuizID && (\r\n {\r\n if (changingQuizWarning) setIsRemovingQuizData(true);\r\n else removeQuizData();\r\n }}\r\n >\r\n ✖\r\n \r\n )}\r\n\r\n {quizListData?.data && (\r\n {\r\n if (changingQuizWarning) {\r\n setIsChanginQuizData({\r\n open: true,\r\n quizId: e.target.value,\r\n });\r\n } else changeQuizData(e.target.value);\r\n },\r\n })}\r\n value={tourData.assignedQuizID ?? \"default\"}\r\n >\r\n {!tourData.assignedQuizID || !formData.assignedQuizID ? (\r\n \r\n {getLanguageFile(\"right_panel.quiz_assign\")}\r\n \r\n ) : null}\r\n {quizListData.data.map((quiz: any) => (\r\n \r\n ))}\r\n \r\n )}\r\n
\r\n {tourQuizData && escapeRoomData && (\r\n \r\n )}\r\n {loadingQuizData && getLanguageFile(\"generics.loading\")}\r\n {isError && getLanguageFile(\"right_panel.empty_quiz\")}{\" \"}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default QuizSelector;\r\n\r\nfunction EscapeRoomDetails(props: {\r\n tourData: TourData;\r\n tourID: number;\r\n setValue: UseFormSetValue;\r\n register: UseFormRegister;\r\n watch: UseFormWatch;\r\n}) {\r\n const { escapeRoomData } = props.tourData;\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const generatePopups = React.useCallback(() => {\r\n const startID = Math.floor(Math.random() * 10000000000);\r\n const endID = Math.floor(Math.random() * 10000000000);\r\n\r\n return queryClient.setQueryData(\r\n [\"GetTour\", props.tourID],\r\n (oldData: TourData) =>\r\n oldData\r\n ? {\r\n ...oldData,\r\n\r\n popups: [\r\n ...oldData.popups,\r\n { id: startID, text: \"prova inizio\", type: \"text\" },\r\n { id: endID, text: \"prova fine\", type: \"text\" },\r\n ],\r\n escapeRoomData: {\r\n ...oldData.escapeRoomData,\r\n startPopupID: startID,\r\n endPopupID: endID,\r\n },\r\n }\r\n : oldData\r\n );\r\n }, [queryClient, props.tourID]);\r\n\r\n const updatedEscapeRoomData = props.watch(\"escapeRoomData\");\r\n\r\n return (\r\n \r\n
\r\n

{getLanguageFile(\"right_panel.er_type_selector\")}

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {updatedEscapeRoomData?.escapeRoomType === 1 ? (\r\n
\r\n

{getLanguageFile(\"right_panel.er_duration_input\")}

\r\n
\r\n \r\n\r\n

{formatSeconds(updatedEscapeRoomData?.escapeRoomTime || 0)}

\r\n
\r\n
\r\n ) : updatedEscapeRoomData?.escapeRoomType === 2 ? (\r\n
\r\n ) : updatedEscapeRoomData?.escapeRoomType === 3 ? (\r\n
\r\n {getLanguageFile(\"right_panel.er_max_lives\")}\r\n \r\n
\r\n ) : null}\r\n
\r\n\r\n {!escapeRoomData?.startPopupID && (\r\n \r\n )}\r\n {escapeRoomData?.startPopupID && (\r\n \r\n setEditingElem(\"escapeRoomPops\", escapeRoomData.startPopupID!)\r\n }\r\n >\r\n Edit start\r\n \r\n )}\r\n {escapeRoomData?.endPopupID && (\r\n \r\n setEditingElem(\"escapeRoomPops\", escapeRoomData.endPopupID!)\r\n }\r\n >\r\n Edit end\r\n \r\n )}\r\n <>\r\n \r\n );\r\n}\r\n\r\n// \r\n \r\n\r\n \r\n\r\n
\r\n

\r\n {getLanguageFile(\"right_panel.quiz\")}\r\n

\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n reset(tourData)}\r\n >\r\n {getLanguageFile(\"generics.cancel\")}\r\n \r\n
\r\n \r\n {/* \r\n
\r\n \r\n {\r\n setOpen(2);\r\n }}\r\n >\r\n {displayedImageTitle}\r\n \r\n\r\n {hasImage && (\r\n \r\n ✖\r\n \r\n )}\r\n
\r\n\r\n {getLanguageFile(\"right_panel.video\")}\r\n\r\n \r\n\r\n
\r\n \r\n\r\n {\r\n reset({ ...defaulStartPopup, id: currentPop?.id });\r\n }}\r\n >\r\n Reset\r\n \r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EscapeRoomPopupsEditor;\r\n\r\nexport const defaulStartPopup: Popup = {\r\n id: \"\",\r\n media: undefined,\r\n image: undefined,\r\n imageID: undefined,\r\n imageName: undefined,\r\n video: undefined,\r\n title: \"sample\",\r\n text: \"rules\",\r\n type: \"image\",\r\n};\r\n","export default \"div.right-side-panel-editor form {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 1rem;\\r\\n}\\r\\n\";","import { useEditingElementStore, useParametersStore } from \"../../api/Zustand\";\r\nimport { useRightSidePanelStore } from \"../../state management/zustand/editor-elements-stores\";\r\n\r\n// Right side panel inner components\r\nimport SceneEditing from \"./RightSidePanel/SceneEditing\";\r\nimport LinkEditing from \"./RightSidePanel/LinkEditing\";\r\nimport WaypointEditing from \"./RightSidePanel/WaypointEditing\";\r\nimport PopupEditing from \"./RightSidePanel/PopupEditing\";\r\nimport TourInfoEditing from \"./RightSidePanel/TourInfoEditing\";\r\nimport GroupsEditing from \"./RightSidePanel/GroupsEditing\";\r\nimport QuizEditing from \"./RightSidePanel/QuizEditing\";\r\nimport AudioPopupEditing from \"./RightSidePanel/AudioPopupEditing\";\r\nimport WaypointExpIcon from \"../Icons/WaypointExpIcon\";\r\nimport { getLanguageFile } from \"../common/GetLanguageFile\";\r\nimport EscapeRoomPopupsEditor from \"./escape-room/EscapeRoomPopupsEditor\";\r\n\r\nfunction RightSidePanel() {\r\n const { tourID } = useParametersStore();\r\n\r\n const { type, id } = useEditingElementStore();\r\n\r\n const rightPanel = useRightSidePanelStore();\r\n\r\n return (\r\n {\r\n if (!rightPanel.isOpen) rightPanel.setOpen(true);\r\n }}\r\n >\r\n \r\n {rightPanel.isOpen && (\r\n
\r\n {\r\n rightPanel.setOpen(false);\r\n }}\r\n id=\"close-panel\"\r\n >\r\n {getLanguageFile(\"generics.close\")}\r\n \r\n \r\n\r\n {type === \"scene\" ? (\r\n \r\n ) : type === \"link\" ? (\r\n \r\n ) : type === \"transition\" ? (\r\n \r\n ) : type === \"popup\" ? (\r\n \r\n ) : type === \"groups\" ? (\r\n \r\n ) : type === \"quiz\" ? (\r\n \r\n ) : type === \"audio\" ? (\r\n \r\n ) : type === \"escapeRoomPops\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default RightSidePanel;\r\n","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = useReducer((c) => c + 1, 0);\n const state = api.getState();\n const stateRef = useRef(state);\n const selectorRef = useRef(selector);\n const equalityFnRef = useRef(equalityFn);\n const erroredRef = useRef(false);\n const currentSliceRef = useRef();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = useRef(state);\n useIsomorphicLayoutEffect(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n useDebugValue(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\nexport { create as default };\n","const isPromise = promise => typeof promise === 'object' && typeof promise.then === 'function';\n\nconst globalCache = [];\n\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n if (arrA === arrB) return true;\n if (!arrA || !arrB) return false;\n const len = arrA.length;\n if (arrB.length !== len) return false;\n\n for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n return true;\n}\n\nfunction query(fn, keys = null, preload = false, config = {}) {\n // If no keys were given, the function is the key\n if (keys === null) keys = [fn];\n\n for (const entry of globalCache) {\n // Find a match\n if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n // If we're pre-loading and the element is present, just return\n if (preload) return undefined; // If an error occurred, throw\n\n if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n if (Object.prototype.hasOwnProperty.call(entry, 'response')) {\n if (config.lifespan && config.lifespan > 0) {\n if (entry.timeout) clearTimeout(entry.timeout);\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n\n return entry.response;\n } // If the promise is still unresolved, throw\n\n\n if (!preload) throw entry.promise;\n }\n } // The request is new or has changed.\n\n\n const entry = {\n keys,\n equal: config.equal,\n remove: () => {\n const index = globalCache.indexOf(entry);\n if (index !== -1) globalCache.splice(index, 1);\n },\n promise: // Execute the promise\n (isPromise(fn) ? fn : fn(...keys) // When it resolves, store its value\n ).then(response => {\n entry.response = response; // Remove the entry in time if a lifespan was given\n\n if (config.lifespan && config.lifespan > 0) {\n entry.timeout = setTimeout(entry.remove, config.lifespan);\n }\n }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n .catch(error => entry.error = error)\n }; // Register the entry\n\n globalCache.push(entry); // And throw the promise, this yields control back to React\n\n if (!preload) throw entry.promise;\n return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n var _globalCache$find;\n\n return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n if (entry) entry.remove();\n }\n};\n\nexport { clear, peek, preload, suspend };\n","import * as THREE from 'three';\nimport * as React from 'react';\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from 'react-reconciler/constants';\nimport create from 'zustand';\nimport Reconciler from 'react-reconciler';\nimport { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';\nimport { suspend, preload, clear } from 'suspend-react';\nimport { jsx, Fragment } from 'react/jsx-runtime';\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst catalogue = {};\nconst extend = objects => void Object.assign(catalogue, objects);\nfunction createRenderer(_roots, _getEventPriority) {\n function createInstance(type, {\n args = [],\n attach,\n ...props\n }, root) {\n let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n let instance;\n if (type === 'primitive') {\n if (props.object === undefined) throw new Error(\"R3F: Primitives without 'object' are invalid!\");\n const object = props.object;\n instance = prepare(object, {\n type,\n root,\n attach,\n primitive: true\n });\n } else {\n const target = catalogue[name];\n if (!target) {\n throw new Error(`R3F: ${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);\n }\n\n // Throw if an object or literal was passed for args\n if (!Array.isArray(args)) throw new Error('R3F: The args prop must be an array!');\n\n // Instanciate new object, link it to the root\n // Append memoized props with args so it's not forgotten\n instance = prepare(new target(...args), {\n type,\n root,\n attach,\n // Save args in case we need to reconstruct later for HMR\n memoizedProps: {\n args\n }\n });\n }\n\n // Auto-attach geometries and materials\n if (instance.__r3f.attach === undefined) {\n if (instance instanceof THREE.BufferGeometry) instance.__r3f.attach = 'geometry';else if (instance instanceof THREE.Material) instance.__r3f.attach = 'material';\n }\n\n // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"true\" here\n // There is no reason to apply props to injects\n if (name !== 'inject') applyProps$1(instance, props);\n return instance;\n }\n function appendChild(parentInstance, child) {\n let added = false;\n if (child) {\n var _child$__r3f, _parentInstance$__r3f;\n // The attach attribute implies that the object attaches itself on the parent\n if ((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) {\n attach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n // add in the usual parent-child way\n parentInstance.add(child);\n added = true;\n }\n // This is for anything that used attach, and for non-Object3Ds that don't get attached to props;\n // that is, anything that's a child in React but not a child in the scenegraph.\n if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n function insertBefore(parentInstance, child, beforeChild) {\n let added = false;\n if (child) {\n var _child$__r3f2, _parentInstance$__r3f2;\n if ((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) {\n attach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\n });\n parentInstance.dispatchEvent({\n type: 'childadded',\n child\n });\n const restSiblings = parentInstance.children.filter(sibling => sibling !== child);\n const index = restSiblings.indexOf(beforeChild);\n parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n added = true;\n }\n if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n if (!child.__r3f) prepare(child, {});\n child.__r3f.parent = parentInstance;\n updateInstance(child);\n invalidateInstance(child);\n }\n }\n function removeRecursive(array, parent, dispose = false) {\n if (array) [...array].forEach(child => removeChild(parent, child, dispose));\n }\n function removeChild(parentInstance, child, dispose) {\n if (child) {\n var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n // Clear the parent reference\n if (child.__r3f) child.__r3f.parent = null;\n // Remove child from the parents objects\n if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter(x => x !== child);\n // Remove attachment\n if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n detach(parentInstance, child, child.__r3f.attach);\n } else if (child.isObject3D && parentInstance.isObject3D) {\n var _child$__r3f4;\n parentInstance.remove(child);\n // @ts-expect-error\n // Remove interactivity on the initial root\n if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n removeInteractivity(findInitialRoot(child), child);\n }\n }\n\n // Allow objects to bail out of recursive dispose altogether by passing dispose={null}\n // Never dispose of primitives because their state may be kept outside of React!\n // In order for an object to be able to dispose it has to have\n // - a dispose method,\n // - it cannot be a \n // - it cannot be a THREE.Scene, because three has broken it's own api\n //\n // Since disposal is recursive, we can check the optional dispose arg, which will be undefined\n // when the reconciler calls it, but then carry our own check recursively\n const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n const shouldDispose = !isPrimitive && (dispose === undefined ? child.dispose !== null : dispose);\n\n // Remove nested child objects. Primitives should not have objects and children that are\n // attached to them declaratively ...\n if (!isPrimitive) {\n var _child$__r3f6;\n removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n removeRecursive(child.children, child, shouldDispose);\n }\n\n // Remove references\n delete child.__r3f;\n\n // Dispose item whenever the reconciler feels like it\n if (shouldDispose && child.dispose && child.type !== 'Scene') {\n const callback = () => {\n try {\n child.dispose();\n } catch (e) {\n /* ... */\n }\n };\n\n // Schedule async at runtime, flush sync in testing\n if (typeof IS_REACT_ACT_ENVIRONMENT === 'undefined') {\n unstable_scheduleCallback(unstable_IdlePriority, callback);\n } else {\n callback();\n }\n }\n invalidateInstance(parentInstance);\n }\n }\n function switchInstance(instance, type, newProps, fiber) {\n var _instance$__r3f;\n const parent = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parent;\n if (!parent) return;\n const newInstance = createInstance(type, newProps, instance.__r3f.root);\n\n // https://github.com/pmndrs/react-three-fiber/issues/1348\n // When args change the instance has to be re-constructed, which then\n // forces r3f to re-parent the children and non-scene objects\n if (instance.children) {\n for (const child of instance.children) {\n if (child.__r3f) appendChild(newInstance, child);\n }\n instance.children = instance.children.filter(child => !child.__r3f);\n }\n instance.__r3f.objects.forEach(child => appendChild(newInstance, child));\n instance.__r3f.objects = [];\n if (!instance.__r3f.autoRemovedBeforeAppend) {\n removeChild(parent, instance);\n }\n if (newInstance.parent) {\n newInstance.__r3f.autoRemovedBeforeAppend = true;\n }\n appendChild(parent, newInstance);\n\n // Re-bind event handlers on the initial root\n if (newInstance.raycast && newInstance.__r3f.eventCount) {\n const rootState = findInitialRoot(newInstance).getState();\n rootState.internal.interaction.push(newInstance);\n }\n [fiber, fiber.alternate].forEach(fiber => {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n if (fiber.ref) {\n if (typeof fiber.ref === 'function') fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n }\n\n // Don't handle text instances, warn on undefined behavior\n const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');\n const reconciler = Reconciler({\n createInstance,\n removeChild,\n appendChild,\n appendInitialChild: appendChild,\n insertBefore,\n supportsMutation: true,\n isPrimaryRenderer: false,\n supportsPersistence: false,\n supportsHydration: false,\n noTimeout: -1,\n appendChildToContainer: (container, child) => {\n if (!child) return;\n\n // Don't append to unmounted container\n const scene = container.getState().scene;\n if (!scene.__r3f) return;\n\n // Link current root to the default scene\n scene.__r3f.root = container;\n appendChild(scene, child);\n },\n removeChildFromContainer: (container, child) => {\n if (!child) return;\n removeChild(container.getState().scene, child);\n },\n insertInContainerBefore: (container, child, beforeChild) => {\n if (!child || !beforeChild) return;\n\n // Don't append to unmounted container\n const scene = container.getState().scene;\n if (!scene.__r3f) return;\n insertBefore(scene, child, beforeChild);\n },\n getRootHostContext: () => null,\n getChildHostContext: parentHostContext => parentHostContext,\n finalizeInitialChildren(instance) {\n var _instance$__r3f2;\n const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {};\n // https://github.com/facebook/react/issues/20271\n // Returning true will trigger commitMount\n return Boolean(localState.handlers);\n },\n prepareUpdate(instance, _type, oldProps, newProps) {\n var _instance$__r3f3;\n const localState = (_instance$__r3f3 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f3 : {};\n\n // Create diff-sets\n if (localState.primitive && newProps.object && newProps.object !== instance) {\n return [true];\n } else {\n // This is a data object, let's extract critical information about it\n const {\n args: argsNew = [],\n children: cN,\n ...restNew\n } = newProps;\n const {\n args: argsOld = [],\n children: cO,\n ...restOld\n } = oldProps;\n\n // Throw if an object or literal was passed for args\n if (!Array.isArray(argsNew)) throw new Error('R3F: the args prop must be an array!');\n\n // If it has new props or arguments, then it needs to be re-instantiated\n if (argsNew.some((value, index) => value !== argsOld[index])) return [true];\n // Create a diff-set, flag if there are any changes\n const diff = diffProps(instance, restNew, restOld, true);\n if (diff.changes.length) return [false, diff];\n\n // Otherwise do not touch the instance\n return null;\n }\n },\n commitUpdate(instance, [reconstruct, diff], type, _oldProps, newProps, fiber) {\n // Reconstruct when args or instance,\n prepareForCommit: () => null,\n preparePortalMount: container => prepare(container.getState().scene),\n resetAfterCommit: () => {},\n shouldSetTextContent: () => false,\n clearContainer: () => false,\n hideInstance(instance) {\n var _instance$__r3f5;\n // Detach while the instance is hidden\n const {\n attach: type,\n parent\n } = (_instance$__r3f5 = instance.__r3f) != null ? _instance$__r3f5 : {};\n if (type && parent) detach(parent, instance, type);\n if (instance.isObject3D) instance.visible = false;\n invalidateInstance(instance);\n },\n unhideInstance(instance, props) {\n var _instance$__r3f6;\n // Re-attach when the instance is unhidden\n const {\n attach: type,\n parent\n } = (_instance$__r3f6 = instance.__r3f) != null ? _instance$__r3f6 : {};\n if (type && parent) attach(parent, instance, type);\n if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n invalidateInstance(instance);\n },\n createTextInstance: handleTextInstance,\n hideTextInstance: handleTextInstance,\n unhideTextInstance: handleTextInstance,\n // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n // @ts-expect-error\n getCurrentEventPriority: () => _getEventPriority ? _getEventPriority() : DefaultEventPriority,\n beforeActiveInstanceBlur: () => {},\n afterActiveInstanceBlur: () => {},\n detachDeletedInstance: () => {},\n now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : () => 0,\n // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined\n });\n return {\n reconciler,\n applyProps: applyProps$1\n };\n}\n\nvar _window$document, _window$navigator;\n/**\r\n * Returns `true` with correct TS type inference if an object has a configurable color space (since r152).\r\n */\nconst hasColorSpace = object => 'colorSpace' in object || 'outputColorSpace' in object;\n/**\r\n * The current THREE.ColorManagement instance, if present.\r\n */\nconst getColorManagement = () => {\n var _ColorManagement;\n return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n};\nconst isOrthographicCamera = def => def && def.isOrthographicCamera;\nconst isRef = obj => obj && obj.hasOwnProperty('current');\n\n/**\r\n * An SSR-friendly useLayoutEffect.\r\n *\r\n * React currently throws a warning when using useLayoutEffect on the server.\r\n * To get around it, we can conditionally useEffect on the server (no-op) and\r\n * useLayoutEffect elsewhere.\r\n *\r\n * @see https://github.com/facebook/react/issues/14927\r\n */\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === 'ReactNative') ? React.useLayoutEffect : React.useEffect;\nfunction useMutableCallback(fn) {\n const ref = React.useRef(fn);\n useIsomorphicLayoutEffect(() => void (ref.current = fn), [fn]);\n return ref;\n}\nfunction Block({\n set\n}) {\n useIsomorphicLayoutEffect(() => {\n set(new Promise(() => null));\n return () => set(false);\n }, [set]);\n return null;\n}\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.state = {\n error: false\n };\n }\n componentDidCatch(err) {\n this.props.set(err);\n }\n render() {\n return this.state.error ? null : this.props.children;\n }\n}\nErrorBoundary.getDerivedStateFromError = () => ({\n error: true\n});\nconst DEFAULT = '__default';\nconst DEFAULTS = new Map();\nconst isDiffSet = def => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n var _window$devicePixelRa;\n // Err on the side of progress by assuming 2x dpr if we can't detect it\n // This will happen in workers where window is defined but dpr isn't.\n const target = typeof window !== 'undefined' ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;\n}\n\n/**\r\n * Returns instance root state\r\n */\nconst getRootState = obj => {\n var _r3f;\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\n\n/**\r\n * Returns the instances initial (outmost) root\r\n */\nfunction findInitialRoot(child) {\n let root = child.__r3f.root;\n while (root.getState().previousRoot) root = root.getState().previousRoot;\n return root;\n}\n// A collection of compare functions\nconst is = {\n obj: a => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n boo: a => typeof a === 'boolean',\n und: a => a === void 0,\n arr: a => Array.isArray(a),\n equ(a, b, {\n arrays = 'shallow',\n objects = 'reference',\n strict = true\n } = {}) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false;\n // Atomic, just compare a against b\n if (is.str(a) || is.num(a) || is.boo(a)) return a === b;\n const isObj = is.obj(a);\n if (isObj && objects === 'reference') return a === b;\n const isArr = is.arr(a);\n if (isArr && arrays === 'reference') return a === b;\n // Array or Object, shallow compare first to see if it's a match\n if ((isArr || isObj) && a === b) return true;\n // Last resort, go through keys\n let i;\n // Check if a has all the keys of b\n for (i in a) if (!(i in b)) return false;\n // Check if values between keys match\n if (isObj && arrays === 'shallow' && objects === 'shallow') {\n for (i in strict ? b : a) if (!is.equ(a[i], b[i], {\n strict,\n objects: 'reference'\n })) return false;\n } else {\n for (i in strict ? b : a) if (a[i] !== b[i]) return false;\n }\n // If i is undefined\n if (is.und(i)) {\n // If both arrays are empty we consider them equal\n if (isArr && a.length === 0 && b.length === 0) return true;\n // If both objects are empty we consider them equal\n if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n // Otherwise match them by value\n if (a !== b) return false;\n }\n return true;\n }\n};\n\n/**\r\n * Collects nodes and materials from a THREE.Object3D.\r\n */\nfunction buildGraph(object) {\n const data = {\n nodes: {},\n materials: {}\n };\n if (object) {\n object.traverse(obj => {\n if (obj.name) data.nodes[obj.name] = obj;\n if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n });\n }\n return data;\n}\n\n// Disposes an object and all its properties\nfunction dispose(obj) {\n if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n for (const p in obj) {\n p.dispose == null ? void 0 : p.dispose();\n delete obj[p];\n }\n}\n\n// Each object in the scene carries a small LocalState descriptor\nfunction prepare(object, state) {\n const instance = object;\n instance.__r3f = {\n type: '',\n root: null,\n previousAttach: null,\n memoizedProps: {},\n eventCount: 0,\n handlers: {},\n objects: [],\n parent: null,\n ...state\n };\n return object;\n}\nfunction resolve(instance, key) {\n let target = instance;\n if (key.includes('-')) {\n const entries = key.split('-');\n const last = entries.pop();\n target = entries.reduce((acc, key) => acc[key], instance);\n return {\n target,\n key: last\n };\n } else return {\n target,\n key\n };\n}\n\n// Checks if a dash-cased string ends with an integer\nconst INDEX_REGEX = /-\\d+$/;\nfunction attach(parent, child, type) {\n if (is.str(type)) {\n // If attaching into an array (foo-0), create one\n if (INDEX_REGEX.test(type)) {\n const root = type.replace(INDEX_REGEX, '');\n const {\n target,\n key\n } = resolve(parent, root);\n if (!Array.isArray(target[key])) target[key] = [];\n }\n const {\n target,\n key\n } = resolve(parent, type);\n child.__r3f.previousAttach = target[key];\n target[key] = child;\n } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n var _child$__r3f, _child$__r3f2;\n if (is.str(type)) {\n const {\n target,\n key\n } = resolve(parent, type);\n const previous = child.__r3f.previousAttach;\n // When the previous value was undefined, it means the value was never set to begin with\n if (previous === undefined) delete target[key];\n // Otherwise set the previous value\n else target[key] = previous;\n } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n}\n// This function prepares a set of changes to be applied to the instance\nfunction diffProps(instance, {\n children: cN,\n key: kN,\n ref: rN,\n ...props\n}, {\n children: cP,\n key: kP,\n ref: rP,\n ...previous\n} = {}, remove = false) {\n const localState = instance.__r3f;\n const entries = Object.entries(props);\n const changes = [];\n\n // Catch removed props, prepend them so they can be reset or removed\n if (remove) {\n const previousKeys = Object.keys(previous);\n for (let i = 0; i < previousKeys.length; i++) {\n if (!props.hasOwnProperty(previousKeys[i])) entries.unshift([previousKeys[i], DEFAULT + 'remove']);\n }\n }\n entries.forEach(([key, value]) => {\n var _instance$__r3f;\n // Bail out on primitive object\n if ((_instance$__r3f = instance.__r3f) != null && _instance$__r3f.primitive && key === 'object') return;\n // When props match bail out\n if (is.equ(value, previous[key])) return;\n // Collect handlers and bail out\n if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]);\n // Split dashed props\n let entries = [];\n if (key.includes('-')) entries = key.split('-');\n changes.push([key, value, false, entries]);\n\n // Reset pierced props\n for (const prop in props) {\n const value = props[prop];\n if (prop.startsWith(`${key}-`)) changes.push([prop, value, false, prop.split('-')]);\n }\n });\n const memoized = {\n ...props\n };\n if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n return {\n memoized,\n changes\n };\n}\nconst __DEV__ = typeof process !== 'undefined' && process.env.NODE_ENV !== 'production';\n\n// This function applies a set of changes to the instance\nfunction applyProps$1(instance, data) {\n var _instance$__r3f2;\n // Filter equals, events and reserved props\n const localState = instance.__r3f;\n const root = localState == null ? void 0 : localState.root;\n const rootState = root == null ? void 0 : root.getState == null ? void 0 : root.getState();\n const {\n memoized,\n changes\n } = isDiffSet(data) ? data : diffProps(instance, data);\n const prevHandlers = localState == null ? void 0 : localState.eventCount;\n\n // Prepare memoized props\n if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n for (let i = 0; i < changes.length; i++) {\n let [key, value, isEvent, keys] = changes[i];\n\n // Alias (output)encoding => (output)colorSpace (since r152)\n // https://github.com/pmndrs/react-three-fiber/pull/2829\n if (hasColorSpace(instance)) {\n const sRGBEncoding = 3001;\n const SRGBColorSpace = 'srgb';\n const LinearSRGBColorSpace = 'srgb-linear';\n if (key === 'encoding') {\n key = 'colorSpace';\n value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n } else if (key === 'outputEncoding') {\n key = 'outputColorSpace';\n value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n }\n }\n let currentInstance = instance;\n let targetProp = currentInstance[key];\n\n // Revolve dashed props\n if (keys.length) {\n targetProp = keys.reduce((acc, key) => acc[key], instance);\n // If the target is atomic, it forces us to switch the root\n if (!(targetProp && targetProp.set)) {\n const [name, ...reverseEntries] = keys.reverse();\n currentInstance = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n key = name;\n }\n }\n\n // https://github.com/mrdoob/three.js/issues/21209\n // HMR/fast-refresh relies on the ability to cancel out props, but threejs\n // has no means to do this. Hence we curate a small collection of value-classes\n // with their respective constructor/set arguments\n // For removed props, try to set default values, if possible\n if (value === DEFAULT + 'remove') {\n if (currentInstance.constructor) {\n // create a blank slate of the instance and copy the particular parameter.\n let ctor = DEFAULTS.get(currentInstance.constructor);\n if (!ctor) {\n // @ts-expect-error\n ctor = new currentInstance.constructor();\n DEFAULTS.set(currentInstance.constructor, ctor);\n }\n value = ctor[key];\n } else {\n // instance does not have constructor, just set it to 0\n value = 0;\n }\n }\n\n // Deal with pointer events ...\n if (isEvent && localState) {\n if (value) localState.handlers[key] = value;else delete localState.handlers[key];\n localState.eventCount = Object.keys(localState.handlers).length;\n }\n // Special treatment for objects with support for set/copy, and layers\n else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {\n // If value is an array\n if (Array.isArray(value)) {\n if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);\n }\n // Test again target.copy(class) next ...\n else if (targetProp.copy && value && value.constructor && (\n // Some environments may break strict identity checks by duplicating versions of three.js.\n // Loosen to unminified names, ignoring descendents.\n // https://github.com/pmndrs/react-three-fiber/issues/2856\n // TODO: fix upstream and remove in v9\n __DEV__ ? targetProp.constructor.name === value.constructor.name : targetProp.constructor === value.constructor)) {\n targetProp.copy(value);\n }\n // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/pmndrs/react-three-fiber/issues/274\n else if (value !== undefined) {\n const isColor = targetProp instanceof THREE.Color;\n // Allow setting array scalars\n if (!isColor && targetProp.setScalar) targetProp.setScalar(value);\n // Layers have no copy function, we must therefore copy the mask property\n else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask;\n // Otherwise just set ...\n else targetProp.set(value);\n // For versions of three which don't support THREE.ColorManagement,\n // Auto-convert sRGB colors\n // https://github.com/pmndrs/react-three-fiber/issues/344\n if (!getColorManagement() && rootState && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n }\n // Else, just overwrite the value\n } else {\n currentInstance[key] = value;\n\n // Auto-convert sRGB textures, for now ...\n // https://github.com/pmndrs/react-three-fiber/issues/344\n if (currentInstance[key] instanceof THREE.Texture &&\n // sRGB textures must be RGBA8 since r137 https://github.com/mrdoob/three.js/pull/23129\n currentInstance[key].format === THREE.RGBAFormat && currentInstance[key].type === THREE.UnsignedByteType && rootState) {\n const texture = currentInstance[key];\n if (hasColorSpace(texture) && hasColorSpace(rootState.gl)) texture.colorSpace = rootState.gl.outputColorSpace;else texture.encoding = rootState.gl.outputEncoding;\n }\n }\n invalidateInstance(instance);\n }\n if (localState && localState.parent && instance.raycast && prevHandlers !== localState.eventCount) {\n // Get the initial root state's internals\n const internal = findInitialRoot(instance).getState().internal;\n // Pre-emptively remove the instance from the interaction manager\n const index = internal.interaction.indexOf(instance);\n if (index > -1) internal.interaction.splice(index, 1);\n // Add the instance to the interaction manager only when it has handlers\n if (localState.eventCount) internal.interaction.push(instance);\n }\n\n // Call the update lifecycle when it is being updated, but only when it is part of the scene.\n // Skip updates to the `onUpdate` prop itself\n const isCircular = changes.length === 1 && changes[0][0] === 'onUpdate';\n if (!isCircular && changes.length && (_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.parent) updateInstance(instance);\n return instance;\n}\nfunction invalidateInstance(instance) {\n var _instance$__r3f3, _instance$__r3f3$root;\n const state = (_instance$__r3f3 = instance.__r3f) == null ? void 0 : (_instance$__r3f3$root = _instance$__r3f3.root) == null ? void 0 : _instance$__r3f3$root.getState == null ? void 0 : _instance$__r3f3$root.getState();\n if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n // https://github.com/pmndrs/react-three-fiber/issues/92\n // Do not mess with the camera if it belongs to the user\n if (!camera.manual) {\n if (isOrthographicCamera(camera)) {\n camera.left = size.width / -2;\n camera.right = size.width / 2;\n camera.top = size.height / 2;\n camera.bottom = size.height / -2;\n } else {\n camera.aspect = size.width / size.height;\n }\n camera.updateProjectionMatrix();\n // https://github.com/pmndrs/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n camera.updateMatrixWorld();\n }\n}\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n}\n\n// https://github.com/facebook/react/tree/main/packages/react-reconciler#getcurrenteventpriority\n// Gives React a clue as to how import the current interaction is\nfunction getEventPriority() {\n var _globalScope$event;\n // Get a handle to the current global scope in window and worker contexts if able\n // https://github.com/pmndrs/react-three-fiber/pull/2493\n const globalScope = typeof self !== 'undefined' && self || typeof window !== 'undefined' && window;\n if (!globalScope) return DefaultEventPriority;\n const name = (_globalScope$event = globalScope.event) == null ? void 0 : _globalScope$event.type;\n switch (name) {\n case 'click':\n case 'contextmenu':\n case 'dblclick':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointerup':\n return DiscreteEventPriority;\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'pointerenter':\n case 'pointerleave':\n case 'wheel':\n return ContinuousEventPriority;\n default:\n return DefaultEventPriority;\n }\n}\n\n/**\r\n * Release pointer captures.\r\n * This is called by releasePointerCapture in the API, and when an object is removed.\r\n */\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n const captureData = captures.get(obj);\n if (captureData) {\n captures.delete(obj);\n // If this was the last capturing object for this pointer\n if (captures.size === 0) {\n capturedMap.delete(pointerId);\n captureData.target.releasePointerCapture(pointerId);\n }\n }\n}\nfunction removeInteractivity(store, object) {\n const {\n internal\n } = store.getState();\n // Removes every trace of an object from the data store\n internal.interaction = internal.interaction.filter(o => o !== object);\n internal.initialHits = internal.initialHits.filter(o => o !== object);\n internal.hovered.forEach((value, key) => {\n if (value.eventObject === object || value.object === object) {\n // Clear out intersects, they are outdated by now\n internal.hovered.delete(key);\n }\n });\n internal.capturedMap.forEach((captures, pointerId) => {\n releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n });\n}\nfunction createEvents(store) {\n /** Calculates delta */\n function calculateDistance(event) {\n const {\n internal\n } = store.getState();\n const dx = event.offsetX - internal.initialClick[0];\n const dy = event.offsetY - internal.initialClick[1];\n return Math.round(Math.sqrt(dx * dx + dy * dy));\n }\n\n /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n function filterPointerEvents(objects) {\n return objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => {\n var _r3f;\n return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers['onPointer' + name];\n }));\n }\n function intersect(event, filter) {\n const state = store.getState();\n const duplicates = new Set();\n const intersections = [];\n // Allow callers to eliminate event objects\n const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction;\n // Reset all raycaster cameras to undefined\n for (let i = 0; i < eventsObjects.length; i++) {\n const state = getRootState(eventsObjects[i]);\n if (state) {\n state.raycaster.camera = undefined;\n }\n }\n if (!state.previousRoot) {\n // Make sure root-level pointer and ray are set up\n state.events.compute == null ? void 0 : state.events.compute(event, state);\n }\n function handleRaycast(obj) {\n const state = getRootState(obj);\n // Skip event handling when noEvents is set, or when the raycasters camera is null\n if (!state || !state.events.enabled || state.raycaster.camera === null) return [];\n\n // When the camera is undefined we have to call the event layers update function\n if (state.raycaster.camera === undefined) {\n var _state$previousRoot;\n state.events.compute == null ? void 0 : state.events.compute(event, state, (_state$previousRoot = state.previousRoot) == null ? void 0 : _state$previousRoot.getState());\n // If the camera is still undefined we have to skip this layer entirely\n if (state.raycaster.camera === undefined) state.raycaster.camera = null;\n }\n\n // Intersect object by object\n return state.raycaster.camera ? state.raycaster.intersectObject(obj, true) : [];\n }\n\n // Collect events\n let hits = eventsObjects\n // Intersect objects\n .flatMap(handleRaycast)\n // Sort by event priority and distance\n .sort((a, b) => {\n const aState = getRootState(a.object);\n const bState = getRootState(b.object);\n if (!aState || !bState) return a.distance - b.distance;\n return bState.events.priority - aState.events.priority || a.distance - b.distance;\n })\n // Filter out duplicates\n .filter(item => {\n const id = makeId(item);\n if (duplicates.has(id)) return false;\n duplicates.add(id);\n return true;\n });\n\n // https://github.com/mrdoob/three.js/issues/16031\n // Allow custom userland intersect sort order, this likely only makes sense on the root filter\n if (state.events.filter) hits = state.events.filter(hits, state);\n\n // Bubble up the events, find the event source (eventObject)\n for (const hit of hits) {\n let eventObject = hit.object;\n // Bubble event up\n while (eventObject) {\n var _r3f2;\n if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({\n ...hit,\n eventObject\n });\n eventObject = eventObject.parent;\n }\n }\n\n // If the interaction is captured, make all capturing targets part of the intersect.\n if ('pointerId' in event && state.internal.capturedMap.has(event.pointerId)) {\n for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n if (!duplicates.has(makeId(captureData.intersection))) intersections.push(captureData.intersection);\n }\n }\n return intersections;\n }\n\n /** Handles intersections by forwarding them to handlers */\n function handleIntersects(intersections, event, delta, callback) {\n const rootState = store.getState();\n\n // If anything has been found, forward it to the event listeners\n if (intersections.length) {\n const localState = {\n stopped: false\n };\n for (const hit of intersections) {\n const state = getRootState(hit.object) || rootState;\n const {\n raycaster,\n pointer,\n camera,\n internal\n } = state;\n const unprojectedPoint = new THREE.Vector3(pointer.x, pointer.y, 0).unproject(camera);\n const hasPointerCapture = id => {\n var _internal$capturedMap, _internal$capturedMap2;\n return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n };\n const setPointerCapture = id => {\n const captureData = {\n intersection: hit,\n target: event.target\n };\n if (internal.capturedMap.has(id)) {\n // if the pointerId was previously captured, we add the hit to the\n // event capturedMap.\n internal.capturedMap.get(id).set(hit.eventObject, captureData);\n } else {\n // if the pointerId was not previously captured, we create a map\n // containing the hitObject, and the hit. hitObject is used for\n // faster access.\n internal.capturedMap.set(id, new Map([[hit.eventObject, captureData]]));\n }\n event.target.setPointerCapture(id);\n };\n const releasePointerCapture = id => {\n const captures = internal.capturedMap.get(id);\n if (captures) {\n releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n }\n };\n\n // Add native event props\n let extractEventProps = {};\n // This iterates over the event's properties including the inherited ones. Native PointerEvents have most of their props as getters which are inherited, but polyfilled PointerEvents have them all as their own properties (i.e. not inherited). We can't use Object.keys() or Object.entries() as they only return \"own\" properties; nor Object.getPrototypeOf(event) as that *doesn't* return \"own\" properties, only inherited ones.\n for (let prop in event) {\n let property = event[prop];\n // Only copy over atomics, leave functions alone as these should be\n // called as event.nativeEvent.fn()\n if (typeof property !== 'function') extractEventProps[prop] = property;\n }\n let raycastEvent = {\n ...hit,\n ...extractEventProps,\n pointer,\n intersections,\n stopped: localState.stopped,\n delta,\n unprojectedPoint,\n ray: raycaster.ray,\n camera: camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation() {\n // https://github.com/pmndrs/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId);\n\n // We only authorize stopPropagation...\n if (\n // ...if this pointer hasn't been captured\n !capturesForPointer ||\n // ... or if the hit object is capturing the pointer\n capturesForPointer.has(hit.eventObject)) {\n raycastEvent.stopped = localState.stopped = true;\n // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n if (internal.hovered.size && Array.from(internal.hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n // Objects cannot flush out higher up objects that have already caught the event\n const higher = intersections.slice(0, intersections.indexOf(hit));\n cancelPointer([...higher, hit]);\n }\n }\n },\n // there should be a distinction between target and currentTarget\n target: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n currentTarget: {\n hasPointerCapture,\n setPointerCapture,\n releasePointerCapture\n },\n nativeEvent: event\n };\n\n // Call subscribers\n callback(raycastEvent);\n // Event bubbling may be interrupted by stopPropagation\n if (localState.stopped === true) break;\n }\n }\n return intersections;\n }\n function cancelPointer(intersections) {\n const {\n internal\n } = store.getState();\n for (const hoveredObj of internal.hovered.values()) {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (!intersections.length || !intersections.find(hit => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n const eventObject = hoveredObj.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers;\n internal.hovered.delete(makeId(hoveredObj));\n if (instance != null && instance.eventCount) {\n // Clear out intersects, they are outdated by now\n const data = {\n ...hoveredObj,\n intersections\n };\n handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n }\n }\n }\n }\n function pointerMissed(event, objects) {\n for (let i = 0; i < objects.length; i++) {\n const instance = objects[i].__r3f;\n instance == null ? void 0 : instance.handlers.onPointerMissed == null ? void 0 : instance.handlers.onPointerMissed(event);\n }\n }\n function handlePointer(name) {\n // Deal with cancelation\n switch (name) {\n case 'onPointerLeave':\n case 'onPointerCancel':\n return () => cancelPointer([]);\n case 'onLostPointerCapture':\n return event => {\n const {\n internal\n } = store.getState();\n if ('pointerId' in event && internal.capturedMap.has(event.pointerId)) {\n // If the object event interface had onLostPointerCapture, we'd call it here on every\n // object that's getting removed. We call it on the next frame because onLostPointerCapture\n // fires before onPointerUp. Otherwise pointerUp would never be called if the event didn't\n // happen in the object it originated from, leaving components in a in-between state.\n requestAnimationFrame(() => {\n // Only release if pointer-up didn't do it already\n if (internal.capturedMap.has(event.pointerId)) {\n internal.capturedMap.delete(event.pointerId);\n cancelPointer([]);\n }\n });\n }\n };\n }\n\n // Any other pointer goes here ...\n return function handleEvent(event) {\n const {\n onPointerMissed,\n internal\n } = store.getState();\n\n // prepareRay(event)\n internal.lastEvent.current = event;\n\n // Get fresh intersects\n const isPointerMove = name === 'onPointerMove';\n const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick';\n const filter = isPointerMove ? filterPointerEvents : undefined;\n const hits = intersect(event, filter);\n const delta = isClickEvent ? calculateDistance(event) : 0;\n\n // Save initial coordinates on pointer-down\n if (name === 'onPointerDown') {\n internal.initialClick = [event.offsetX, event.offsetY];\n internal.initialHits = hits.map(hit => hit.eventObject);\n }\n\n // If a click yields no results, pass it back to the user as a miss\n // Missed events have to come first in order to establish user-land side-effect clean up\n if (isClickEvent && !hits.length) {\n if (delta <= 2) {\n pointerMissed(event, internal.interaction);\n if (onPointerMissed) onPointerMissed(event);\n }\n }\n // Take care of unhover\n if (isPointerMove) cancelPointer(hits);\n function onIntersect(data) {\n const eventObject = data.eventObject;\n const instance = eventObject.__r3f;\n const handlers = instance == null ? void 0 : instance.handlers;\n\n // Check presence of handlers\n if (!(instance != null && instance.eventCount)) return;\n\n /*\r\n MAYBE TODO, DELETE IF NOT: \r\n Check if the object is captured, captured events should not have intersects running in parallel\r\n But wouldn't it be better to just replace capturedMap with a single entry?\r\n Also, are we OK with straight up making picking up multiple objects impossible?\r\n \r\n const pointerId = (data as ThreeEvent).pointerId \r\n if (pointerId !== undefined) {\r\n const capturedMeshSet = internal.capturedMap.get(pointerId)\r\n if (capturedMeshSet) {\r\n const captured = capturedMeshSet.get(eventObject)\r\n if (captured && captured.localState.stopped) return\r\n }\r\n }*/\n\n if (isPointerMove) {\n // Move event ...\n if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n // When enter or out is present take care of hover-state\n const id = makeId(data);\n const hoveredItem = internal.hovered.get(id);\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\n internal.hovered.set(id, data);\n handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n } else if (hoveredItem.stopped) {\n // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n }\n // Call mouse move\n handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n } else {\n // All other events ...\n const handler = handlers[name];\n if (handler) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n // Missed events have to come first\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n // Now call the handler\n handler(data);\n }\n } else {\n // Trigger onPointerMissed on all elements that have pointer over/out handlers, but not click and weren't hit\n if (isClickEvent && internal.initialHits.includes(eventObject)) {\n pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n }\n }\n }\n }\n handleIntersects(hits, event, delta, onIntersect);\n };\n }\n return {\n handlePointer\n };\n}\n\n// Keys that shouldn't be copied between R3F stores\nconst privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];\nconst isRenderer = def => !!(def != null && def.render);\nconst context = /*#__PURE__*/React.createContext(null);\nconst createStore = (invalidate, advance) => {\n const rootState = create((set, get) => {\n const position = new THREE.Vector3();\n const defaultTarget = new THREE.Vector3();\n const tempTarget = new THREE.Vector3();\n function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n const {\n width,\n height,\n top,\n left\n } = size;\n const aspect = width / height;\n if (target instanceof THREE.Vector3) tempTarget.copy(target);else tempTarget.set(...target);\n const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n if (isOrthographicCamera(camera)) {\n return {\n width: width / camera.zoom,\n height: height / camera.zoom,\n top,\n left,\n factor: 1,\n distance,\n aspect\n };\n } else {\n const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n const h = 2 * Math.tan(fov / 2) * distance; // visible height\n const w = h * (width / height);\n return {\n width: w,\n height: h,\n top,\n left,\n factor: width / w,\n distance,\n aspect\n };\n }\n }\n let performanceTimeout = undefined;\n const setPerformanceCurrent = current => set(state => ({\n performance: {\n ...state.performance,\n current\n }\n }));\n const pointer = new THREE.Vector2();\n const rootState = {\n set,\n get,\n // Mock objects that have to be configured\n gl: null,\n camera: null,\n raycaster: null,\n events: {\n priority: 1,\n enabled: true,\n connected: false\n },\n xr: null,\n scene: null,\n invalidate: (frames = 1) => invalidate(get(), frames),\n advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),\n legacy: false,\n linear: false,\n flat: false,\n controls: null,\n clock: new THREE.Clock(),\n pointer,\n mouse: pointer,\n frameloop: 'always',\n onPointerMissed: undefined,\n performance: {\n current: 1,\n min: 0.5,\n max: 1,\n debounce: 200,\n regress: () => {\n const state = get();\n // Clear timeout\n if (performanceTimeout) clearTimeout(performanceTimeout);\n // Set lower bound performance\n if (state.performance.current !== state.performance.min) setPerformanceCurrent(state.performance.min);\n // Go back to upper bound performance after a while unless something regresses meanwhile\n performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state.performance.debounce);\n }\n },\n size: {\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n updateStyle: false\n },\n viewport: {\n initialDpr: 0,\n dpr: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n aspect: 0,\n distance: 0,\n factor: 0,\n getCurrentViewport\n },\n setEvents: events => set(state => ({\n ...state,\n events: {\n ...state.events,\n ...events\n }\n })),\n setSize: (width, height, updateStyle, top, left) => {\n const camera = get().camera;\n const size = {\n width,\n height,\n top: top || 0,\n left: left || 0,\n updateStyle\n };\n set(state => ({\n size,\n viewport: {\n ...state.viewport,\n ...getCurrentViewport(camera, defaultTarget, size)\n }\n }));\n },\n setDpr: dpr => set(state => {\n const resolved = calculateDpr(dpr);\n return {\n viewport: {\n ...state.viewport,\n dpr: resolved,\n initialDpr: state.viewport.initialDpr || resolved\n }\n };\n }),\n setFrameloop: (frameloop = 'always') => {\n const clock = get().clock;\n\n // if frameloop === \"never\" clock.elapsedTime is updated using advance(timestamp)\n clock.stop();\n clock.elapsedTime = 0;\n if (frameloop !== 'never') {\n clock.start();\n clock.elapsedTime = 0;\n }\n set(() => ({\n frameloop\n }));\n },\n previousRoot: undefined,\n internal: {\n active: false,\n priority: 0,\n frames: 0,\n lastEvent: /*#__PURE__*/React.createRef(),\n interaction: [],\n hovered: new Map(),\n subscribers: [],\n initialClick: [0, 0],\n initialHits: [],\n capturedMap: new Map(),\n subscribe: (ref, priority, store) => {\n const internal = get().internal;\n // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive there can be no internal rendering at all\n // because there could be multiple render subscriptions\n internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n internal.subscribers.push({\n ref,\n priority,\n store\n });\n // Register subscriber and sort layers from lowest to highest, meaning,\n // highest priority renders last (on top of the other frames)\n internal.subscribers = internal.subscribers.sort((a, b) => a.priority - b.priority);\n return () => {\n const internal = get().internal;\n if (internal != null && internal.subscribers) {\n // Decrease manual flag if this subscription had a priority\n internal.priority = internal.priority - (priority > 0 ? 1 : 0);\n // Remove subscriber from list\n internal.subscribers = internal.subscribers.filter(s => s.ref !== ref);\n }\n };\n }\n }\n };\n return rootState;\n });\n const state = rootState.getState();\n let oldSize = state.size;\n let oldDpr = state.viewport.dpr;\n let oldCamera = state.camera;\n rootState.subscribe(() => {\n const {\n camera,\n size,\n viewport,\n gl,\n set\n } = rootState.getState();\n\n // Resize camera and renderer on changes to size and pixelratio\n if (size.width !== oldSize.width || size.height !== oldSize.height || viewport.dpr !== oldDpr) {\n var _size$updateStyle;\n oldSize = size;\n oldDpr = viewport.dpr;\n // Update camera & renderer\n updateCamera(camera, size);\n gl.setPixelRatio(viewport.dpr);\n const updateStyle = (_size$updateStyle = size.updateStyle) != null ? _size$updateStyle : typeof HTMLCanvasElement !== 'undefined' && gl.domElement instanceof HTMLCanvasElement;\n gl.setSize(size.width, size.height, updateStyle);\n }\n\n // Update viewport once the camera changes\n if (camera !== oldCamera) {\n oldCamera = camera;\n // Update viewport\n set(state => ({\n viewport: {\n ...state.viewport,\n ...state.viewport.getCurrentViewport(camera)\n }\n }));\n }\n });\n\n // Invalidate on any change\n rootState.subscribe(state => invalidate(state));\n\n // Return root state\n return rootState;\n};\n\nfunction createSubs(callback, subs) {\n const sub = {\n callback\n };\n subs.add(sub);\n return () => void subs.delete(sub);\n}\nlet i;\nlet globalEffects = new Set();\nlet globalAfterEffects = new Set();\nlet globalTailEffects = new Set();\n\n/**\r\n * Adds a global render callback which is called each frame.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addEffect\r\n */\nconst addEffect = callback => createSubs(callback, globalEffects);\n\n/**\r\n * Adds a global after-render callback which is called each frame.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addAfterEffect\r\n */\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\n\n/**\r\n * Adds a global callback which is called when rendering stops.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addTail\r\n */\nconst addTail = callback => createSubs(callback, globalTailEffects);\nfunction run(effects, timestamp) {\n if (!effects.size) return;\n for (const {\n callback\n } of effects.values()) {\n callback(timestamp);\n }\n}\nfunction flushGlobalEffects(type, timestamp) {\n switch (type) {\n case 'before':\n return run(globalEffects, timestamp);\n case 'after':\n return run(globalAfterEffects, timestamp);\n case 'tail':\n return run(globalTailEffects, timestamp);\n }\n}\nlet subscribers;\nlet subscription;\nfunction render$1(timestamp, state, frame) {\n // Run local effects\n let delta = state.clock.getDelta();\n // In frameloop='never' mode, clock times are updated using the provided timestamp\n if (state.frameloop === 'never' && typeof timestamp === 'number') {\n delta = timestamp - state.clock.elapsedTime;\n state.clock.oldTime = state.clock.elapsedTime;\n state.clock.elapsedTime = timestamp;\n }\n // Call subscribers (useFrame)\n subscribers = state.internal.subscribers;\n for (i = 0; i < subscribers.length; i++) {\n subscription = subscribers[i];\n subscription.ref.current(subscription.store.getState(), delta, frame);\n }\n // Render content\n if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera);\n // Decrease frame count\n state.internal.frames = Math.max(0, state.internal.frames - 1);\n return state.frameloop === 'always' ? 1 : state.internal.frames;\n}\nfunction createLoop(roots) {\n let running = false;\n let useFrameInProgress = false;\n let repeat;\n let frame;\n let state;\n function loop(timestamp) {\n frame = requestAnimationFrame(loop);\n running = true;\n repeat = 0;\n\n // Run effects\n flushGlobalEffects('before', timestamp);\n\n // Render all roots\n useFrameInProgress = true;\n for (const root of roots.values()) {\n var _state$gl$xr;\n state = root.store.getState();\n // If the frameloop is invalidated, do not run another frame\n if (state.internal.active && (state.frameloop === 'always' || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n repeat += render$1(timestamp, state);\n }\n }\n useFrameInProgress = false;\n\n // Run after-effects\n flushGlobalEffects('after', timestamp);\n\n // Stop the loop if nothing invalidates it\n if (repeat === 0) {\n // Tail call effects, they are called when rendering stops\n flushGlobalEffects('tail', timestamp);\n\n // Flag end of operation\n running = false;\n return cancelAnimationFrame(frame);\n }\n }\n function invalidate(state, frames = 1) {\n var _state$gl$xr2;\n if (!state) return roots.forEach(root => invalidate(root.store.getState(), frames));\n if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return;\n if (frames > 1) {\n // legacy support for people using frames parameters\n // Increase frames, do not go higher than 60\n state.internal.frames = Math.min(60, state.internal.frames + frames);\n } else {\n if (useFrameInProgress) {\n //called from within a useFrame, it means the user wants an additional frame\n state.internal.frames = 2;\n } else {\n //the user need a new frame, no need to increment further than 1\n state.internal.frames = 1;\n }\n }\n\n // If the render-loop isn't active, start it\n if (!running) {\n running = true;\n requestAnimationFrame(loop);\n }\n }\n function advance(timestamp, runGlobalEffects = true, state, frame) {\n if (runGlobalEffects) flushGlobalEffects('before', timestamp);\n if (!state) for (const root of roots.values()) render$1(timestamp, root.store.getState());else render$1(timestamp, state, frame);\n if (runGlobalEffects) flushGlobalEffects('after', timestamp);\n }\n return {\n loop,\n invalidate,\n advance\n };\n}\n\n/**\r\n * Exposes an object's {@link LocalState}.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle\r\n *\r\n * **Note**: this is an escape hatch to react-internal fields. Expect this to change significantly between versions.\r\n */\nfunction useInstanceHandle(ref) {\n const instance = React.useRef(null);\n useIsomorphicLayoutEffect(() => void (instance.current = ref.current.__r3f), [ref]);\n return instance;\n}\nfunction useStore() {\n const store = React.useContext(context);\n if (!store) throw new Error('R3F: Hooks can only be used within the Canvas component!');\n return store;\n}\n\n/**\r\n * Accesses R3F's internal state, containing renderer, canvas, scene, etc.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree\r\n */\nfunction useThree(selector = state => state, equalityFn) {\n return useStore()(selector, equalityFn);\n}\n\n/**\r\n * Executes a callback before render in a shared frame loop.\r\n * Can order effects with render priority or manually render with a positive priority.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe\r\n */\nfunction useFrame(callback, renderPriority = 0) {\n const store = useStore();\n const subscribe = store.getState().internal.subscribe;\n // Memoize ref\n const ref = useMutableCallback(callback);\n // Subscribe on mount, unsubscribe on unmount\n useIsomorphicLayoutEffect(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n return null;\n}\n\n/**\r\n * Returns a node graph of an object with named nodes & materials.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usegraph\r\n */\nfunction useGraph(object) {\n return React.useMemo(() => buildGraph(object), [object]);\n}\nconst memoizedLoaders = new WeakMap();\nfunction loadingFn(extensions, onProgress) {\n return function (Proto, ...input) {\n // Construct new loader and run extensions\n let loader = memoizedLoaders.get(Proto);\n if (!loader) {\n loader = new Proto();\n memoizedLoaders.set(Proto, loader);\n }\n if (extensions) extensions(loader);\n // Go through the urls and load them\n return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n if (data.scene) Object.assign(data, buildGraph(data.scene));\n res(data);\n }, onProgress, error => reject(new Error(`Could not load ${input}: ${error == null ? void 0 : error.message}`))))));\n };\n}\n/**\r\n * Synchronously loads and caches assets with a three loader.\r\n *\r\n * Note: this hook's caller must be wrapped with `React.Suspense`\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useloader\r\n */\nfunction useLoader(Proto, input, extensions, onProgress) {\n // Use suspense to load async assets\n const keys = Array.isArray(input) ? input : [input];\n const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys], {\n equal: is.equ\n });\n // Return the object/s\n return Array.isArray(input) ? results : results[0];\n}\n\n/**\r\n * Preloads an asset into cache as a side-effect.\r\n */\nuseLoader.preload = function (Proto, input, extensions) {\n const keys = Array.isArray(input) ? input : [input];\n return preload(loadingFn(extensions), [Proto, ...keys]);\n};\n\n/**\r\n * Removes a loaded asset from cache.\r\n */\nuseLoader.clear = function (Proto, input) {\n const keys = Array.isArray(input) ? input : [input];\n return clear([Proto, ...keys]);\n};\n\nconst roots = new Map();\nconst {\n invalidate,\n advance\n} = createLoop(roots);\nconst {\n reconciler,\n applyProps\n} = createRenderer(roots, getEventPriority);\nconst shallowLoose = {\n objects: 'shallow',\n strict: false\n};\nconst createRendererInstance = (gl, canvas) => {\n const customRenderer = typeof gl === 'function' ? gl(canvas) : gl;\n if (isRenderer(customRenderer)) return customRenderer;else return new THREE.WebGLRenderer({\n powerPreference: 'high-performance',\n canvas: canvas,\n antialias: true,\n alpha: true,\n ...gl\n });\n};\nfunction computeInitialSize(canvas, defaultSize) {\n const defaultStyle = typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement;\n if (defaultSize) {\n const {\n width,\n height,\n top,\n left,\n updateStyle = defaultStyle\n } = defaultSize;\n return {\n width,\n height,\n top,\n left,\n updateStyle\n };\n } else if (typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement && canvas.parentElement) {\n const {\n width,\n height,\n top,\n left\n } = canvas.parentElement.getBoundingClientRect();\n return {\n width,\n height,\n top,\n left,\n updateStyle: defaultStyle\n };\n } else if (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return {\n width: canvas.width,\n height: canvas.height,\n top: 0,\n left: 0,\n updateStyle: defaultStyle\n };\n }\n return {\n width: 0,\n height: 0,\n top: 0,\n left: 0\n };\n}\nfunction createRoot(canvas) {\n // Check against mistaken use of createRoot\n const prevRoot = roots.get(canvas);\n const prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n const prevStore = prevRoot == null ? void 0 : prevRoot.store;\n if (prevRoot) console.warn('R3F.createRoot should only be called once!');\n\n // Report when an error was detected in a previous render\n // https://github.com/pmndrs/react-three-fiber/pull/2261\n const logRecoverableError = typeof reportError === 'function' ?\n // In modern browsers, reportError will dispatch an error event,\n // emulating an uncaught JavaScript error.\n reportError :\n // In older browsers and test environments, fallback to console.error.\n console.error;\n\n // Create store\n const store = prevStore || createStore(invalidate, advance);\n // Create renderer\n const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, '', logRecoverableError, null);\n // Map it\n if (!prevRoot) roots.set(canvas, {\n fiber,\n store\n });\n\n // Locals\n let onCreated;\n let configured = false;\n let lastCamera;\n return {\n configure(props = {}) {\n let {\n gl: glConfig,\n size: propsSize,\n scene: sceneOptions,\n events,\n onCreated: onCreatedCallback,\n shadows = false,\n linear = false,\n flat = false,\n legacy = false,\n orthographic = false,\n frameloop = 'always',\n dpr = [1, 2],\n performance,\n raycaster: raycastOptions,\n camera: cameraOptions,\n onPointerMissed\n } = props;\n let state = store.getState();\n\n // Set up renderer (one time only!)\n let gl = state.gl;\n if (!state.gl) state.set({\n gl: gl = createRendererInstance(glConfig, canvas)\n });\n\n // Set up raycaster (one time only!)\n let raycaster = state.raycaster;\n if (!raycaster) state.set({\n raycaster: raycaster = new THREE.Raycaster()\n });\n\n // Set raycaster options\n const {\n params,\n ...options\n } = raycastOptions || {};\n if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, {\n ...options\n });\n if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n params: {\n ...raycaster.params,\n ...params\n }\n });\n\n // Create default camera, don't overwrite any user-set state\n if (!state.camera || state.camera === lastCamera && !is.equ(lastCamera, cameraOptions, shallowLoose)) {\n lastCamera = cameraOptions;\n const isCamera = cameraOptions instanceof THREE.Camera;\n const camera = isCamera ? cameraOptions : orthographic ? new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new THREE.PerspectiveCamera(75, 0, 0.1, 1000);\n if (!isCamera) {\n camera.position.z = 5;\n if (cameraOptions) {\n applyProps(camera, cameraOptions);\n // Preserve user-defined frustum if possible\n // https://github.com/pmndrs/react-three-fiber/issues/3160\n if ('aspect' in cameraOptions || 'left' in cameraOptions || 'right' in cameraOptions || 'bottom' in cameraOptions || 'top' in cameraOptions) {\n camera.manual = true;\n camera.updateProjectionMatrix();\n }\n }\n // Always look at center by default\n if (!state.camera && !(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n }\n state.set({\n camera\n });\n\n // Configure raycaster\n // https://github.com/pmndrs/react-xr/issues/300\n raycaster.camera = camera;\n }\n\n // Set up scene (one time only!)\n if (!state.scene) {\n let scene;\n if (sceneOptions instanceof THREE.Scene) {\n scene = sceneOptions;\n } else {\n scene = new THREE.Scene();\n if (sceneOptions) applyProps(scene, sceneOptions);\n }\n state.set({\n scene: prepare(scene)\n });\n }\n\n // Set up XR (one time only!)\n if (!state.xr) {\n var _gl$xr;\n // Handle frame behavior in WebXR\n const handleXRFrame = (timestamp, frame) => {\n const state = store.getState();\n if (state.frameloop === 'never') return;\n advance(timestamp, true, state, frame);\n };\n\n // Toggle render switching on session\n const handleSessionChange = () => {\n const state = store.getState();\n state.gl.xr.enabled = state.gl.xr.isPresenting;\n state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);\n if (!state.gl.xr.isPresenting) invalidate(state);\n };\n\n // WebXR session manager\n const xr = {\n connect() {\n const gl = store.getState().gl;\n gl.xr.addEventListener('sessionstart', handleSessionChange);\n gl.xr.addEventListener('sessionend', handleSessionChange);\n },\n disconnect() {\n const gl = store.getState().gl;\n gl.xr.removeEventListener('sessionstart', handleSessionChange);\n gl.xr.removeEventListener('sessionend', handleSessionChange);\n }\n };\n\n // Subscribe to WebXR session events\n if (typeof ((_gl$xr = gl.xr) == null ? void 0 : _gl$xr.addEventListener) === 'function') xr.connect();\n state.set({\n xr\n });\n }\n\n // Set shadowmap\n if (gl.shadowMap) {\n const oldEnabled = gl.shadowMap.enabled;\n const oldType = gl.shadowMap.type;\n gl.shadowMap.enabled = !!shadows;\n if (is.boo(shadows)) {\n gl.shadowMap.type = THREE.PCFSoftShadowMap;\n } else if (is.str(shadows)) {\n var _types$shadows;\n const types = {\n basic: THREE.BasicShadowMap,\n percentage: THREE.PCFShadowMap,\n soft: THREE.PCFSoftShadowMap,\n variance: THREE.VSMShadowMap\n };\n gl.shadowMap.type = (_types$shadows = types[shadows]) != null ? _types$shadows : THREE.PCFSoftShadowMap;\n } else if (is.obj(shadows)) {\n Object.assign(gl.shadowMap, shadows);\n }\n if (oldEnabled !== gl.shadowMap.enabled || oldType !== gl.shadowMap.type) gl.shadowMap.needsUpdate = true;\n }\n\n // Safely set color management if available.\n // Avoid accessing THREE.ColorManagement to play nice with older versions\n const ColorManagement = getColorManagement();\n if (ColorManagement) {\n if ('enabled' in ColorManagement) ColorManagement.enabled = !legacy;else if ('legacyMode' in ColorManagement) ColorManagement.legacyMode = legacy;\n }\n if (!configured) {\n // Set color space and tonemapping preferences, once\n const LinearEncoding = 3000;\n const sRGBEncoding = 3001;\n applyProps(gl, {\n outputEncoding: linear ? LinearEncoding : sRGBEncoding,\n toneMapping: flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping\n });\n }\n\n // Update color management state\n if (state.legacy !== legacy) state.set(() => ({\n legacy\n }));\n if (state.linear !== linear) state.set(() => ({\n linear\n }));\n if (state.flat !== flat) state.set(() => ({\n flat\n }));\n\n // Set gl props\n if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig);\n // Store events internally\n if (events && !state.events.handlers) state.set({\n events: events(store)\n });\n // Check size, allow it to take on container bounds initially\n const size = computeInitialSize(canvas, propsSize);\n if (!is.equ(size, state.size, shallowLoose)) {\n state.setSize(size.width, size.height, size.updateStyle, size.top, size.left);\n }\n // Check pixelratio\n if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr);\n // Check frameloop\n if (state.frameloop !== frameloop) state.setFrameloop(frameloop);\n // Check pointer missed\n if (!state.onPointerMissed) state.set({\n onPointerMissed\n });\n // Check performance\n if (performance && !is.equ(performance, state.performance, shallowLoose)) state.set(state => ({\n performance: {\n ...state.performance,\n ...performance\n }\n }));\n\n // Set locals\n onCreated = onCreatedCallback;\n configured = true;\n return this;\n },\n render(children) {\n // The root has to be configured before it can be rendered\n if (!configured) this.configure();\n reconciler.updateContainer( /*#__PURE__*/jsx(Provider, {\n store: store,\n children: children,\n onCreated: onCreated,\n rootElement: canvas\n }), fiber, null, () => undefined);\n return store;\n },\n unmount() {\n unmountComponentAtNode(canvas);\n }\n };\n}\nfunction render(children, canvas, config) {\n console.warn('R3F.render is no longer supported in React 18. Use createRoot instead!');\n const root = createRoot(canvas);\n root.configure(config);\n return root.render(children);\n}\nfunction Provider({\n store,\n children,\n onCreated,\n rootElement\n}) {\n useIsomorphicLayoutEffect(() => {\n const state = store.getState();\n // Flag the canvas active, rendering will now begin\n state.set(state => ({\n internal: {\n ...state.internal,\n active: true\n }\n }));\n // Notifiy that init is completed, the scene graph exists, but nothing has yet rendered\n if (onCreated) onCreated(state);\n // Connect events to the targets parent, this is done to ensure events are registered on\n // a shared target, and not on the canvas itself\n if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return /*#__PURE__*/jsx(context.Provider, {\n value: store,\n children: children\n });\n}\nfunction unmountComponentAtNode(canvas, callback) {\n const root = roots.get(canvas);\n const fiber = root == null ? void 0 : root.fiber;\n if (fiber) {\n const state = root == null ? void 0 : root.store.getState();\n if (state) state.internal.active = false;\n reconciler.updateContainer(null, fiber, null, () => {\n if (state) {\n setTimeout(() => {\n try {\n var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n state.events.disconnect == null ? void 0 : state.events.disconnect();\n (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n dispose(state);\n roots.delete(canvas);\n if (callback) callback(canvas);\n } catch (e) {\n /* ... */\n }\n }, 500);\n }\n });\n }\n}\nfunction createPortal(children, container, state) {\n return /*#__PURE__*/jsx(Portal, {\n children: children,\n container: container,\n state: state\n }, container.uuid);\n}\nfunction Portal({\n state = {},\n children,\n container\n}) {\n /** This has to be a component because it would not be able to call useThree/useStore otherwise since\r\n * if this is our environment, then we are not in r3f's renderer but in react-dom, it would trigger\r\n * the \"R3F hooks can only be used within the Canvas component!\" warning:\r\n * \r\n * {createPortal(...)} */\n const {\n events,\n size,\n ...rest\n } = state;\n const previousRoot = useStore();\n const [raycaster] = React.useState(() => new THREE.Raycaster());\n const [pointer] = React.useState(() => new THREE.Vector2());\n const inject = React.useCallback((rootState, injectState) => {\n const intersect = {\n ...rootState\n }; // all prev state props\n\n // Only the fields of \"rootState\" that do not differ from injectState\n // Some props should be off-limits\n // Otherwise filter out the props that are different and let the inject layer take precedence\n Object.keys(rootState).forEach(key => {\n if (\n // Some props should be off-limits\n privateKeys.includes(key) ||\n // Otherwise filter out the props that are different and let the inject layer take precedence\n // Unless the inject layer props is undefined, then we keep the root layer\n rootState[key] !== injectState[key] && injectState[key]) {\n delete intersect[key];\n }\n });\n let viewport = undefined;\n if (injectState && size) {\n const camera = injectState.camera;\n // Calculate the override viewport, if present\n viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size);\n // Update the portal camera, if it differs from the previous layer\n if (camera !== rootState.camera) updateCamera(camera, size);\n }\n return {\n // The intersect consists of the previous root state\n ...intersect,\n // Portals have their own scene, which forms the root, a raycaster and a pointer\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n // Their previous root is the layer before it\n previousRoot,\n // Events, size and viewport can be overridden by the inject layer\n events: {\n ...rootState.events,\n ...(injectState == null ? void 0 : injectState.events),\n ...events\n },\n size: {\n ...rootState.size,\n ...size\n },\n viewport: {\n ...rootState.viewport,\n ...viewport\n },\n ...rest\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state]);\n const [usePortalStore] = React.useState(() => {\n // Create a mirrored store, based on the previous root with a few overrides ...\n const previousState = previousRoot.getState();\n const store = create((set, get) => ({\n ...previousState,\n scene: container,\n raycaster,\n pointer,\n mouse: pointer,\n previousRoot,\n events: {\n ...previousState.events,\n ...events\n },\n size: {\n ...previousState.size,\n ...size\n },\n ...rest,\n // Set and get refer to this root-state\n set,\n get,\n // Layers are allowed to override events\n setEvents: events => set(state => ({\n ...state,\n events: {\n ...state.events,\n ...events\n }\n }))\n }));\n return store;\n });\n React.useEffect(() => {\n // Subscribe to previous root-state and copy changes over to the mirrored portal-state\n const unsub = previousRoot.subscribe(prev => usePortalStore.setState(state => inject(prev, state)));\n return () => {\n unsub();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inject]);\n React.useEffect(() => {\n usePortalStore.setState(injectState => inject(previousRoot.getState(), injectState));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inject]);\n React.useEffect(() => {\n return () => {\n usePortalStore.destroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return /*#__PURE__*/jsx(Fragment, {\n children: reconciler.createPortal( /*#__PURE__*/jsx(context.Provider, {\n value: usePortalStore,\n children: children\n }), usePortalStore, null)\n });\n}\nreconciler.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n rendererPackageName: '@react-three/fiber',\n version: React.version\n});\nconst act = React.unstable_act;\n\nexport { useThree as A, Block as B, useFrame as C, useGraph as D, ErrorBoundary as E, useLoader as F, useIsomorphicLayoutEffect as a, createRoot as b, createEvents as c, unmountComponentAtNode as d, extend as e, context as f, createPortal as g, reconciler as h, isRef as i, applyProps as j, dispose as k, invalidate as l, advance as m, addEffect as n, addAfterEffect as o, addTail as p, flushGlobalEffects as q, render as r, getRootState as s, threeTypes as t, useMutableCallback as u, act as v, buildGraph as w, roots as x, useInstanceHandle as y, useStore as z };\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport createDebounce from 'debounce';\n\nfunction useMeasure(_temp) {\n let {\n debounce,\n scroll,\n polyfill,\n offsetSize\n } = _temp === void 0 ? {\n debounce: 0,\n scroll: false,\n offsetSize: false\n } : _temp;\n const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n if (!ResizeObserver) {\n throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n }\n\n const [bounds, set] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0\n }); // keep all state in a ref\n\n const state = useRef({\n element: null,\n scrollContainers: null,\n resizeObserver: null,\n lastBounds: bounds\n }); // set actual debounce values early, so effects know if they should react accordingly\n\n const scrollDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.scroll : null;\n const resizeDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.resize : null; // make sure to update state only as long as the component is truly mounted\n\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => void (mounted.current = false);\n }); // memoize handlers, so event-listeners know when they should update\n\n const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n const callback = () => {\n if (!state.current.element) return;\n const {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n } = state.current.element.getBoundingClientRect();\n const size = {\n left,\n top,\n width,\n height,\n bottom,\n right,\n x,\n y\n };\n\n if (state.current.element instanceof HTMLElement && offsetSize) {\n size.height = state.current.element.offsetHeight;\n size.width = state.current.element.offsetWidth;\n }\n\n Object.freeze(size);\n if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n };\n\n return [callback, resizeDebounce ? createDebounce(callback, resizeDebounce) : callback, scrollDebounce ? createDebounce(callback, scrollDebounce) : callback];\n }, [set, offsetSize, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n function removeListeners() {\n if (state.current.scrollContainers) {\n state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n state.current.scrollContainers = null;\n }\n\n if (state.current.resizeObserver) {\n state.current.resizeObserver.disconnect();\n state.current.resizeObserver = null;\n }\n } // add scroll-listeners / observers\n\n\n function addListeners() {\n if (!state.current.element) return;\n state.current.resizeObserver = new ResizeObserver(scrollChange);\n state.current.resizeObserver.observe(state.current.element);\n\n if (scroll && state.current.scrollContainers) {\n state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n capture: true,\n passive: true\n }));\n }\n } // the ref we expose to the user\n\n\n const ref = node => {\n if (!node || node === state.current.element) return;\n removeListeners();\n state.current.element = node;\n state.current.scrollContainers = findScrollContainers(node);\n addListeners();\n }; // add general event listeners\n\n\n useOnWindowScroll(scrollChange, Boolean(scroll));\n useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n useEffect(() => {\n removeListeners();\n addListeners();\n }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n useEffect(() => removeListeners, []);\n return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n useEffect(() => {\n const cb = onWindowResize;\n window.addEventListener('resize', cb);\n return () => void window.removeEventListener('resize', cb);\n }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n useEffect(() => {\n if (enabled) {\n const cb = onScroll;\n window.addEventListener('scroll', cb, {\n capture: true,\n passive: true\n });\n return () => void window.removeEventListener('scroll', cb, true);\n }\n }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n const result = [];\n if (!element || element === document.body) return result;\n const {\n overflow,\n overflowX,\n overflowY\n } = window.getComputedStyle(element);\n if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport { useMeasure as default };\n","import * as React from 'react'\r\nimport type ReactReconciler from 'react-reconciler'\r\n\r\n/**\r\n * An SSR-friendly useLayoutEffect.\r\n *\r\n * React currently throws a warning when using useLayoutEffect on the server.\r\n * To get around it, we can conditionally useEffect on the server (no-op) and\r\n * useLayoutEffect elsewhere.\r\n *\r\n * @see https://github.com/facebook/react/issues/14927\r\n */\r\nconst useIsomorphicLayoutEffect =\r\n typeof window !== 'undefined' && (window.document?.createElement || window.navigator?.product === 'ReactNative')\r\n ? React.useLayoutEffect\r\n : React.useEffect\r\n\r\n/**\r\n * Represents a react-internal Fiber node.\r\n */\r\nexport type Fiber = Omit & { stateNode: T }\r\n\r\n/**\r\n * Represents a {@link Fiber} node selector for traversal.\r\n */\r\nexport type FiberSelector = (\r\n /** The current {@link Fiber} node. */\r\n node: Fiber,\r\n) => boolean | void\r\n\r\n/**\r\n * Traverses up or down a {@link Fiber}, return `true` to stop and select a node.\r\n */\r\nexport function traverseFiber(\r\n /** Input {@link Fiber} to traverse. */\r\n fiber: Fiber | undefined,\r\n /** Whether to ascend and walk up the tree. Will walk down if `false`. */\r\n ascending: boolean,\r\n /** A {@link Fiber} node selector, returns the first match when `true` is passed. */\r\n selector: FiberSelector,\r\n): Fiber | undefined {\r\n if (!fiber) return\r\n if (selector(fiber) === true) return fiber\r\n\r\n let child = ascending ? fiber.return : fiber.child\r\n while (child) {\r\n const match = traverseFiber(child, ascending, selector)\r\n if (match) return match\r\n\r\n child = ascending ? null : child.sibling\r\n }\r\n}\r\n\r\n// In development, React will warn about using contexts between renderers.\r\n// Hide the warning because its-fine fixes this issue\r\n// https://github.com/facebook/react/pull/12779\r\nfunction wrapContext(context: React.Context): React.Context {\r\n try {\r\n return Object.defineProperties(context, {\r\n _currentRenderer: {\r\n get() {\r\n return null\r\n },\r\n set() {},\r\n },\r\n _currentRenderer2: {\r\n get() {\r\n return null\r\n },\r\n set() {},\r\n },\r\n })\r\n } catch (_) {\r\n return context\r\n }\r\n}\r\n\r\nconst error = console.error\r\nconsole.error = function () {\r\n const message = [...arguments].join('')\r\n if (message?.startsWith('Warning:') && message.includes('useContext')) {\r\n console.error = error\r\n return\r\n }\r\n\r\n return error.apply(this, arguments as any)\r\n}\r\n\r\nconst FiberContext = wrapContext(React.createContext(null!))\r\n\r\n/**\r\n * A react-internal {@link Fiber} provider. This component binds React children to the React Fiber tree. Call its-fine hooks within this.\r\n */\r\nexport class FiberProvider extends React.Component<{ children?: React.ReactNode }> {\r\n private _reactInternals!: Fiber\r\n\r\n render() {\r\n return {this.props.children}\r\n }\r\n}\r\n\r\n/**\r\n * Returns the current react-internal {@link Fiber}. This is an implementation detail of [react-reconciler](https://github.com/facebook/react/tree/main/packages/react-reconciler).\r\n */\r\nexport function useFiber(): Fiber | undefined {\r\n const root = React.useContext(FiberContext)\r\n if (root === null) throw new Error('its-fine: useFiber must be called within a !')\r\n\r\n const id = React.useId()\r\n const fiber = React.useMemo(() => {\r\n for (const maybeFiber of [root, root?.alternate]) {\r\n if (!maybeFiber) continue\r\n const fiber = traverseFiber(maybeFiber, false, (node) => {\r\n let state = node.memoizedState\r\n while (state) {\r\n if (state.memoizedState === id) return true\r\n state = state.next\r\n }\r\n })\r\n if (fiber) return fiber\r\n }\r\n }, [root, id])\r\n\r\n return fiber\r\n}\r\n\r\n/**\r\n * Represents a react-reconciler container instance.\r\n */\r\nexport interface ContainerInstance {\r\n containerInfo: T\r\n}\r\n\r\n/**\r\n * Returns the current react-reconciler container info passed to {@link ReactReconciler.Reconciler.createContainer}.\r\n *\r\n * In react-dom, a container will point to the root DOM element; in react-three-fiber, it will point to the root Zustand store.\r\n */\r\nexport function useContainer(): T | undefined {\r\n const fiber = useFiber()\r\n const root = React.useMemo(\r\n () => traverseFiber>(fiber, true, (node) => node.stateNode?.containerInfo != null),\r\n [fiber],\r\n )\r\n\r\n return root?.stateNode.containerInfo\r\n}\r\n\r\n/**\r\n * Returns the nearest react-reconciler child instance or the node created from {@link ReactReconciler.HostConfig.createInstance}.\r\n *\r\n * In react-dom, this would be a DOM element; in react-three-fiber this would be an instance descriptor.\r\n */\r\nexport function useNearestChild(\r\n /** An optional element type to filter to. */\r\n type?: keyof JSX.IntrinsicElements,\r\n): React.MutableRefObject {\r\n const fiber = useFiber()\r\n const childRef = React.useRef()\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n childRef.current = traverseFiber(\r\n fiber,\r\n false,\r\n (node) => typeof node.type === 'string' && (type === undefined || node.type === type),\r\n )?.stateNode\r\n }, [fiber])\r\n\r\n return childRef\r\n}\r\n\r\n/**\r\n * Returns the nearest react-reconciler parent instance or the node created from {@link ReactReconciler.HostConfig.createInstance}.\r\n *\r\n * In react-dom, this would be a DOM element; in react-three-fiber this would be an instance descriptor.\r\n */\r\nexport function useNearestParent(\r\n /** An optional element type to filter to. */\r\n type?: keyof JSX.IntrinsicElements,\r\n): React.MutableRefObject {\r\n const fiber = useFiber()\r\n const parentRef = React.useRef()\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n parentRef.current = traverseFiber(\r\n fiber,\r\n true,\r\n (node) => typeof node.type === 'string' && (type === undefined || node.type === type),\r\n )?.stateNode\r\n }, [fiber])\r\n\r\n return parentRef\r\n}\r\n\r\nexport type ContextMap = Map, any> & {\r\n get(context: React.Context): T | undefined\r\n}\r\n\r\n/**\r\n * Returns a map of all contexts and their values.\r\n */\r\nexport function useContextMap(): ContextMap {\r\n const fiber = useFiber()\r\n const [contextMap] = React.useState(() => new Map, any>())\r\n\r\n // Collect live context\r\n contextMap.clear()\r\n let node = fiber\r\n while (node) {\r\n if (node.type && typeof node.type === 'object') {\r\n // https://github.com/facebook/react/pull/28226\r\n const enableRenderableContext = node.type._context === undefined && node.type.Provider === node.type\r\n const context = enableRenderableContext ? node.type : node.type._context\r\n if (context && context !== FiberContext && !contextMap.has(context)) {\r\n contextMap.set(context, React.useContext(wrapContext(context)))\r\n }\r\n }\r\n\r\n node = node.return!\r\n }\r\n\r\n return contextMap\r\n}\r\n\r\n/**\r\n * Represents a react-context bridge provider component.\r\n */\r\nexport type ContextBridge = React.FC>\r\n\r\n/**\r\n * React Context currently cannot be shared across [React renderers](https://reactjs.org/docs/codebase-overview.html#renderers) but explicitly forwarded between providers (see [react#17275](https://github.com/facebook/react/issues/17275)). This hook returns a {@link ContextBridge} of live context providers to pierce Context across renderers.\r\n *\r\n * Pass {@link ContextBridge} as a component to a secondary renderer to enable context-sharing within its children.\r\n */\r\nexport function useContextBridge(): ContextBridge {\r\n const contextMap = useContextMap()\r\n\r\n // Flatten context and their memoized values into a `ContextBridge` provider\r\n return React.useMemo(\r\n () =>\r\n Array.from(contextMap.keys()).reduce(\r\n (Prev, context) => (props) =>\r\n (\r\n \r\n \r\n \r\n ),\r\n (props) => ,\r\n ),\r\n [contextMap],\r\n )\r\n}\r\n","import { c as createEvents, e as extend, u as useMutableCallback, a as useIsomorphicLayoutEffect, b as createRoot, i as isRef, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from './index-99983b2d.esm.js';\nexport { t as ReactThreeFiber, x as _roots, v as act, o as addAfterEffect, n as addEffect, p as addTail, m as advance, j as applyProps, w as buildGraph, f as context, c as createEvents, g as createPortal, b as createRoot, k as dispose, e as extend, q as flushGlobalEffects, s as getRootState, l as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, C as useFrame, D as useGraph, y as useInstanceHandle, F as useLoader, z as useStore, A as useThree } from './index-99983b2d.esm.js';\nimport * as React from 'react';\nimport * as THREE from 'three';\nimport useMeasure from 'react-use-measure';\nimport { FiberProvider, useContextBridge } from 'its-fine';\nimport { jsx } from 'react/jsx-runtime';\nimport 'react-reconciler/constants';\nimport 'zustand';\nimport 'react-reconciler';\nimport 'scheduler';\nimport 'suspend-react';\n\nconst DOM_EVENTS = {\n onClick: ['click', false],\n onContextMenu: ['contextmenu', false],\n onDoubleClick: ['dblclick', false],\n onWheel: ['wheel', true],\n onPointerDown: ['pointerdown', true],\n onPointerUp: ['pointerup', true],\n onPointerLeave: ['pointerleave', true],\n onPointerMove: ['pointermove', true],\n onPointerCancel: ['pointercancel', true],\n onLostPointerCapture: ['lostpointercapture', true]\n};\n\n/** Default R3F event manager for web */\nfunction createPointerEvents(store) {\n const {\n handlePointer\n } = createEvents(store);\n return {\n priority: 1,\n enabled: true,\n compute(event, state, previous) {\n // https://github.com/pmndrs/react-three-fiber/pull/782\n // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n state.raycaster.setFromCamera(state.pointer, state.camera);\n },\n connected: undefined,\n handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({\n ...acc,\n [key]: handlePointer(key)\n }), {}),\n update: () => {\n var _internal$lastEvent;\n const {\n events,\n internal\n } = store.getState();\n if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);\n },\n connect: target => {\n var _events$handlers;\n const {\n set,\n events\n } = store.getState();\n events.disconnect == null ? void 0 : events.disconnect();\n set(state => ({\n events: {\n ...state.events,\n connected: target\n }\n }));\n Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n const [eventName, passive] = DOM_EVENTS[name];\n target.addEventListener(eventName, event, {\n passive\n });\n });\n },\n disconnect: () => {\n const {\n set,\n events\n } = store.getState();\n if (events.connected) {\n var _events$handlers2;\n Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n if (events && events.connected instanceof HTMLElement) {\n const [eventName] = DOM_EVENTS[name];\n events.connected.removeEventListener(eventName, event);\n }\n });\n set(state => ({\n events: {\n ...state.events,\n connected: undefined\n }\n }));\n }\n }\n };\n}\n\nconst CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({\n children,\n fallback,\n resize,\n style,\n gl,\n events = createPointerEvents,\n eventSource,\n eventPrefix,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n scene,\n onPointerMissed,\n onCreated,\n ...props\n}, forwardedRef) {\n // Create a known catalogue of Threejs-native elements\n // This will include the entire THREE namespace by default, users can extend\n // their own elements by using the createRoot API instead\n React.useMemo(() => extend(THREE), []);\n const Bridge = useContextBridge();\n const [containerRef, containerRect] = useMeasure({\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n ...resize\n });\n const canvasRef = React.useRef(null);\n const divRef = React.useRef(null);\n React.useImperativeHandle(forwardedRef, () => canvasRef.current);\n const handlePointerMissed = useMutableCallback(onPointerMissed);\n const [block, setBlock] = React.useState(false);\n const [error, setError] = React.useState(false);\n\n // Suspend this component if block is a promise (2nd run)\n if (block) throw block;\n // Throw exception outwards if anything within canvas throws\n if (error) throw error;\n const root = React.useRef(null);\n useIsomorphicLayoutEffect(() => {\n const canvas = canvasRef.current;\n if (containerRect.width > 0 && containerRect.height > 0 && canvas) {\n if (!root.current) root.current = createRoot(canvas);\n root.current.configure({\n gl,\n events,\n shadows,\n linear,\n flat,\n legacy,\n orthographic,\n frameloop,\n dpr,\n performance,\n raycaster,\n camera,\n scene,\n size: containerRect,\n // Pass mutable reference to onPointerMissed so it's free to update\n onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n onCreated: state => {\n // Connect to event source\n state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current);\n // Set up compute function\n if (eventPrefix) {\n state.setEvents({\n compute: (event, state) => {\n const x = event[eventPrefix + 'X'];\n const y = event[eventPrefix + 'Y'];\n state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);\n state.raycaster.setFromCamera(state.pointer, state.camera);\n }\n });\n }\n // Call onCreated callback\n onCreated == null ? void 0 : onCreated(state);\n }\n });\n root.current.render( /*#__PURE__*/jsx(Bridge, {\n children: /*#__PURE__*/jsx(ErrorBoundary, {\n set: setError,\n children: /*#__PURE__*/jsx(React.Suspense, {\n fallback: /*#__PURE__*/jsx(Block, {\n set: setBlock\n }),\n children: children\n })\n })\n }));\n }\n });\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas) return () => unmountComponentAtNode(canvas);\n }, []);\n\n // When the event source is not this div, we need to set pointer-events to none\n // Or else the canvas will block events from reaching the event source\n const pointerEvents = eventSource ? 'none' : 'auto';\n return /*#__PURE__*/jsx(\"div\", {\n ref: divRef,\n style: {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n pointerEvents,\n ...style\n },\n ...props,\n children: /*#__PURE__*/jsx(\"div\", {\n ref: containerRef,\n style: {\n width: '100%',\n height: '100%'\n },\n children: /*#__PURE__*/jsx(\"canvas\", {\n ref: canvasRef,\n style: {\n display: 'block'\n },\n children: fallback\n })\n })\n });\n});\n\n/**\r\n * A DOM canvas which accepts threejs elements as children.\r\n * @see https://docs.pmnd.rs/react-three-fiber/api/canvas\r\n */\nconst Canvas = /*#__PURE__*/React.forwardRef(function CanvasWrapper(props, ref) {\n return /*#__PURE__*/jsx(FiberProvider, {\n children: /*#__PURE__*/jsx(CanvasImpl, {\n ...props,\n ref: ref\n })\n });\n});\n\nexport { Canvas, createPointerEvents as events };\n","import React from \"react\";\r\nimport { QuizData, TourData, question } from \"../../../../Types\";\r\nimport { UseDownloadAsset } from \"../../../../api/calls/Queries\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { getLanguageFile } from \"../../../common/GetLanguageFile\";\r\n\r\nfunction QuizSpot(props: {\r\n hotspotData: number;\r\n tourData: TourData;\r\n setOpen: (bool: boolean) => void;\r\n}) {\r\n const { hotspotData, tourData, setOpen } = props;\r\n const queryClient = useQueryClient();\r\n const quizData: QuizData | undefined = queryClient.getQueryData([\r\n \"GetQuiz\",\r\n tourData.assignedQuizID,\r\n ]);\r\n\r\n const currentQuestion: question | undefined = React.useMemo(() => {\r\n return quizData?.data?.find((one: any) => one.questionId === hotspotData);\r\n }, [hotspotData, quizData?.data]);\r\n\r\n const { data: imageBlob } = UseDownloadAsset(currentQuestion?.questionImgKey);\r\n\r\n const questionIndex = React.useMemo(() => {\r\n const quizdata = tourData.quizData?.data;\r\n\r\n let index = quizdata?.findIndex(\r\n (question) => question.questionId === currentQuestion?.questionId\r\n );\r\n\r\n return index ?? 0;\r\n }, [currentQuestion?.questionId, tourData.quizData?.data]);\r\n\r\n return (\r\n
\r\n
{questionIndex + 1}
\r\n\r\n \r\n setOpen(false)}\r\n >\r\n {getLanguageFile(\"generics.close\")}\r\n \r\n
\r\n\r\n \r\n {imageBlob && (\r\n \r\n )}\r\n \r\n\r\n
{currentQuestion?.questionText}
\r\n\r\n
\r\n
\r\n \r\n {currentQuestion?.answers\r\n ?.sort((a, b) => {\r\n return a.answerOrder - b.answerOrder;\r\n })\r\n .map((ans: any) => (\r\n \r\n {ans.answerText}\r\n \r\n ))}\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default QuizSpot;\r\n","import React from \"react\";\r\nimport { Popup } from \"../../../Types\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction OpenTextPopup({\r\n popup,\r\n setOpen,\r\n}: {\r\n popup: Popup;\r\n setOpen: (bool: boolean) => void;\r\n}) {\r\n return (\r\n \r\n \r\n

{popup.title}

\r\n \r\n \r\n

{popup.text}

\r\n \r\n );\r\n}\r\n\r\nexport default OpenTextPopup;\r\n","import React from \"react\";\r\nimport { Popup } from \"../../../Types\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction OpenVideoPopup({\r\n popup,\r\n hotspot,\r\n setOpen,\r\n}: {\r\n popup: Popup;\r\n hotspot: boolean;\r\n setOpen: (bool: boolean) => void;\r\n}) {\r\n function youtube_parser(url: string | undefined): string | undefined {\r\n if (url) {\r\n let regExp =\r\n /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\r\n let match = url.match(regExp);\r\n return match && match[7].length === 11 ? match[7] : undefined;\r\n }\r\n return;\r\n }\r\n\r\n return (\r\n <>\r\n setOpen(false)}\r\n >\r\n {getLanguageFile(\"generics.close\")}\r\n \r\n\r\n

{popup.title}

\r\n\r\n {hotspot && (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default OpenVideoPopup;\r\n","import React from \"react\";\r\nimport { UseDownloadAsset } from \"../../../api/calls/Queries\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction OpenImagePopup(props: {\r\n popup: any;\r\n setOpen: (bool: boolean) => void;\r\n}) {\r\n const { popup, setOpen } = props;\r\n\r\n const { data: imageBlob } = UseDownloadAsset(popup?.image);\r\n\r\n return (\r\n
\r\n setOpen(false)}\r\n >\r\n {getLanguageFile(\"generics.close\")}\r\n \r\n\r\n {popup ? (\r\n <>\r\n {imageBlob ? (\r\n <>\r\n

{popup.title}

\r\n \r\n \r\n\r\n {popup.text &&

{popup.text}

}\r\n
\r\n \r\n ) : (\r\n getLanguageFile(\"generics.loading\")\r\n )}\r\n \r\n ) : (\r\n

{getLanguageFile(\"experience.popup_been_deleted\")}

\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default OpenImagePopup;\r\n","import QuizSpot from \"./QuizSpot\";\r\nimport { Popup } from \"../../../../Types\";\r\nimport OpenTextPopup from \"../../Hotspots/OpenTextPopup\";\r\nimport OpenVideoPopup from \"../../Hotspots/OpenVideoPopup\";\r\nimport OpenImagePopup from \"../../Hotspots/OpenImagePopup\";\r\nimport { editorHotspotStore, useTourDataStore } from \"../../../../api/Zustand\";\r\n\r\nfunction ExpHotspot() {\r\n const { tourData } = useTourDataStore();\r\n const { hotspot, openHotspot, hotspotData } = editorHotspotStore();\r\n\r\n return (\r\n openHotspot(false)}\r\n >\r\n
\r\n {hotspotData ? (\r\n tourData?.popups.find((one: Popup) => one.id === hotspotData)\r\n ?.type === \"text\" ? (\r\n one.id === hotspotData)!\r\n }\r\n setOpen={openHotspot}\r\n />\r\n ) : tourData?.popups.find((one: Popup) => one.id === hotspotData)\r\n ?.type === \"video\" ? (\r\n one.id === hotspotData)!\r\n }\r\n hotspot={hotspot}\r\n setOpen={openHotspot}\r\n />\r\n ) : tourData?.popups.find((one: Popup) => one.id === hotspotData)\r\n ?.type === \"image\" ? (\r\n one.id === hotspotData)!\r\n }\r\n setOpen={openHotspot}\r\n />\r\n ) : (\r\n \r\n )\r\n ) : null}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default ExpHotspot;\r\n","import React from \"react\";\r\nimport { Scene, TourData } from \"../../../Types\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nexport function TransformationInfo() {\r\n return (\r\n
\r\n Hold LMB to drag\r\n
\r\n Press RMB to place\r\n
\r\n );\r\n}\r\n\r\nexport const Warnings = (props: { scene: Scene; tourData: TourData }) => {\r\n const { scene, tourData } = props;\r\n\r\n const shouldFirstBeVisible = React.useMemo(() => {\r\n if (!scene?.hotspots?.filter((one) => one.type === \"transition\").length)\r\n return true;\r\n else if (\r\n !tourData?.scenes\r\n .map((scn) => {\r\n return scn.hotspots;\r\n })\r\n .flat()\r\n .filter((spt) => spt.type === \"transition\")\r\n .some((spot) => spot.target === scene?.id) &&\r\n tourData?.startingScene !== scene?.id\r\n )\r\n return true;\r\n else return false;\r\n }, [scene?.hotspots, tourData, scene?.id]);\r\n\r\n const shouldScndBeVisible = React.useMemo(() => {\r\n if (!scene?.hotspots?.filter((one) => one.type === \"transition\").length)\r\n return true;\r\n else return false;\r\n }, [scene]);\r\n\r\n const shouldThirdBeVisible = React.useMemo(() => {\r\n if (\r\n !tourData.scenes\r\n ?.map((scn) => {\r\n return scn?.hotspots;\r\n })\r\n ?.flat()\r\n .filter((spt) => spt.type === \"transition\")\r\n .some((spot) => spot.target === scene?.id) &&\r\n tourData.startingScene !== scene?.id\r\n )\r\n return true;\r\n else return false;\r\n }, [tourData, scene?.id]);\r\n\r\n const a = getLanguageFile(\"experience.inaccessible\");\r\n return (\r\n <>\r\n {scene && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { create } from \"zustand\";\r\n\r\ntype downloadProgressStoreType = {\r\n progress?: number;\r\n setProgress: (number?: number) => void;\r\n};\r\n\r\nexport const useDownloadProgressStore = create()(\r\n (set) => ({\r\n setProgress: (number?: number) => set({ progress: number }),\r\n progress: undefined,\r\n })\r\n);\r\n\r\nconst DownloadProgressBar = (props: { top?: number; bottom?: number }) => {\r\n const { top, bottom } = props;\r\n const { progress } = useDownloadProgressStore();\r\n return (\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default DownloadProgressBar;\r\n","import { SVGProps } from \"react\";\r\nimport * as React from \"react\";\r\n\r\nexport function EnterFullscreen(props: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n// icon:fullscreen-exit | Bootstrap https://icons.getbootstrap.com/ | Bootstrap\r\n\r\nexport function ExitFullscreen(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function PlayIcon(props: React.SVGAttributes) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function CompassNeedle() {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default CompassNeedle;\r\n","import React from \"react\";\r\nimport { TourData } from \"../../../Types\";\r\n\r\n// STATE MANAGEMENT\r\n\r\nimport {\r\n useCurrentSceneStore,\r\n useSceneStore,\r\n useViewerStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand\";\r\nimport {\r\n useCameraPositionStore,\r\n useCompassHeadingStore,\r\n} from \"../../../state management/zustand/gl-stores\";\r\n\r\n// QUERIES\r\n\r\nimport { UseSaveTour } from \"../../../api/calls/Queries\";\r\n\r\n// THREEJS\r\n\r\nimport * as THREE from \"three\";\r\n\r\n// GUI\r\n\r\nimport DownloadProgressBar from \"../../common/DownloadProgressBar\";\r\nimport { PlayIcon, CompassNeedle } from \"../../Icons/exp-overlay-icons\";\r\n\r\nconst Overlay = (props: { tourData: TourData }) => {\r\n const { isTakingScreenshot } = useWidePopupStore();\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { mutateAsync: saveTour, isPending: isSaving } = UseSaveTour();\r\n const { setViewer } = useViewerStore();\r\n\r\n const canGoToViewer: boolean = React.useMemo(() => {\r\n const currentScene = props.tourData.scenes.find(\r\n (one) => one.id === currentSceneID\r\n );\r\n if (currentScene?.hotspots.find((one) => one.EDIT_POS)) {\r\n return false;\r\n } else return true;\r\n }, [props.tourData, currentSceneID]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n {isSaving ? (\r\n
\r\n ) : (\r\n {\r\n if (canGoToViewer && !isTakingScreenshot) {\r\n saveTour(props.tourData, { onSuccess: () => setViewer(true) });\r\n }\r\n }}\r\n width={\"2.4rem\"}\r\n height={\"2.4rem\"}\r\n fill=\"#fff\"\r\n stroke=\"#222\"\r\n strokeWidth={15}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst Compass = () => {\r\n const camera = useCameraPositionStore();\r\n\r\n const { scene } = useSceneStore();\r\n const { heading } = useCompassHeadingStore();\r\n\r\n const sceneNorth = React.useMemo(() => {\r\n let north = new THREE.Vector3(\r\n Math.sin((scene!?.north / 180) * Math.PI),\r\n 0,\r\n -Math.cos((scene!?.north / 180) * Math.PI)\r\n );\r\n\r\n return north;\r\n }, [scene]);\r\n\r\n return (\r\n {\r\n camera.setCameraLookAt(sceneNorth);\r\n }}\r\n style={{\r\n transform: `rotate(${\r\n 180 + (scene!?.north + (heading * 180) / Math.PI)\r\n }deg)`,\r\n }}\r\n >\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Overlay;\r\n","import React from \"react\";\r\nimport { getLanguageFile } from \"./GetLanguageFile\";\r\n\r\nconst LoadingExp = () => {\r\n return (\r\n \r\n {getLanguageFile(\"generics.loading\")}\r\n\r\n {/* \r\n \r\n */}\r\n \r\n );\r\n};\r\n\r\nexport default LoadingExp;\r\n","import React from \"react\";\r\nimport { Scene, TourData } from \"../../Types\";\r\nimport {\r\n editorExperienceStore,\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useParametersStore,\r\n useViewerStore,\r\n} from \"../../api/Zustand\";\r\nimport * as THREE from \"three\";\r\nimport { UseAssetsQuery, UseDownloadAsset } from \"../../api/calls/Queries\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { ThreeEvent, useFrame /*, useThree*/ } from \"@react-three/fiber\";\r\nimport { OrbitControlsProps } from \"@react-three/drei\";\r\nimport { useDownloadProgressStore } from \"./DownloadProgressBar\";\r\nimport { useCompassHeadingStore } from \"../../state management/zustand/gl-stores\";\r\nimport { useViewerMapStore } from \"../../state management/zustand/viewer-stores\";\r\n\r\n//\r\nconst testMaterial = new THREE.MeshBasicMaterial({\r\n toneMapped: false,\r\n //wireframe: true,\r\n side: THREE.BackSide,\r\n});\r\n\r\nconst textureLoader = new THREE.TextureLoader();\r\n\r\nconst canvas = document.createElement(\"canvas\");\r\nconst context = canvas.getContext(\"2d\");\r\n\r\ncanvas.width = 8192;\r\ncanvas.height = 4096;\r\n\r\nconst loadTexture: (url: string) => Promise = async (url: string) => {\r\n return new Promise((resolve, reject) => {\r\n textureLoader.load(\r\n url,\r\n (t) => {\r\n if (testMaterial.map !== null) {\r\n testMaterial.map.dispose();\r\n }\r\n\r\n const sourceImg = t.source.data as HTMLImageElement;\r\n\r\n if (sourceImg.naturalWidth > 8192) {\r\n context?.reset();\r\n\r\n context?.drawImage(sourceImg, 0, 0, 8192, 4096);\r\n\r\n const texture = new THREE.CanvasTexture(canvas);\r\n\r\n texture.wrapS = THREE.RepeatWrapping;\r\n texture.repeat.x = -1;\r\n texture.mapping = THREE.EquirectangularRefractionMapping;\r\n\r\n console.debug(\"loading reduced texture\");\r\n testMaterial.map = texture;\r\n\r\n t.dispose();\r\n } else {\r\n t.wrapS = THREE.RepeatWrapping;\r\n t.repeat.x = -1;\r\n\r\n t.mapping = THREE.EquirectangularRefractionMapping;\r\n\r\n testMaterial.map = t;\r\n testMaterial.needsUpdate = true;\r\n }\r\n resolve();\r\n },\r\n undefined,\r\n (err) => {\r\n console.debug(err);\r\n reject(err);\r\n }\r\n );\r\n });\r\n};\r\n\r\nconst resetTexture = () => {\r\n testMaterial.map = null;\r\n testMaterial.needsUpdate = true;\r\n};\r\n\r\nconst WebGLSphere = (props: { scene: Scene; tourData: TourData }) => {\r\n const { scene, tourData } = props;\r\n const { setTransition } = editorExperienceStore();\r\n\r\n const { tourID } = useParametersStore();\r\n\r\n const sphereRef = React.useRef(null);\r\n\r\n const queryClient = useQueryClient();\r\n\r\n React.useLayoutEffect(() => {\r\n setTransition(true);\r\n }, [scene.imageID, setTransition]);\r\n\r\n const { setClosed, setOpen } = useViewerMapStore();\r\n\r\n const { viewer } = useViewerStore();\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const currentScene = React.useMemo(() => {\r\n return tourData.scenes.find((one) => one.id === currentSceneID);\r\n }, [tourData, currentSceneID]);\r\n\r\n React.useEffect(() => {\r\n if (!currentScene?.imageID) {\r\n resetTexture();\r\n }\r\n }, [currentScene]);\r\n\r\n React.useLayoutEffect(() => {\r\n if (viewer) {\r\n // openMap({ isOpen: false });\r\n setClosed();\r\n if (currentScene?.map && currentScene.mapAutoOpen) {\r\n setOpen(currentScene.map);\r\n }\r\n } else return;\r\n }, [viewer, currentScene, setClosed, setOpen]);\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const [lowResKey, setLowResKey] = React.useState();\r\n const [hiResKey, setHiResKey] = React.useState();\r\n\r\n const { data: panos } = UseAssetsQuery(tourID, 1);\r\n\r\n const { setHeading } = useCompassHeadingStore();\r\n\r\n React.useEffect(() => {\r\n setHiResKey(\r\n panos?.find((one) => one.assetId === scene.imageID)?.assetKeyFull\r\n );\r\n if (panos?.find((one) => one.assetId === scene.imageID)?.assetKeyLow)\r\n setLowResKey(\r\n panos?.find((one) => one.assetId === scene.imageID)?.assetKeyLow\r\n );\r\n }, [scene.imageID, panos]);\r\n\r\n const { setProgress } = useDownloadProgressStore();\r\n\r\n const { data: hiResBlob } = UseDownloadAsset(hiResKey, setProgress);\r\n const { data: loResBlob } = UseDownloadAsset(lowResKey);\r\n\r\n const setLowResTexture = React.useCallback(\r\n async (url: string) => {\r\n const hiResBlob = queryClient.getQueryData([\"DownloadAsset\", hiResKey]);\r\n\r\n if (hiResBlob) {\r\n return;\r\n } else if (hiResKey) {\r\n loadTexture(url).then(() => {\r\n setTransition(false);\r\n console.debug(\"low res texture loaded\");\r\n return;\r\n });\r\n }\r\n },\r\n [setTransition, hiResKey, queryClient]\r\n );\r\n\r\n const setHiResTexture = React.useCallback(\r\n async (url: string) => {\r\n loadTexture(url).then(() => {\r\n console.debug(\"hi res texture loaded\");\r\n\r\n setTransition(false);\r\n\r\n return;\r\n });\r\n },\r\n\r\n [setTransition]\r\n );\r\n\r\n React.useEffect(() => {\r\n if (loResBlob) setLowResTexture(loResBlob);\r\n }, [loResBlob, setLowResTexture]);\r\n\r\n React.useEffect(() => {\r\n if (hiResBlob) {\r\n // loadTextureFromCanvas(hiResBlob);\r\n setHiResTexture(hiResBlob);\r\n }\r\n }, [hiResBlob, setHiResTexture]);\r\n\r\n useFrame((state) => {\r\n const hdn = state.controls as OrbitControlsProps;\r\n if (hdn.getAzimuthalAngle) {\r\n setHeading(hdn.getAzimuthalAngle());\r\n }\r\n });\r\n\r\n const handlePlace = React.useCallback(\r\n (e: ThreeEvent) => {\r\n const point = new THREE.Vector3();\r\n\r\n point.copy(e.point);\r\n\r\n return queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs) =>\r\n hs.EDIT_POS === true\r\n ? {\r\n ...hs,\r\n x: e.point.x,\r\n y: e.point.y,\r\n z: e.point.z,\r\n pos: point,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n },\r\n [queryClient, tourData, currentSceneID, tourID]\r\n );\r\n\r\n return (\r\n <>\r\n {\r\n e.stopPropagation();\r\n\r\n if (\r\n tourData?.scenes\r\n ?.find((one) => one.id === currentSceneID)\r\n ?.hotspots.some((spot) => spot.EDIT_POS === true)\r\n ) {\r\n return;\r\n } else {\r\n setEditingElem(\"scene\", JSON.stringify(currentSceneID));\r\n }\r\n }}\r\n onPointerUp={(e) => {\r\n e.button === 2 && handlePlace(e);\r\n }}\r\n >\r\n \r\n {/* */}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default WebGLSphere;\r\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as THREE from 'three';\n\nfunction create(type, effect) {\n const El = type + 'Geometry';\n return /*#__PURE__*/React.forwardRef(({\n args,\n children,\n ...props\n }, fref) => {\n const ref = React.useRef(null);\n React.useImperativeHandle(fref, () => ref.current);\n React.useLayoutEffect(() => void (effect == null ? void 0 : effect(ref.current)));\n return /*#__PURE__*/React.createElement(\"mesh\", _extends({\n ref: ref\n }, props), /*#__PURE__*/React.createElement(El, {\n attach: \"geometry\",\n args: args\n }), children);\n });\n}\nconst Box = /* @__PURE__ */create('box');\nconst Circle = /* @__PURE__ */create('circle');\nconst Cone = /* @__PURE__ */create('cone');\nconst Cylinder = /* @__PURE__ */create('cylinder');\nconst Sphere = /* @__PURE__ */create('sphere');\nconst Plane = /* @__PURE__ */create('plane');\nconst Tube = /* @__PURE__ */create('tube');\nconst Torus = /* @__PURE__ */create('torus');\nconst TorusKnot = /* @__PURE__ */create('torusKnot');\nconst Tetrahedron = /* @__PURE__ */create('tetrahedron');\nconst Ring = /* @__PURE__ */create('ring');\nconst Polyhedron = /* @__PURE__ */create('polyhedron');\nconst Icosahedron = /* @__PURE__ */create('icosahedron');\nconst Octahedron = /* @__PURE__ */create('octahedron');\nconst Dodecahedron = /* @__PURE__ */create('dodecahedron');\nconst Extrude = /* @__PURE__ */create('extrude');\nconst Lathe = /* @__PURE__ */create('lathe');\nconst Capsule = /* @__PURE__ */create('capsule');\nconst Shape = /* @__PURE__ */create('shape', ({\n geometry\n}) => {\n // Calculate UVs (by https://discourse.threejs.org/u/prisoner849)\n // https://discourse.threejs.org/t/custom-shape-in-image-not-working/49348/10\n const pos = geometry.attributes.position;\n const b3 = new THREE.Box3().setFromBufferAttribute(pos);\n const b3size = new THREE.Vector3();\n b3.getSize(b3size);\n const uv = [];\n let x = 0,\n y = 0,\n u = 0,\n v = 0;\n for (let i = 0; i < pos.count; i++) {\n x = pos.getX(i);\n y = pos.getY(i);\n u = (x - b3.min.x) / b3size.x;\n v = (y - b3.min.y) / b3size.y;\n uv.push(u, v);\n }\n geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uv, 2));\n});\n\nexport { Box, Capsule, Circle, Cone, Cylinder, Dodecahedron, Extrude, Icosahedron, Lathe, Octahedron, Plane, Polyhedron, Ring, Shape, Sphere, Tetrahedron, Torus, TorusKnot, Tube };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { Vector3, DoubleSide, OrthographicCamera, PerspectiveCamera, Vector2 } from 'three';\nimport { useThree, useFrame } from '@react-three/fiber';\n\nconst v1 = /* @__PURE__ */new Vector3();\nconst v2 = /* @__PURE__ */new Vector3();\nconst v3 = /* @__PURE__ */new Vector3();\nconst v4 = /* @__PURE__ */new Vector2();\nfunction defaultCalculatePosition(el, camera, size) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n objectPos.project(camera);\n const widthHalf = size.width / 2;\n const heightHalf = size.height / 2;\n return [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\nfunction isObjectBehindCamera(el, camera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const deltaCamObj = objectPos.sub(cameraPos);\n const camDir = camera.getWorldDirection(v3);\n return deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\nfunction isObjectVisible(el, camera, raycaster, occlude) {\n const elPos = v1.setFromMatrixPosition(el.matrixWorld);\n const screenPos = elPos.clone();\n screenPos.project(camera);\n v4.set(screenPos.x, screenPos.y);\n raycaster.setFromCamera(v4, camera);\n const intersects = raycaster.intersectObjects(occlude, true);\n if (intersects.length) {\n const intersectionDistance = intersects[0].distance;\n const pointDistance = elPos.distanceTo(raycaster.ray.origin);\n return pointDistance < intersectionDistance;\n }\n return true;\n}\nfunction objectScale(el, camera) {\n if (camera instanceof OrthographicCamera) {\n return camera.zoom;\n } else if (camera instanceof PerspectiveCamera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const vFOV = camera.fov * Math.PI / 180;\n const dist = objectPos.distanceTo(cameraPos);\n const scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n return 1 / scaleFOV;\n } else {\n return 1;\n }\n}\nfunction objectZIndex(el, camera, zIndexRange) {\n if (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n const objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n const dist = objectPos.distanceTo(cameraPos);\n const A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n const B = zIndexRange[1] - A * camera.far;\n return Math.round(A * dist + B);\n }\n return undefined;\n}\nconst epsilon = value => Math.abs(value) < 1e-10 ? 0 : value;\nfunction getCSSMatrix(matrix, multipliers, prepend = '') {\n let matrix3d = 'matrix3d(';\n for (let i = 0; i !== 16; i++) {\n matrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n }\n return prepend + matrix3d;\n}\nconst getCameraCSSMatrix = (multipliers => {\n return matrix => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\nconst getObjectCSSMatrix = (scaleMultipliers => {\n return (matrix, factor) => getCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})(f => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\nfunction isRefObject(ref) {\n return ref && typeof ref === 'object' && 'current' in ref;\n}\nconst Html = /* @__PURE__ */React.forwardRef(({\n children,\n eps = 0.001,\n style,\n className,\n prepend,\n center,\n fullscreen,\n portal,\n distanceFactor,\n sprite = false,\n transform = false,\n occlude,\n onOcclude,\n castShadow,\n receiveShadow,\n material,\n geometry,\n zIndexRange = [16777271, 0],\n calculatePosition = defaultCalculatePosition,\n as = 'div',\n wrapperClass,\n pointerEvents = 'auto',\n ...props\n}, ref) => {\n const {\n gl,\n camera,\n scene,\n size,\n raycaster,\n events,\n viewport\n } = useThree();\n const [el] = React.useState(() => document.createElement(as));\n const root = React.useRef();\n const group = React.useRef(null);\n const oldZoom = React.useRef(0);\n const oldPosition = React.useRef([0, 0]);\n const transformOuterRef = React.useRef(null);\n const transformInnerRef = React.useRef(null);\n // Append to the connected element, which makes HTML work with views\n const target = (portal == null ? void 0 : portal.current) || events.connected || gl.domElement.parentNode;\n const occlusionMeshRef = React.useRef(null);\n const isMeshSizeSet = React.useRef(false);\n const isRayCastOcclusion = React.useMemo(() => {\n return occlude && occlude !== 'blending' || Array.isArray(occlude) && occlude.length && isRefObject(occlude[0]);\n }, [occlude]);\n React.useLayoutEffect(() => {\n const el = gl.domElement;\n if (occlude && occlude === 'blending') {\n el.style.zIndex = `${Math.floor(zIndexRange[0] / 2)}`;\n el.style.position = 'absolute';\n el.style.pointerEvents = 'none';\n } else {\n el.style.zIndex = null;\n el.style.position = null;\n el.style.pointerEvents = null;\n }\n }, [occlude]);\n React.useLayoutEffect(() => {\n if (group.current) {\n const currentRoot = root.current = ReactDOM.createRoot(el);\n scene.updateMatrixWorld();\n if (transform) {\n el.style.cssText = `position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;`;\n } else {\n const vec = calculatePosition(group.current, camera, size);\n el.style.cssText = `position:absolute;top:0;left:0;transform:translate3d(${vec[0]}px,${vec[1]}px,0);transform-origin:0 0;`;\n }\n if (target) {\n if (prepend) target.prepend(el);else target.appendChild(el);\n }\n return () => {\n if (target) target.removeChild(el);\n currentRoot.unmount();\n };\n }\n }, [target, transform]);\n React.useLayoutEffect(() => {\n if (wrapperClass) el.className = wrapperClass;\n }, [wrapperClass]);\n const styles = React.useMemo(() => {\n if (transform) {\n return {\n position: 'absolute',\n top: 0,\n left: 0,\n width: size.width,\n height: size.height,\n transformStyle: 'preserve-3d',\n pointerEvents: 'none'\n };\n } else {\n return {\n position: 'absolute',\n transform: center ? 'translate3d(-50%,-50%,0)' : 'none',\n ...(fullscreen && {\n top: -size.height / 2,\n left: -size.width / 2,\n width: size.width,\n height: size.height\n }),\n ...style\n };\n }\n }, [style, center, fullscreen, size, transform]);\n const transformInnerStyles = React.useMemo(() => ({\n position: 'absolute',\n pointerEvents\n }), [pointerEvents]);\n React.useLayoutEffect(() => {\n isMeshSizeSet.current = false;\n if (transform) {\n var _root$current;\n (_root$current = root.current) == null || _root$current.render( /*#__PURE__*/React.createElement(\"div\", {\n ref: transformOuterRef,\n style: styles\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: transformInnerRef,\n style: transformInnerStyles\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: className,\n style: style,\n children: children\n }))));\n } else {\n var _root$current2;\n (_root$current2 = root.current) == null || _root$current2.render( /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n style: styles,\n className: className,\n children: children\n }));\n }\n });\n const visible = React.useRef(true);\n useFrame(gl => {\n if (group.current) {\n camera.updateMatrixWorld();\n group.current.updateWorldMatrix(true, false);\n const vec = transform ? oldPosition.current : calculatePosition(group.current, camera, size);\n if (transform || Math.abs(oldZoom.current - camera.zoom) > eps || Math.abs(oldPosition.current[0] - vec[0]) > eps || Math.abs(oldPosition.current[1] - vec[1]) > eps) {\n const isBehindCamera = isObjectBehindCamera(group.current, camera);\n let raytraceTarget = false;\n if (isRayCastOcclusion) {\n if (Array.isArray(occlude)) {\n raytraceTarget = occlude.map(item => item.current);\n } else if (occlude !== 'blending') {\n raytraceTarget = [scene];\n }\n }\n const previouslyVisible = visible.current;\n if (raytraceTarget) {\n const isvisible = isObjectVisible(group.current, camera, raycaster, raytraceTarget);\n visible.current = isvisible && !isBehindCamera;\n } else {\n visible.current = !isBehindCamera;\n }\n if (previouslyVisible !== visible.current) {\n if (onOcclude) onOcclude(!visible.current);else el.style.display = visible.current ? 'block' : 'none';\n }\n const halfRange = Math.floor(zIndexRange[0] / 2);\n const zRange = occlude ? isRayCastOcclusion //\n ? [zIndexRange[0], halfRange] : [halfRange - 1, 0] : zIndexRange;\n el.style.zIndex = `${objectZIndex(group.current, camera, zRange)}`;\n if (transform) {\n const [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n const fov = camera.projectionMatrix.elements[5] * heightHalf;\n const {\n isOrthographicCamera,\n top,\n left,\n bottom,\n right\n } = camera;\n const cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n const cameraTransform = isOrthographicCamera ? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon((top + bottom) / 2)}px)` : `translateZ(${fov}px)`;\n let matrix = group.current.matrixWorld;\n if (sprite) {\n matrix = camera.matrixWorldInverse.clone().transpose().copyPosition(matrix).scale(group.current.scale);\n matrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n matrix.elements[15] = 1;\n }\n el.style.width = size.width + 'px';\n el.style.height = size.height + 'px';\n el.style.perspective = isOrthographicCamera ? '' : `${fov}px`;\n if (transformOuterRef.current && transformInnerRef.current) {\n transformOuterRef.current.style.transform = `${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`;\n transformInnerRef.current.style.transform = getObjectCSSMatrix(matrix, 1 / ((distanceFactor || 10) / 400));\n }\n } else {\n const scale = distanceFactor === undefined ? 1 : objectScale(group.current, camera) * distanceFactor;\n el.style.transform = `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`;\n }\n oldPosition.current = vec;\n oldZoom.current = camera.zoom;\n }\n }\n if (!isRayCastOcclusion && occlusionMeshRef.current && !isMeshSizeSet.current) {\n if (transform) {\n if (transformOuterRef.current) {\n const el = transformOuterRef.current.children[0];\n if (el != null && el.clientWidth && el != null && el.clientHeight) {\n const {\n isOrthographicCamera\n } = camera;\n if (isOrthographicCamera || geometry) {\n if (props.scale) {\n if (!Array.isArray(props.scale)) {\n occlusionMeshRef.current.scale.setScalar(1 / props.scale);\n } else if (props.scale instanceof Vector3) {\n occlusionMeshRef.current.scale.copy(props.scale.clone().divideScalar(1));\n } else {\n occlusionMeshRef.current.scale.set(1 / props.scale[0], 1 / props.scale[1], 1 / props.scale[2]);\n }\n }\n } else {\n const ratio = (distanceFactor || 10) / 400;\n const w = el.clientWidth * ratio;\n const h = el.clientHeight * ratio;\n occlusionMeshRef.current.scale.set(w, h, 1);\n }\n isMeshSizeSet.current = true;\n }\n }\n } else {\n const ele = el.children[0];\n if (ele != null && ele.clientWidth && ele != null && ele.clientHeight) {\n const ratio = 1 / viewport.factor;\n const w = ele.clientWidth * ratio;\n const h = ele.clientHeight * ratio;\n occlusionMeshRef.current.scale.set(w, h, 1);\n isMeshSizeSet.current = true;\n }\n occlusionMeshRef.current.lookAt(gl.camera.position);\n }\n }\n });\n const shaders = React.useMemo(() => ({\n vertexShader: !transform ? /* glsl */`\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include \n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n ` : undefined,\n fragmentShader: /* glsl */`\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `\n }), [transform]);\n return /*#__PURE__*/React.createElement(\"group\", _extends({}, props, {\n ref: group\n }), occlude && !isRayCastOcclusion && /*#__PURE__*/React.createElement(\"mesh\", {\n castShadow: castShadow,\n receiveShadow: receiveShadow,\n ref: occlusionMeshRef\n }, geometry || /*#__PURE__*/React.createElement(\"planeGeometry\", null), material || /*#__PURE__*/React.createElement(\"shaderMaterial\", {\n side: DoubleSide,\n vertexShader: shaders.vertexShader,\n fragmentShader: shaders.fragmentShader\n })));\n});\n\nexport { Html };\n","import * as React from \"react\";\r\nimport { Hotspot, TourData } from \"../../../Types\";\r\nimport WaypointExpIcon from \"../../Icons/WaypointExpIcon\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction Waypoint(props: { spot: Hotspot; tourData: TourData }) {\r\n const { spot, tourData } = props;\r\n\r\n const fillColor = React.useMemo(() => {\r\n const sceneIsMissing =\r\n !spot.target || !tourData.scenes.find((one) => one.id === spot.target);\r\n\r\n if (spot.isNew) return \"#ff8700\";\r\n else if (sceneIsMissing) return \"red\";\r\n else return \"white\";\r\n }, [spot, tourData]);\r\n\r\n return (\r\n
\r\n \r\n\r\n {spot.isNew && !spot.EDIT_POS &&

Non salvato

}\r\n {!spot.isNew && !spot.EDIT_POS && (\r\n <>\r\n {spot.target &&\r\n tourData.scenes.find((one) => one.id === spot.target) ? (\r\n

\r\n {tourData.scenes.find((one) => one.id === spot.target)!.title}\r\n

\r\n ) : (\r\n

\r\n {getLanguageFile(\"hotspots.missing_scene\")}\r\n

\r\n )}\r\n \r\n )}\r\n {!spot.isNew && !spot.target && (\r\n

\r\n {getLanguageFile(\"hotspots.missing_scene\")}\r\n

\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default Waypoint;\r\n","import React from \"react\";\r\nimport PopupExpIcon from \"../../Icons/PopupExpIcon\";\r\nimport { Hotspot, TourData } from \"../../../Types\";\r\nimport { editorHotspotStore } from \"../../../api/Zustand\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction Popup({ spot, tourData }: { spot: Hotspot; tourData: TourData }) {\r\n const { openHotspot, setHotspotData } = editorHotspotStore();\r\n\r\n return (\r\n
\r\n {\r\n
\r\n \r\n\r\n {!spot.EDIT_POS &&\r\n !spot.isNew &&\r\n tourData.popups.find((one) => one.id === spot.target) && (\r\n {\r\n openHotspot(true);\r\n setHotspotData(spot.target as string);\r\n }}\r\n >\r\n {tourData.popups.find((one) => one.id === spot.target)?.type ===\r\n \"image\"\r\n ? getLanguageFile(\"hotspots.picture\")\r\n : tourData.popups.find((one) => one.id === spot.target)\r\n ?.type === \"video\"\r\n ? getLanguageFile(\"hotspots.video\")\r\n : tourData.popups.find((one) => one.id === spot.target)\r\n ?.type === \"text\" &&\r\n tourData.popups.find((one) => one.id === spot.target)?.text\r\n ? getLanguageFile(\"hotspots.text\")\r\n : getLanguageFile(\"hotspots.pin\")}\r\n

\r\n )}\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default Popup;\r\n","import React from \"react\";\r\n\r\nimport { Hotspot } from \"../../../Types\";\r\nimport { Link } from \"../../Icons/left-side-bar-icons\";\r\n\r\nfunction linkCheck(url: string | undefined): string | undefined {\r\n if (url) {\r\n if (url.startsWith(\"http\") || url.startsWith(\"https\")) {\r\n return url;\r\n } else {\r\n return \"https://\" + url;\r\n }\r\n }\r\n\r\n return;\r\n}\r\n\r\nfunction LinkHotspot({ spot }: { spot: Hotspot }) {\r\n return (\r\n
\r\n \r\n\r\n {spot.isNew ? (\r\n !spot.EDIT_POS &&

Non salvato

\r\n ) : spot.target ? (\r\n \r\n {spot.title || \"Apri link\"}\r\n \r\n ) : (\r\n Link mancante\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default LinkHotspot;\r\n","import React from \"react\";\r\n\r\nimport { Hotspot } from \"../../../Types\";\r\nimport { editorHotspotStore } from \"../../../api/Zustand\";\r\nimport { QuizAddIcon } from \"../../Icons/left-side-bar-icons\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nfunction Quiz({ spot }: { spot: Hotspot }) {\r\n const { openHotspot, setHotspotData } = editorHotspotStore();\r\n\r\n return (\r\n
\r\n \r\n\r\n {spot.isNew ? (\r\n !spot.EDIT_POS &&

{getLanguageFile(\"hotspots.unsaved\")}

\r\n ) : spot.target ? (\r\n {\r\n openHotspot(true);\r\n setHotspotData(spot.target as string);\r\n }}\r\n >\r\n {getLanguageFile(\"hotspots.question\")}\r\n

\r\n ) : (\r\n

{getLanguageFile(\"hotspots.missing_question\")}

\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default Quiz;\r\n","// icon:sound | Ant Design Icons https://ant.design/components/icon/ | Ant Design\r\nimport * as React from \"react\";\r\n\r\nfunction IconSound(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default IconSound;\r\n","import React from \"react\";\r\nimport { Asset, Hotspot } from \"../../../Types\";\r\nimport IconSound from \"../../Icons/IconSound\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst Audio = (props: { spot: Hotspot; AudioList: Asset[] }) => {\r\n return (\r\n
\r\n \r\n

\r\n {props.spot.isNew\r\n ? getLanguageFile(\"right_panel.new_audio\")\r\n : props.spot.title ||\r\n props.AudioList?.find((one) => one.assetId === props.spot.target)\r\n ?.assetDescription ||\r\n getLanguageFile(\"right_panel.audio_name_error\")}\r\n

\r\n {/* {spot.isNew && !spot.EDIT_POS &&

Non salvato

}\r\n {!spot.isNew && !spot.EDIT_POS && (\r\n <>\r\n {spot.target &&\r\n tourData.scenes.find((one) => one.id === spot.target) ? (\r\n

\r\n {tourData.scenes.find((one) => one.id === spot.target)!.title}\r\n

\r\n ) : (\r\n

Scena mancante!

\r\n )}\r\n \r\n )}\r\n {!spot.isNew && !spot.target && (\r\n

Scena Mancante!

\r\n )} */}\r\n
\r\n );\r\n};\r\n\r\nexport default Audio;\r\n","import * as React from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nimport { useFrame, useThree } from \"@react-three/fiber\";\r\nimport { Asset, Hotspot, TourData } from \"../../../Types\";\r\nimport { Html, OrbitControlsProps, Plane } from \"@react-three/drei\";\r\nimport Waypoint from \"../Hotspots/Waypoint\";\r\nimport Popup from \"../Hotspots/Popup\";\r\nimport LinkHotspot from \"../Hotspots/Link\";\r\nimport Quiz from \"../Hotspots/Quiz\";\r\nimport Audio from \"../Hotspots/Audio\";\r\nimport { useCameraPositionStore } from \"../../../state management/zustand/gl-stores\";\r\nimport { useRightSidePanelStore } from \"../../../state management/zustand/editor-elements-stores\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n} from \"../../../api/Zustand\";\r\n\r\nconst dir = new THREE.Vector3();\r\n\r\nconst spotPos = new THREE.Vector3();\r\n\r\nconst Spot = (props: {\r\n hotspots: Hotspot[];\r\n spot: Hotspot;\r\n tourData: TourData;\r\n AudioList: Asset[] | undefined;\r\n handlePosChange: (pos: THREE.Vector3) => void;\r\n onDragStart: () => void;\r\n}) => {\r\n const { spot } = props;\r\n\r\n const { gl } = useThree();\r\n\r\n const rightPanel = useRightSidePanelStore();\r\n\r\n const camera = useCameraPositionStore();\r\n\r\n const { id, setEditingElem } = useEditingElementStore();\r\n\r\n const [dragging, setDragging] = React.useState(false);\r\n\r\n const invisiblePlaneRef = React.useRef(null);\r\n const wholeSpotRef = React.useRef(null);\r\n\r\n const position = React.useMemo(() => {\r\n if (spot.DRAGGING) return wholeSpotRef.current?.position;\r\n return new THREE.Vector3(spot.x, spot.y, spot.z);\r\n }, [spot]);\r\n\r\n useFrame((state) => {\r\n const camera = state.camera as THREE.PerspectiveCamera;\r\n\r\n //WAYPOINT MOVEMENT\r\n if (props.spot.EDIT_POS && wholeSpotRef.current) {\r\n const caster = state.raycaster;\r\n\r\n caster.setFromCamera(state.pointer, state.camera);\r\n\r\n const points = caster.intersectObjects(\r\n state.scene.children.filter((one) => one.name === \"sfera\")\r\n );\r\n const orbicontrols = state.controls as OrbitControlsProps;\r\n if (dragging) {\r\n orbicontrols.enabled = false;\r\n\r\n wholeSpotRef.current.position.lerp(points[0].point, 0.9);\r\n } else orbicontrols.enabled = true;\r\n }\r\n\r\n camera.getWorldDirection(dir);\r\n\r\n // if (!props.spot.EDIT_POS) state.gl.domElement.style.cursor = \"default\";\r\n\r\n if (invisiblePlaneRef.current && wholeSpotRef.current) {\r\n const offsetVal =\r\n wholeSpotRef.current.position.distanceTo(dir.multiplyScalar(200)) / 150;\r\n\r\n const value = ((3 - offsetVal) * camera.fov * 0.9) / 75;\r\n\r\n invisiblePlaneRef.current.scale.set(value, value, 1);\r\n invisiblePlaneRef.current.rotation.copy(camera.rotation);\r\n }\r\n });\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const hsShouldBeSemiOpaque = React.useMemo(() => {\r\n const currentScene = props.tourData.scenes.find(\r\n (one) => one.id === currentSceneID\r\n );\r\n\r\n const hsInEdit = currentScene?.hotspots.find(\r\n (one) => one.EDIT_POS || one.isNew\r\n );\r\n\r\n if (hsInEdit) {\r\n return hsInEdit.id !== props.spot.id;\r\n } else return false;\r\n }, [props.tourData, currentSceneID, props.spot]);\r\n\r\n React.useEffect(() => {\r\n if (spot.EDIT_POS) {\r\n if (dragging) {\r\n gl.domElement.style.cursor = \"grabbing\";\r\n }\r\n } else gl.domElement.style.cursor = \"auto\";\r\n }, [dragging, spot.EDIT_POS, gl.domElement]);\r\n\r\n return (\r\n \r\n {spot.EDIT_POS && (\r\n {\r\n if (spot.EDIT_POS) return (gl.domElement.style.cursor = \"grab\");\r\n else gl.domElement.style.cursor = \"auto\";\r\n }}\r\n onPointerLeave={() => (gl.domElement.style.cursor = \"auto\")}\r\n //\r\n onPointerDown={(e) => {\r\n if (e.button === 0 && spot.EDIT_POS) {\r\n setDragging(true);\r\n\r\n props.onDragStart();\r\n } else return;\r\n }}\r\n onPointerUp={(e) => {\r\n if (spot.EDIT_POS) {\r\n setDragging(false);\r\n gl.domElement.style.cursor = \"grab\";\r\n\r\n wholeSpotRef.current?.position.copy(e.point);\r\n props.handlePosChange(e.point);\r\n }\r\n }}\r\n ref={invisiblePlaneRef}\r\n args={[15, 15]}\r\n />\r\n )}\r\n\r\n {\r\n e.stopPropagation();\r\n }}\r\n onPointerUp={(e) => {\r\n //@ts-ignore\r\n // controls.enabled = true;\r\n }}\r\n style={{\r\n // visibility: \"hidden\",\r\n pointerEvents: props.hotspots?.some((spot) => spot.EDIT_POS === true)\r\n ? \"none\"\r\n : \"auto\",\r\n opacity: hsShouldBeSemiOpaque ? 0.25 : 1,\r\n transition: \"all 100ms ease-in-out\",\r\n }}\r\n >\r\n {\r\n e.stopPropagation();\r\n rightPanel.setOpen(true);\r\n\r\n setEditingElem(props.spot.type, props.spot.id);\r\n\r\n const position = wholeSpotRef.current?.getWorldPosition(spotPos);\r\n\r\n if (position) {\r\n camera.setCameraLookAt(position.multiplyScalar(-1));\r\n }\r\n }}\r\n style={{\r\n userSelect: \"none\",\r\n border:\r\n id === props.spot.id\r\n ? props.spot.EDIT_POS\r\n ? \"dashed #ff8700\"\r\n : \"solid #6b7ef9\"\r\n : \"none\",\r\n width: \"max-content\",\r\n }}\r\n >\r\n {/* {JSON.stringify(spot.DRAGGING)} */}\r\n {props.spot.type === \"transition\" ? (\r\n \r\n ) : props.spot.type === \"popup\" ? (\r\n
e.stopPropagation()}>\r\n \r\n
\r\n ) : props.spot.type === \"link\" ? (\r\n \r\n ) : props.spot.type === \"quiz\" ? (\r\n \r\n ) : props.spot.type === \"audio\" && props.AudioList ? (\r\n
\r\n );\r\n};\r\n\r\nexport default Spot;\r\n","import {\n EventDispatcher,\n Matrix4,\n MOUSE,\n OrthographicCamera,\n PerspectiveCamera,\n Quaternion,\n Spherical,\n TOUCH,\n Vector2,\n Vector3,\n Ray,\n Plane,\n} from 'three'\n\nconst _ray = new Ray()\nconst _plane = new Plane()\nconst TILT_LIMIT = Math.cos(70 * (Math.PI / 180))\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst moduloWrapAround = (offset: number, capacity: number) => ((offset % capacity) + capacity) % capacity\n\nclass OrbitControls extends EventDispatcher {\n object: PerspectiveCamera | OrthographicCamera\n domElement: HTMLElement | undefined\n // Set to false to disable this control\n enabled = true\n // \"target\" sets the location of focus, where the object orbits around\n target = new Vector3()\n // How far you can dolly in and out ( PerspectiveCamera only )\n minDistance = 0\n maxDistance = Infinity\n // How far you can zoom in and out ( OrthographicCamera only )\n minZoom = 0\n maxZoom = Infinity\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n minPolarAngle = 0 // radians\n maxPolarAngle = Math.PI // radians\n // How far you can orbit horizontally, upper and lower limits.\n // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n minAzimuthAngle = -Infinity // radians\n maxAzimuthAngle = Infinity // radians\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n enableDamping = false\n dampingFactor = 0.05\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n enableZoom = true\n zoomSpeed = 1.0\n // Set to false to disable rotating\n enableRotate = true\n rotateSpeed = 1.0\n // Set to false to disable panning\n enablePan = true\n panSpeed = 1.0\n screenSpacePanning = true // if false, pan orthogonal to world-space direction camera.up\n keyPanSpeed = 7.0 // pixels moved per arrow key push\n zoomToCursor = false\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n autoRotate = false\n autoRotateSpeed = 2.0 // 30 seconds per orbit when fps is 60\n reverseOrbit = false // true if you want to reverse the orbit to mouse drag from left to right = orbits left\n reverseHorizontalOrbit = false // true if you want to reverse the horizontal orbit direction\n reverseVerticalOrbit = false // true if you want to reverse the vertical orbit direction\n // The four arrow keys\n keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' }\n // Mouse buttons\n mouseButtons: Partial<{\n LEFT: MOUSE\n MIDDLE: MOUSE\n RIGHT: MOUSE\n }> = {\n LEFT: MOUSE.ROTATE,\n MIDDLE: MOUSE.DOLLY,\n RIGHT: MOUSE.PAN,\n }\n // Touch fingers\n touches: Partial<{\n ONE: TOUCH\n TWO: TOUCH\n }> = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN }\n target0: Vector3\n position0: Vector3\n zoom0: number\n // the target DOM element for key events\n _domElementKeyEvents: any = null\n\n getPolarAngle: () => number\n getAzimuthalAngle: () => number\n setPolarAngle: (x: number) => void\n setAzimuthalAngle: (x: number) => void\n getDistance: () => number\n\n listenToKeyEvents: (domElement: HTMLElement) => void\n stopListenToKeyEvents: () => void\n saveState: () => void\n reset: () => void\n update: () => void\n connect: (domElement: HTMLElement) => void\n dispose: () => void\n\n constructor(object: PerspectiveCamera | OrthographicCamera, domElement?: HTMLElement) {\n super()\n\n this.object = object\n this.domElement = domElement\n\n // for reset\n this.target0 = this.target.clone()\n this.position0 = this.object.position.clone()\n this.zoom0 = this.object.zoom\n\n //\n // public methods\n //\n\n this.getPolarAngle = (): number => spherical.phi\n\n this.getAzimuthalAngle = (): number => spherical.theta\n\n this.setPolarAngle = (value: number): void => {\n // use modulo wrapping to safeguard value\n let phi = moduloWrapAround(value, 2 * Math.PI)\n let currentPhi = spherical.phi\n\n // convert to the equivalent shortest angle\n if (currentPhi < 0) currentPhi += 2 * Math.PI\n if (phi < 0) phi += 2 * Math.PI\n let phiDist = Math.abs(phi - currentPhi)\n if (2 * Math.PI - phiDist < phiDist) {\n if (phi < currentPhi) {\n phi += 2 * Math.PI\n } else {\n currentPhi += 2 * Math.PI\n }\n }\n sphericalDelta.phi = phi - currentPhi\n scope.update()\n }\n\n this.setAzimuthalAngle = (value: number): void => {\n // use modulo wrapping to safeguard value\n let theta = moduloWrapAround(value, 2 * Math.PI)\n let currentTheta = spherical.theta\n\n // convert to the equivalent shortest angle\n if (currentTheta < 0) currentTheta += 2 * Math.PI\n if (theta < 0) theta += 2 * Math.PI\n let thetaDist = Math.abs(theta - currentTheta)\n if (2 * Math.PI - thetaDist < thetaDist) {\n if (theta < currentTheta) {\n theta += 2 * Math.PI\n } else {\n currentTheta += 2 * Math.PI\n }\n }\n sphericalDelta.theta = theta - currentTheta\n scope.update()\n }\n\n this.getDistance = (): number => scope.object.position.distanceTo(scope.target)\n\n this.listenToKeyEvents = (domElement: HTMLElement): void => {\n domElement.addEventListener('keydown', onKeyDown)\n this._domElementKeyEvents = domElement\n }\n\n this.stopListenToKeyEvents = (): void => {\n this._domElementKeyEvents.removeEventListener('keydown', onKeyDown)\n this._domElementKeyEvents = null\n }\n\n this.saveState = (): void => {\n scope.target0.copy(scope.target)\n scope.position0.copy(scope.object.position)\n scope.zoom0 = scope.object.zoom\n }\n\n this.reset = (): void => {\n scope.target.copy(scope.target0)\n scope.object.position.copy(scope.position0)\n scope.object.zoom = scope.zoom0\n scope.object.updateProjectionMatrix()\n\n // @ts-ignore\n scope.dispatchEvent(changeEvent)\n\n scope.update()\n\n state = STATE.NONE\n }\n\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = ((): (() => void) => {\n const offset = new Vector3()\n const up = new Vector3(0, 1, 0)\n\n // so camera.up is the orbit axis\n const quat = new Quaternion().setFromUnitVectors(object.up, up)\n const quatInverse = quat.clone().invert()\n\n const lastPosition = new Vector3()\n const lastQuaternion = new Quaternion()\n\n const twoPI = 2 * Math.PI\n\n return function update(): boolean {\n const position = scope.object.position\n\n // update new up direction\n quat.setFromUnitVectors(object.up, up)\n quatInverse.copy(quat).invert()\n\n offset.copy(position).sub(scope.target)\n\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat)\n\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset)\n\n if (scope.autoRotate && state === STATE.NONE) {\n rotateLeft(getAutoRotationAngle())\n }\n\n if (scope.enableDamping) {\n spherical.theta += sphericalDelta.theta * scope.dampingFactor\n spherical.phi += sphericalDelta.phi * scope.dampingFactor\n } else {\n spherical.theta += sphericalDelta.theta\n spherical.phi += sphericalDelta.phi\n }\n\n // restrict theta to be between desired limits\n\n let min = scope.minAzimuthAngle\n let max = scope.maxAzimuthAngle\n\n if (isFinite(min) && isFinite(max)) {\n if (min < -Math.PI) min += twoPI\n else if (min > Math.PI) min -= twoPI\n\n if (max < -Math.PI) max += twoPI\n else if (max > Math.PI) max -= twoPI\n\n if (min <= max) {\n spherical.theta = Math.max(min, Math.min(max, spherical.theta))\n } else {\n spherical.theta =\n spherical.theta > (min + max) / 2 ? Math.max(min, spherical.theta) : Math.min(max, spherical.theta)\n }\n }\n\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi))\n spherical.makeSafe()\n\n // move target to panned location\n\n if (scope.enableDamping === true) {\n scope.target.addScaledVector(panOffset, scope.dampingFactor)\n } else {\n scope.target.add(panOffset)\n }\n\n // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera\n // we adjust zoom later in these cases\n if ((scope.zoomToCursor && performCursorZoom) || (scope.object as OrthographicCamera).isOrthographicCamera) {\n spherical.radius = clampDistance(spherical.radius)\n } else {\n spherical.radius = clampDistance(spherical.radius * scale)\n }\n\n offset.setFromSpherical(spherical)\n\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse)\n\n position.copy(scope.target).add(offset)\n\n if (!scope.object.matrixAutoUpdate) scope.object.updateMatrix()\n scope.object.lookAt(scope.target)\n\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= 1 - scope.dampingFactor\n sphericalDelta.phi *= 1 - scope.dampingFactor\n\n panOffset.multiplyScalar(1 - scope.dampingFactor)\n } else {\n sphericalDelta.set(0, 0, 0)\n\n panOffset.set(0, 0, 0)\n }\n\n // adjust camera position\n let zoomChanged = false\n if (scope.zoomToCursor && performCursorZoom) {\n let newRadius = null\n if (scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) {\n // move the camera down the pointer ray\n // this method avoids floating point error\n const prevRadius = offset.length()\n newRadius = clampDistance(prevRadius * scale)\n\n const radiusDelta = prevRadius - newRadius\n scope.object.position.addScaledVector(dollyDirection, radiusDelta)\n scope.object.updateMatrixWorld()\n } else if ((scope.object as OrthographicCamera).isOrthographicCamera) {\n // adjust the ortho camera position based on zoom changes\n const mouseBefore = new Vector3(mouse.x, mouse.y, 0)\n mouseBefore.unproject(scope.object)\n\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / scale))\n scope.object.updateProjectionMatrix()\n zoomChanged = true\n\n const mouseAfter = new Vector3(mouse.x, mouse.y, 0)\n mouseAfter.unproject(scope.object)\n\n scope.object.position.sub(mouseAfter).add(mouseBefore)\n scope.object.updateMatrixWorld()\n\n newRadius = offset.length()\n } else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.')\n scope.zoomToCursor = false\n }\n\n // handle the placement of the target\n if (newRadius !== null) {\n if (scope.screenSpacePanning) {\n // position the orbit target in front of the new camera position\n scope.target\n .set(0, 0, -1)\n .transformDirection(scope.object.matrix)\n .multiplyScalar(newRadius)\n .add(scope.object.position)\n } else {\n // get the ray and translation plane to compute target\n _ray.origin.copy(scope.object.position)\n _ray.direction.set(0, 0, -1).transformDirection(scope.object.matrix)\n\n // if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid\n // extremely large values\n if (Math.abs(scope.object.up.dot(_ray.direction)) < TILT_LIMIT) {\n object.lookAt(scope.target)\n } else {\n _plane.setFromNormalAndCoplanarPoint(scope.object.up, scope.target)\n _ray.intersectPlane(_plane, scope.target)\n }\n }\n }\n } else if (scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera) {\n zoomChanged = scale !== 1\n\n if (zoomChanged) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / scale))\n scope.object.updateProjectionMatrix()\n }\n }\n\n scale = 1\n performCursorZoom = false\n\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n if (\n zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS\n ) {\n // @ts-ignore\n scope.dispatchEvent(changeEvent)\n\n lastPosition.copy(scope.object.position)\n lastQuaternion.copy(scope.object.quaternion)\n zoomChanged = false\n\n return true\n }\n\n return false\n }\n })()\n\n // https://github.com/mrdoob/three.js/issues/20575\n this.connect = (domElement: HTMLElement): void => {\n if ((domElement as any) === document) {\n console.error(\n 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.',\n )\n }\n scope.domElement = domElement\n // disables touch scroll\n // touch-action needs to be defined for pointer events to work on mobile\n // https://stackoverflow.com/a/48254578\n scope.domElement.style.touchAction = 'none'\n scope.domElement.addEventListener('contextmenu', onContextMenu)\n scope.domElement.addEventListener('pointerdown', onPointerDown)\n scope.domElement.addEventListener('pointercancel', onPointerUp)\n scope.domElement.addEventListener('wheel', onMouseWheel)\n }\n\n this.dispose = (): void => {\n // Enabling touch scroll\n if (scope.domElement) {\n scope.domElement.style.touchAction = 'auto'\n }\n scope.domElement?.removeEventListener('contextmenu', onContextMenu)\n scope.domElement?.removeEventListener('pointerdown', onPointerDown)\n scope.domElement?.removeEventListener('pointercancel', onPointerUp)\n scope.domElement?.removeEventListener('wheel', onMouseWheel)\n scope.domElement?.ownerDocument.removeEventListener('pointermove', onPointerMove)\n scope.domElement?.ownerDocument.removeEventListener('pointerup', onPointerUp)\n if (scope._domElementKeyEvents !== null) {\n scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown)\n }\n //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n }\n\n //\n // internals\n //\n\n const scope = this\n\n const changeEvent = { type: 'change' }\n const startEvent = { type: 'start' }\n const endEvent = { type: 'end' }\n\n const STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6,\n }\n\n let state = STATE.NONE\n\n const EPS = 0.000001\n\n // current position in spherical coordinates\n const spherical = new Spherical()\n const sphericalDelta = new Spherical()\n\n let scale = 1\n const panOffset = new Vector3()\n\n const rotateStart = new Vector2()\n const rotateEnd = new Vector2()\n const rotateDelta = new Vector2()\n\n const panStart = new Vector2()\n const panEnd = new Vector2()\n const panDelta = new Vector2()\n\n const dollyStart = new Vector2()\n const dollyEnd = new Vector2()\n const dollyDelta = new Vector2()\n\n const dollyDirection = new Vector3()\n const mouse = new Vector2()\n let performCursorZoom = false\n\n const pointers: PointerEvent[] = []\n const pointerPositions: { [key: string]: Vector2 } = {}\n\n function getAutoRotationAngle(): number {\n return ((2 * Math.PI) / 60 / 60) * scope.autoRotateSpeed\n }\n\n function getZoomScale(): number {\n return Math.pow(0.95, scope.zoomSpeed)\n }\n\n function rotateLeft(angle: number): void {\n if (scope.reverseOrbit || scope.reverseHorizontalOrbit) {\n sphericalDelta.theta += angle\n } else {\n sphericalDelta.theta -= angle\n }\n }\n\n function rotateUp(angle: number): void {\n if (scope.reverseOrbit || scope.reverseVerticalOrbit) {\n sphericalDelta.phi += angle\n } else {\n sphericalDelta.phi -= angle\n }\n }\n\n const panLeft = (() => {\n const v = new Vector3()\n\n return function panLeft(distance: number, objectMatrix: Matrix4) {\n v.setFromMatrixColumn(objectMatrix, 0) // get X column of objectMatrix\n v.multiplyScalar(-distance)\n\n panOffset.add(v)\n }\n })()\n\n const panUp = (() => {\n const v = new Vector3()\n\n return function panUp(distance: number, objectMatrix: Matrix4) {\n if (scope.screenSpacePanning === true) {\n v.setFromMatrixColumn(objectMatrix, 1)\n } else {\n v.setFromMatrixColumn(objectMatrix, 0)\n v.crossVectors(scope.object.up, v)\n }\n\n v.multiplyScalar(distance)\n\n panOffset.add(v)\n }\n })()\n\n // deltaX and deltaY are in pixels; right and down are positive\n const pan = (() => {\n const offset = new Vector3()\n\n return function pan(deltaX: number, deltaY: number) {\n const element = scope.domElement\n\n if (element && scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) {\n // perspective\n const position = scope.object.position\n offset.copy(position).sub(scope.target)\n let targetDistance = offset.length()\n\n // half of the fov is center to top of screen\n targetDistance *= Math.tan(((scope.object.fov / 2) * Math.PI) / 180.0)\n\n // we use only clientHeight here so aspect ratio does not distort speed\n panLeft((2 * deltaX * targetDistance) / element.clientHeight, scope.object.matrix)\n panUp((2 * deltaY * targetDistance) / element.clientHeight, scope.object.matrix)\n } else if (element && scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera) {\n // orthographic\n panLeft(\n (deltaX * (scope.object.right - scope.object.left)) / scope.object.zoom / element.clientWidth,\n scope.object.matrix,\n )\n panUp(\n (deltaY * (scope.object.top - scope.object.bottom)) / scope.object.zoom / element.clientHeight,\n scope.object.matrix,\n )\n } else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.')\n scope.enablePan = false\n }\n }\n })()\n\n function dollyOut(dollyScale: number) {\n if (\n (scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) ||\n (scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera)\n ) {\n scale /= dollyScale\n } else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n function dollyIn(dollyScale: number) {\n if (\n (scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) ||\n (scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera)\n ) {\n scale *= dollyScale\n } else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n function updateMouseParameters(event: MouseEvent): void {\n if (!scope.zoomToCursor || !scope.domElement) {\n return\n }\n\n performCursorZoom = true\n\n const rect = scope.domElement.getBoundingClientRect()\n const x = event.clientX - rect.left\n const y = event.clientY - rect.top\n const w = rect.width\n const h = rect.height\n\n mouse.x = (x / w) * 2 - 1\n mouse.y = -(y / h) * 2 + 1\n\n dollyDirection.set(mouse.x, mouse.y, 1).unproject(scope.object).sub(scope.object.position).normalize()\n }\n\n function clampDistance(dist: number): number {\n return Math.max(scope.minDistance, Math.min(scope.maxDistance, dist))\n }\n\n //\n // event callbacks - update the object state\n //\n\n function handleMouseDownRotate(event: MouseEvent) {\n rotateStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseDownDolly(event: MouseEvent) {\n updateMouseParameters(event)\n dollyStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseDownPan(event: MouseEvent) {\n panStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseMoveRotate(event: MouseEvent) {\n rotateEnd.set(event.clientX, event.clientY)\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed)\n\n const element = scope.domElement\n\n if (element) {\n rotateLeft((2 * Math.PI * rotateDelta.x) / element.clientHeight) // yes, height\n rotateUp((2 * Math.PI * rotateDelta.y) / element.clientHeight)\n }\n rotateStart.copy(rotateEnd)\n scope.update()\n }\n\n function handleMouseMoveDolly(event: MouseEvent) {\n dollyEnd.set(event.clientX, event.clientY)\n dollyDelta.subVectors(dollyEnd, dollyStart)\n\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale())\n } else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale())\n }\n\n dollyStart.copy(dollyEnd)\n scope.update()\n }\n\n function handleMouseMovePan(event: MouseEvent) {\n panEnd.set(event.clientX, event.clientY)\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed)\n pan(panDelta.x, panDelta.y)\n panStart.copy(panEnd)\n scope.update()\n }\n\n function handleMouseWheel(event: WheelEvent) {\n updateMouseParameters(event)\n\n if (event.deltaY < 0) {\n dollyIn(getZoomScale())\n } else if (event.deltaY > 0) {\n dollyOut(getZoomScale())\n }\n\n scope.update()\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n let needsUpdate = false\n\n switch (event.code) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed)\n needsUpdate = true\n break\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed)\n needsUpdate = true\n break\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0)\n needsUpdate = true\n break\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0)\n needsUpdate = true\n break\n }\n\n if (needsUpdate) {\n // prevent the browser from scrolling on cursor keys\n event.preventDefault()\n scope.update()\n }\n }\n\n function handleTouchStartRotate() {\n if (pointers.length == 1) {\n rotateStart.set(pointers[0].pageX, pointers[0].pageY)\n } else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX)\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY)\n\n rotateStart.set(x, y)\n }\n }\n\n function handleTouchStartPan() {\n if (pointers.length == 1) {\n panStart.set(pointers[0].pageX, pointers[0].pageY)\n } else {\n const x = 0.5 * (pointers[0].pageX + pointers[1].pageX)\n const y = 0.5 * (pointers[0].pageY + pointers[1].pageY)\n\n panStart.set(x, y)\n }\n }\n\n function handleTouchStartDolly() {\n const dx = pointers[0].pageX - pointers[1].pageX\n const dy = pointers[0].pageY - pointers[1].pageY\n const distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyStart.set(0, distance)\n }\n\n function handleTouchStartDollyPan() {\n if (scope.enableZoom) handleTouchStartDolly()\n if (scope.enablePan) handleTouchStartPan()\n }\n\n function handleTouchStartDollyRotate() {\n if (scope.enableZoom) handleTouchStartDolly()\n if (scope.enableRotate) handleTouchStartRotate()\n }\n\n function handleTouchMoveRotate(event: PointerEvent) {\n if (pointers.length == 1) {\n rotateEnd.set(event.pageX, event.pageY)\n } else {\n const position = getSecondPointerPosition(event)\n const x = 0.5 * (event.pageX + position.x)\n const y = 0.5 * (event.pageY + position.y)\n rotateEnd.set(x, y)\n }\n\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed)\n\n const element = scope.domElement\n\n if (element) {\n rotateLeft((2 * Math.PI * rotateDelta.x) / element.clientHeight) // yes, height\n rotateUp((2 * Math.PI * rotateDelta.y) / element.clientHeight)\n }\n rotateStart.copy(rotateEnd)\n }\n\n function handleTouchMovePan(event: PointerEvent) {\n if (pointers.length == 1) {\n panEnd.set(event.pageX, event.pageY)\n } else {\n const position = getSecondPointerPosition(event)\n const x = 0.5 * (event.pageX + position.x)\n const y = 0.5 * (event.pageY + position.y)\n panEnd.set(x, y)\n }\n\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed)\n pan(panDelta.x, panDelta.y)\n panStart.copy(panEnd)\n }\n\n function handleTouchMoveDolly(event: PointerEvent) {\n const position = getSecondPointerPosition(event)\n const dx = event.pageX - position.x\n const dy = event.pageY - position.y\n const distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyEnd.set(0, distance)\n dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed))\n dollyOut(dollyDelta.y)\n dollyStart.copy(dollyEnd)\n }\n\n function handleTouchMoveDollyPan(event: PointerEvent) {\n if (scope.enableZoom) handleTouchMoveDolly(event)\n if (scope.enablePan) handleTouchMovePan(event)\n }\n\n function handleTouchMoveDollyRotate(event: PointerEvent) {\n if (scope.enableZoom) handleTouchMoveDolly(event)\n if (scope.enableRotate) handleTouchMoveRotate(event)\n }\n\n //\n // event handlers - FSM: listen for events and reset state\n //\n\n function onPointerDown(event: PointerEvent) {\n if (scope.enabled === false) return\n\n if (pointers.length === 0) {\n scope.domElement?.ownerDocument.addEventListener('pointermove', onPointerMove)\n scope.domElement?.ownerDocument.addEventListener('pointerup', onPointerUp)\n }\n\n addPointer(event)\n\n if (event.pointerType === 'touch') {\n onTouchStart(event)\n } else {\n onMouseDown(event)\n }\n }\n\n function onPointerMove(event: PointerEvent) {\n if (scope.enabled === false) return\n\n if (event.pointerType === 'touch') {\n onTouchMove(event)\n } else {\n onMouseMove(event)\n }\n }\n\n function onPointerUp(event: PointerEvent) {\n removePointer(event)\n\n if (pointers.length === 0) {\n scope.domElement?.releasePointerCapture(event.pointerId)\n\n scope.domElement?.ownerDocument.removeEventListener('pointermove', onPointerMove)\n scope.domElement?.ownerDocument.removeEventListener('pointerup', onPointerUp)\n }\n\n // @ts-ignore\n scope.dispatchEvent(endEvent)\n\n state = STATE.NONE\n }\n\n function onMouseDown(event: MouseEvent) {\n let mouseAction\n\n switch (event.button) {\n case 0:\n mouseAction = scope.mouseButtons.LEFT\n break\n\n case 1:\n mouseAction = scope.mouseButtons.MIDDLE\n break\n\n case 2:\n mouseAction = scope.mouseButtons.RIGHT\n break\n\n default:\n mouseAction = -1\n }\n\n switch (mouseAction) {\n case MOUSE.DOLLY:\n if (scope.enableZoom === false) return\n handleMouseDownDolly(event)\n state = STATE.DOLLY\n break\n\n case MOUSE.ROTATE:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false) return\n handleMouseDownPan(event)\n state = STATE.PAN\n } else {\n if (scope.enableRotate === false) return\n handleMouseDownRotate(event)\n state = STATE.ROTATE\n }\n break\n\n case MOUSE.PAN:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false) return\n handleMouseDownRotate(event)\n state = STATE.ROTATE\n } else {\n if (scope.enablePan === false) return\n handleMouseDownPan(event)\n state = STATE.PAN\n }\n break\n\n default:\n state = STATE.NONE\n }\n\n if (state !== STATE.NONE) {\n // @ts-ignore\n scope.dispatchEvent(startEvent)\n }\n }\n\n function onMouseMove(event: MouseEvent) {\n if (scope.enabled === false) return\n\n switch (state) {\n case STATE.ROTATE:\n if (scope.enableRotate === false) return\n handleMouseMoveRotate(event)\n break\n\n case STATE.DOLLY:\n if (scope.enableZoom === false) return\n handleMouseMoveDolly(event)\n break\n\n case STATE.PAN:\n if (scope.enablePan === false) return\n handleMouseMovePan(event)\n break\n }\n }\n\n function onMouseWheel(event: WheelEvent) {\n if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) {\n return\n }\n\n event.preventDefault()\n\n // @ts-ignore\n scope.dispatchEvent(startEvent)\n\n handleMouseWheel(event)\n\n // @ts-ignore\n scope.dispatchEvent(endEvent)\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (scope.enabled === false || scope.enablePan === false) return\n handleKeyDown(event)\n }\n\n function onTouchStart(event: PointerEvent) {\n trackPointer(event)\n\n switch (pointers.length) {\n case 1:\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n if (scope.enableRotate === false) return\n handleTouchStartRotate()\n state = STATE.TOUCH_ROTATE\n break\n\n case TOUCH.PAN:\n if (scope.enablePan === false) return\n handleTouchStartPan()\n state = STATE.TOUCH_PAN\n break\n\n default:\n state = STATE.NONE\n }\n\n break\n\n case 2:\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false) return\n handleTouchStartDollyPan()\n state = STATE.TOUCH_DOLLY_PAN\n break\n\n case TOUCH.DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false) return\n handleTouchStartDollyRotate()\n state = STATE.TOUCH_DOLLY_ROTATE\n break\n\n default:\n state = STATE.NONE\n }\n\n break\n\n default:\n state = STATE.NONE\n }\n\n if (state !== STATE.NONE) {\n // @ts-ignore\n scope.dispatchEvent(startEvent)\n }\n }\n\n function onTouchMove(event: PointerEvent) {\n trackPointer(event)\n\n switch (state) {\n case STATE.TOUCH_ROTATE:\n if (scope.enableRotate === false) return\n handleTouchMoveRotate(event)\n scope.update()\n break\n\n case STATE.TOUCH_PAN:\n if (scope.enablePan === false) return\n handleTouchMovePan(event)\n scope.update()\n break\n\n case STATE.TOUCH_DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false) return\n handleTouchMoveDollyPan(event)\n scope.update()\n break\n\n case STATE.TOUCH_DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false) return\n handleTouchMoveDollyRotate(event)\n scope.update()\n break\n\n default:\n state = STATE.NONE\n }\n }\n\n function onContextMenu(event: Event) {\n if (scope.enabled === false) return\n event.preventDefault()\n }\n\n function addPointer(event: PointerEvent) {\n pointers.push(event)\n }\n\n function removePointer(event: PointerEvent) {\n delete pointerPositions[event.pointerId]\n\n for (let i = 0; i < pointers.length; i++) {\n if (pointers[i].pointerId == event.pointerId) {\n pointers.splice(i, 1)\n return\n }\n }\n }\n\n function trackPointer(event: PointerEvent) {\n let position = pointerPositions[event.pointerId]\n\n if (position === undefined) {\n position = new Vector2()\n pointerPositions[event.pointerId] = position\n }\n\n position.set(event.pageX, event.pageY)\n }\n\n function getSecondPointerPosition(event: PointerEvent) {\n const pointer = event.pointerId === pointers[0].pointerId ? pointers[1] : pointers[0]\n return pointerPositions[pointer.pointerId]\n }\n\n // connect events\n if (domElement !== undefined) this.connect(domElement)\n // force an update at start\n this.update()\n }\n}\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nclass MapControls extends OrbitControls {\n constructor(object: PerspectiveCamera | OrthographicCamera, domElement?: HTMLElement) {\n super(object, domElement)\n\n this.screenSpacePanning = false // pan orthogonal to world-space direction camera.up\n\n this.mouseButtons.LEFT = MOUSE.PAN\n this.mouseButtons.RIGHT = MOUSE.ROTATE\n\n this.touches.ONE = TOUCH.PAN\n this.touches.TWO = TOUCH.DOLLY_ROTATE\n }\n}\n\nexport { OrbitControls, MapControls }\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport * as React from 'react';\nimport { OrbitControls as OrbitControls$1 } from 'three-stdlib';\n\nconst OrbitControls = /* @__PURE__ */React.forwardRef(({\n makeDefault,\n camera,\n regress,\n domElement,\n enableDamping = true,\n keyEvents = false,\n onChange,\n onStart,\n onEnd,\n ...restProps\n}, ref) => {\n const invalidate = useThree(state => state.invalidate);\n const defaultCamera = useThree(state => state.camera);\n const gl = useThree(state => state.gl);\n const events = useThree(state => state.events);\n const setEvents = useThree(state => state.setEvents);\n const set = useThree(state => state.set);\n const get = useThree(state => state.get);\n const performance = useThree(state => state.performance);\n const explCamera = camera || defaultCamera;\n const explDomElement = domElement || events.connected || gl.domElement;\n const controls = React.useMemo(() => new OrbitControls$1(explCamera), [explCamera]);\n useFrame(() => {\n if (controls.enabled) controls.update();\n }, -1);\n React.useEffect(() => {\n if (keyEvents) {\n controls.connect(keyEvents === true ? explDomElement : keyEvents);\n }\n controls.connect(explDomElement);\n return () => void controls.dispose();\n }, [keyEvents, explDomElement, regress, controls, invalidate]);\n React.useEffect(() => {\n const callback = e => {\n invalidate();\n if (regress) performance.regress();\n if (onChange) onChange(e);\n };\n const onStartCb = e => {\n if (onStart) onStart(e);\n };\n const onEndCb = e => {\n if (onEnd) onEnd(e);\n };\n controls.addEventListener('change', callback);\n controls.addEventListener('start', onStartCb);\n controls.addEventListener('end', onEndCb);\n return () => {\n controls.removeEventListener('start', onStartCb);\n controls.removeEventListener('end', onEndCb);\n controls.removeEventListener('change', callback);\n };\n }, [onChange, onStart, onEnd, controls, invalidate, setEvents]);\n React.useEffect(() => {\n if (makeDefault) {\n const old = get().controls;\n set({\n controls\n });\n return () => set({\n controls: old\n });\n }\n }, [makeDefault, controls]);\n return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n ref: ref,\n object: controls,\n enableDamping: enableDamping\n }, restProps));\n});\n\nexport { OrbitControls };\n","import { OrbitControls, OrbitControlsProps } from \"@react-three/drei\";\r\nimport React from \"react\";\r\nimport { Scene } from \"../../Types\";\r\nimport * as THREE from \"three\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { useCameraPositionStore } from \"../../state management/zustand/gl-stores\";\r\n\r\nconst Controls = (props: { scene: Scene; zoom: number }) => {\r\n const { scene, zoom } = props;\r\n\r\n const maxPolarAngle = React.useMemo(() => {\r\n if (scene.lockRotation) return Math.PI / 2;\r\n else return Math.PI;\r\n }, [scene.lockRotation]);\r\n\r\n const minPolarAngle = React.useMemo(() => {\r\n if (scene.lockRotation) return Math.PI / 2;\r\n else return 0;\r\n }, [scene.lockRotation]);\r\n\r\n const initialPosition = React.useMemo(() => {\r\n const initial = new THREE.Vector3(0, 1, 0);\r\n return initial;\r\n }, []);\r\n\r\n const camera = useCameraPositionStore();\r\n\r\n useFrame((state) => {\r\n const controls = state.controls as OrbitControlsProps;\r\n\r\n const perspCamera = controls.object;\r\n\r\n if (camera.cameraLookAt && perspCamera) {\r\n const distance = perspCamera.position.distanceTo(camera.cameraLookAt);\r\n perspCamera.position.lerp(camera.cameraLookAt, 0.15);\r\n\r\n controls.enableRotate = false;\r\n if (distance < 0.01) {\r\n controls.enableRotate = true;\r\n\r\n camera.resetCameraLookAt();\r\n }\r\n }\r\n });\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Controls;\r\n\r\n// const distance = camera.position.distanceTo(cameraPos);\r\n\r\n// camera.position.lerp(cameraPos, 0.15);\r\n// if (distance < 0.01) {\r\n// setCameraPos(undefined);\r\n// }\r\n","import { PresetInfo, PresetResult, NavigatorUABrandVersion } from \"./types\";\n\nexport function some(arr: T[], callback: (value: T, index: number) => any): boolean {\n const length = arr.length;\n\n for (let i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return true;\n }\n }\n\n return false;\n}\nexport function find(arr: T[], callback: (value: T, index: number) => any): T | null {\n const length = arr.length;\n\n for (let i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n return null;\n}\nexport function getUserAgentString(agent?: string): string {\n let userAgent = agent;\n if (typeof userAgent === \"undefined\") {\n if (typeof navigator === \"undefined\" || !navigator) {\n return \"\";\n }\n\n userAgent = navigator.userAgent || \"\";\n }\n return userAgent!.toLowerCase();\n}\nexport function execRegExp(pattern: string, text: string): RegExpExecArray | null {\n try {\n return new RegExp(pattern, \"g\").exec(text);\n } catch (e) {\n return null;\n }\n}\nexport function hasUserAgentData(): boolean {\n if (typeof navigator === \"undefined\" || !navigator || !navigator.userAgentData) {\n return false;\n }\n const userAgentData = navigator.userAgentData;\n const brands = (userAgentData.brands || userAgentData.uaList);\n\n return !!(brands && brands.length);\n}\nexport function findVersion(versionTest: string, userAgent: string): string {\n const result = execRegExp(`(${versionTest})((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))`, userAgent);\n\n return result ? result[3] : \"\";\n}\nexport function convertVersion(text: string): string {\n return text.replace(/_/g, \".\");\n}\nexport function findPreset(presets: PresetInfo[], userAgent: string): PresetResult {\n let userPreset: PresetInfo | null = null;\n let version = \"-1\";\n\n some(presets, preset => {\n const result = execRegExp(`(${preset.test})((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))?`, userAgent);\n\n if (!result || preset.brand) {\n return false;\n }\n userPreset = preset;\n version = result[3] || \"-1\";\n\n if (preset.versionAlias) {\n version = preset.versionAlias;\n } else if (preset.versionTest) {\n version = findVersion(preset.versionTest.toLowerCase(), userAgent) || version;\n }\n version = convertVersion(version);\n return true;\n });\n\n return {\n preset: userPreset,\n version,\n };\n}\nexport function findPresetBrand(presets: PresetInfo[], brands: NavigatorUABrandVersion[]): NavigatorUABrandVersion {\n const brandInfo = {\n brand: \"\",\n version: \"-1\",\n };\n some(presets, preset => {\n const result = findBrand(brands, preset);\n\n if (!result) {\n return false;\n }\n\n brandInfo.brand = preset.id;\n brandInfo.version = preset.versionAlias || result.version;\n\n return brandInfo.version !== \"-1\";\n });\n\n return brandInfo;\n}\nexport function findBrand(brands: NavigatorUABrandVersion[], preset: PresetInfo): NavigatorUABrandVersion | null {\n return find(brands, ({ brand }) => {\n return execRegExp(`${preset.test}`, brand.toLowerCase());\n });\n}\n","import { PresetInfo } from \"./types\";\n\nexport const BROWSER_PRESETS: PresetInfo[] = [\n {\n test: \"phantomjs\",\n id: \"phantomjs\",\n },\n {\n test: \"whale\",\n id: \"whale\",\n }, {\n test: \"edgios|edge|edg\",\n id: \"edge\",\n },\n {\n test: \"msie|trident|windows phone\",\n id: \"ie\",\n versionTest: \"iemobile|msie|rv\",\n },\n {\n test: \"miuibrowser\",\n id: \"miui browser\",\n },\n {\n test: \"samsungbrowser\",\n id: \"samsung internet\",\n },\n {\n test: \"samsung\",\n id: \"samsung internet\",\n versionTest: \"version\",\n },\n {\n test: \"chrome|crios\",\n id: \"chrome\",\n },\n {\n test: \"firefox|fxios\",\n id: \"firefox\",\n },\n {\n test: \"android\",\n id: \"android browser\",\n versionTest: \"version\",\n },\n {\n test: \"safari|iphone|ipad|ipod\",\n id: \"safari\",\n versionTest: \"version\",\n },\n];\n\n// chromium's engine(blink) is based on applewebkit 537.36.\nexport const CHROMIUM_PRESETS: PresetInfo[] = [\n {\n test: \"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\\\schrome)\",\n id: \"chrome\",\n versionTest: \"chrome\",\n },\n {\n test: \"chromium\",\n id: \"chrome\",\n },\n {\n test: \"whale\",\n id: \"chrome\",\n versionAlias: \"-1\",\n brand: true,\n },\n];\nexport const WEBKIT_PRESETS: PresetInfo[] = [\n {\n test: \"applewebkit\",\n id: \"webkit\",\n versionTest: \"applewebkit|safari\",\n },\n];\nexport const WEBVIEW_PRESETS: PresetInfo[] = [\n {\n test: \"(?=(iphone|ipad))(?!(.*version))\",\n id: \"webview\",\n },\n {\n test: \"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))\",\n id: \"webview\",\n },\n {\n // test webview\n test: \"webview\",\n id: \"webview\",\n },\n];\nexport const OS_PRESETS: PresetInfo[] = [\n {\n test: \"windows phone\",\n id: \"windows phone\",\n },\n {\n test: \"windows 2000\",\n id: \"window\",\n versionAlias: \"5.0\",\n },\n {\n test: \"windows nt\",\n id: \"window\",\n },\n {\n test: \"win32|windows\",\n id: \"window\",\n },\n {\n test: \"iphone|ipad|ipod\",\n id: \"ios\",\n versionTest: \"iphone os|cpu os\",\n },\n {\n test: \"macos|macintel|mac os x\",\n id: \"mac\",\n },\n {\n test: \"android|linux armv81\",\n id: \"android\",\n },\n {\n test: \"tizen\",\n id: \"tizen\",\n },\n {\n test: \"webos|web0s\",\n id: \"webos\",\n },\n // {\n // test: \"linux|ubuntu|debian\",\n // id: \"linux\",\n // versionAlias: \"-1\",\n // },\n];\n","import { AgentInfo } from \"./types\";\nimport { getUserAgentString, findPreset } from \"./utils\";\nimport { WEBVIEW_PRESETS, CHROMIUM_PRESETS, BROWSER_PRESETS, OS_PRESETS, WEBKIT_PRESETS } from \"./presets\";\n\nexport function isWebView(userAgent: string): boolean {\n return !!findPreset(WEBVIEW_PRESETS, userAgent).preset;\n}\n\nexport function getLegacyAgent(userAgent?: string): AgentInfo {\n const nextAgent = getUserAgentString(userAgent);\n const isMobile = !!/mobi/g.exec(nextAgent);\n const browser = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1,\n webview: isWebView(nextAgent),\n chromium: false,\n chromiumVersion: \"-1\",\n webkit: false,\n webkitVersion: \"-1\",\n };\n const os = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1,\n };\n const {\n preset: browserPreset,\n version: browserVersion,\n } = findPreset(BROWSER_PRESETS, nextAgent);\n\n const {\n preset: osPreset,\n version: osVersion,\n } = findPreset(OS_PRESETS, nextAgent);\n\n const chromiumPreset = findPreset(CHROMIUM_PRESETS, nextAgent);\n\n browser.chromium = !!chromiumPreset.preset;\n browser.chromiumVersion = chromiumPreset.version;\n if (!browser.chromium) {\n const webkitPreset = findPreset(WEBKIT_PRESETS, nextAgent);\n\n browser.webkit = !!webkitPreset.preset;\n browser.webkitVersion = webkitPreset.version;\n }\n\n if (osPreset) {\n os.name = osPreset.id;\n os.version = osVersion;\n os.majorVersion = parseInt(osVersion, 10);\n }\n if (browserPreset) {\n browser.name = browserPreset.id;\n browser.version = browserVersion;\n\n // Early whale bugs\n if (browser.webview && os.name === \"ios\" && browser.name !== \"safari\") {\n browser.webview = false;\n }\n }\n browser.majorVersion = parseInt(browser.version, 10);\n\n return {\n browser,\n os,\n isMobile,\n isHints: false,\n };\n}\n","import { UADataValues, AgentInfo, AgentBrowserInfo, AgentOSInfo } from \"./types\";\nimport { some, find, findBrand, convertVersion, findPresetBrand, getUserAgentString } from \"./utils\";\nimport { BROWSER_PRESETS, OS_PRESETS, CHROMIUM_PRESETS, WEBKIT_PRESETS, WEBVIEW_PRESETS } from \"./presets\";\nimport { isWebView } from \"./userAgent\";\n\nexport function getClientHintsAgent(osData?: UADataValues): AgentInfo {\n const userAgentData = navigator.userAgentData;\n const brands = [...(userAgentData.uaList || userAgentData.brands)!];\n const fullVersionList = osData && osData.fullVersionList;\n const isMobile = userAgentData.mobile || false;\n const firstBrand = brands[0];\n const platform = (osData && osData.platform || userAgentData.platform || navigator.platform).toLowerCase();\n const browser: AgentBrowserInfo = {\n name: firstBrand.brand,\n version: firstBrand.version,\n majorVersion: -1,\n webkit: false,\n webkitVersion: \"-1\",\n chromium: false,\n chromiumVersion: \"-1\",\n webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand || isWebView(getUserAgentString()),\n };\n const os: AgentOSInfo = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1,\n };\n browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, preset => findBrand(brands, preset));\n\n const chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);\n\n browser.chromium = !!chromiumBrand.brand;\n browser.chromiumVersion = chromiumBrand.version;\n if (!browser.chromium) {\n const webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);\n\n browser.webkit = !!webkitBrand.brand;\n browser.webkitVersion = webkitBrand.version;\n }\n\n const platfomResult = find(OS_PRESETS, preset => {\n return new RegExp(`${preset.test}`, \"g\").exec(platform);\n });\n os.name = platfomResult ? platfomResult.id : \"\";\n\n if (osData) {\n os.version = osData.platformVersion;\n }\n if (fullVersionList && fullVersionList.length) {\n const browserBrandByFullVersionList = findPresetBrand(BROWSER_PRESETS, fullVersionList);\n\n browser.name = browserBrandByFullVersionList.brand || browser.name;\n browser.version = browserBrandByFullVersionList.version || browser.version;\n } else {\n const browserBrand = findPresetBrand(BROWSER_PRESETS, brands);\n\n browser.name = browserBrand.brand || browser.name;\n browser.version = browserBrand.brand && osData ? osData.uaFullVersion : browserBrand.version;\n }\n if (browser.webkit) {\n os.name = isMobile ? \"ios\" : \"mac\";\n }\n if (os.name === \"ios\" && browser.webview) {\n browser.version = \"-1\";\n }\n\n os.version = convertVersion(os.version);\n browser.version = convertVersion(browser.version);\n os.majorVersion = parseInt(os.version, 10);\n browser.majorVersion = parseInt(browser.version, 10);\n\n return {\n browser,\n os,\n isMobile,\n isHints: true,\n };\n}\n","import { AgentInfo } from \"./types\";\nimport { hasUserAgentData } from \"./utils\";\nimport { getClientHintsAgent } from \"./userAgentData\";\nimport { getLegacyAgent } from \"./userAgent\";\n\n/**\n * @namespace eg.agent\n */\n\n/**\n* Extracts accuate browser and operating system information from the user agent string or client hints.\n* @ko 유저 에이전트 문자열 또는 client hints에서 정확한 브라우저와 운영체제 정보를 추출한다.\n* @function eg.agent#getAccurateAgent\n* @param - Callback function to get the accuate agent 정확한 에이전트를 가져오기 위한 callback 함수\n* @return - get the accuate agent promise. If Promise are not supported, null is returned. 정확한 에이전트 promise를 가져온다. Promise를 지원 하지 않는 경우, null을 반환한다. \n* @example\nimport { getAccurateAgent } from \"@egjs/agent\";\n// eg.agent.getAccurateAgent()\ngetAccurateAgent().then(agent => {\n const { os, browser, isMobile } = agent;\n});\ngetAccurateAgent(agent => {\n const { os, browser, isMobile } = agent;\n});\n*/\nexport function getAccurateAgent(callback?: (result: AgentInfo) => void): Promise | null {\n if (hasUserAgentData()) {\n return navigator.userAgentData.getHighEntropyValues([\n \"architecture\",\n \"model\",\n \"platform\",\n \"platformVersion\",\n \"uaFullVersion\",\n \"fullVersionList\",\n ]).then(info => {\n const agentInfo = getClientHintsAgent(info);\n\n callback && callback(agentInfo);\n return agentInfo;\n });\n }\n callback && callback(agent());\n if (typeof Promise === \"undefined\" || !Promise) {\n return null;\n }\n return Promise.resolve(agent());\n}\n\n\n\n/**\n * Extracts browser and operating system information from the user agent string.\n * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.\n * @function eg.agent#agent\n * @param - user agent string to parse 파싱할 유저에이전트 문자열\n * @return - agent Info 에이전트 정보 \n * @example\nimport agent from \"@egjs/agent\";\n// eg.agent();\nconst { os, browser, isMobile } = agent();\n */\nfunction agent(userAgent?: string): AgentInfo {\n if (typeof userAgent === \"undefined\" && hasUserAgentData()) {\n return getClientHintsAgent();\n } else {\n return getLegacyAgent(userAgent);\n }\n}\nexport { getLegacyAgent };\n\nexport default agent;\n\nexport * from \"./types\";\n","export function prefixNames(prefix: string, ...classNames: string[]) {\n return classNames\n .map((className) =>\n className\n .split(\" \")\n .map((name) => (name ? `${prefix}${name}` : \"\"))\n .join(\" \")\n )\n .join(\" \");\n}\n\nexport function prefixCSS(prefix: string, css: string) {\n return css.replace(/([^}{]*){/gm, (_, selector) => {\n return `${selector.replace(/\\.([^{,\\s\\d.]+)/g, `.${prefix}$1`)}{`;\n });\n}\n\n/* react */\nexport function ref(target: any, name: string) {\n return (e: any) => {\n e && (target[name] = e);\n };\n}\nexport function refs(target: any, name: string, i: number) {\n return (e: any) => {\n e && (target[name][i] = e);\n };\n}\n\n/* Class Decorator */\nexport function Properties(\n properties: any[],\n action: (prototype: any, property: string) => any\n) {\n return (component: any) => {\n const prototype = component.prototype;\n\n properties.forEach((property) => {\n action(prototype, property);\n });\n };\n}\n\n/* Property Decorator */\nexport function withMethods(\n methods: readonly string[],\n duplicate: { [name: string]: string } = {}\n) {\n return (prototype: any, propertyName: string) => {\n methods.forEach((name) => {\n const methodName = duplicate[name] || name;\n\n if (methodName in prototype) {\n return;\n }\n prototype[methodName] = function (...args) {\n const result = this[propertyName][name](...args);\n\n if (result === this[propertyName]) {\n return this;\n } else {\n return result;\n }\n };\n });\n };\n}\n\nexport type ParametersType = Func extends (\n ...params: infer Params\n) => any\n ? (...params: Params) => Return\n : never;\n\nexport type ExcludeInterface = {\n [key in Exclude]: Obj1[key];\n};\n\nexport type EntriesObject = {\n [key in keyof T]: [key, Readonly];\n};\nexport type FindKey = E extends [infer U, V] ? U & string : never;\nexport type InvertObject<\n T extends Record,\n En extends Record = EntriesObject\n > = {\n [key in En[keyof En][1]]: FindKey\n };\n\nexport type Entries<\n Obj extends { [key: string]: any },\n Key = keyof Obj\n> = Key extends string ? [Key, Obj[Key]] : never;\n\nexport type ReverseKey<\n Key extends string,\n Obj extends { [key: string]: any },\n E = Entries\n> = E extends [infer Value, Key] ? Value : never;\n\nexport type UniqueMethodInterface<\n Methods,\n Target extends Methods,\n ReturnTarget extends any,\n Duplicate extends { [key: string]: any }\n> = {\n [key in keyof ExcludeInterface]: Methods[key] extends (\n ...params: any[]\n ) => Target\n ? ParametersType\n : Methods[key];\n};\n\nexport type ChangedMethodInterface<\n Methods,\n Target extends Methods,\n ReturnTarget extends any,\n Duplicate extends { [key: string]: any }\n> = {\n [key in Duplicate[keyof Duplicate]]: Methods[ReverseKey &\n keyof Methods] extends (...params: any[]) => Target\n ? ParametersType<\n Methods[ReverseKey & keyof Methods],\n ReturnTarget\n >\n : Methods[ReverseKey & keyof Methods];\n};\n\nexport type MethodInterface<\n Methods,\n Target extends Methods,\n ReturnTarget extends any,\n Duplicate extends { [key: string]: any } = {}\n> = UniqueMethodInterface &\n ChangedMethodInterface;\n","/**\n* @namespace\n* @name Consts\n*/\n\nimport { IObject, OpenCloseCharacter } from \"./types\";\n\n/**\n* get string \"rgb\"\n* @memberof Color\n* @example\nimport {RGB} from \"@daybrush/utils\";\n\nconsole.log(RGB); // \"rgb\"\n*/\nexport const RGB = \"rgb\";\n/**\n* get string \"rgba\"\n* @memberof Color\n* @example\nimport {RGBA} from \"@daybrush/utils\";\n\nconsole.log(RGBA); // \"rgba\"\n*/\nexport const RGBA = \"rgba\";\n/**\n* get string \"hsl\"\n* @memberof Color\n* @example\nimport {HSL} from \"@daybrush/utils\";\n\nconsole.log(HSL); // \"hsl\"\n*/\nexport const HSL = \"hsl\";\n/**\n* get string \"hsla\"\n* @memberof Color\n* @example\nimport {HSLA} from \"@daybrush/utils\";\n\nconsole.log(HSLA); // \"hsla\"\n*/\nexport const HSLA = \"hsla\";\n/**\n* gets an array of color models.\n* @memberof Color\n* @example\nimport {COLOR_MODELS} from \"@daybrush/utils\";\n\nconsole.log(COLOR_MODELS); // [\"rgb\", \"rgba\", \"hsl\", \"hsla\"];\n*/\nexport const COLOR_MODELS = [RGB, RGBA, HSL, HSLA];\n\n/**\n* get string \"function\"\n* @memberof Consts\n* @example\nimport {FUNCTION} from \"@daybrush/utils\";\n\nconsole.log(FUNCTION); // \"function\"\n*/\nexport const FUNCTION = \"function\";\n/**\n* get string \"property\"\n* @memberof Consts\n* @example\nimport {PROPERTY} from \"@daybrush/utils\";\n\nconsole.log(PROPERTY); // \"property\"\n*/\nexport const PROPERTY = \"property\";\n/**\n* get string \"array\"\n* @memberof Consts\n* @example\nimport {ARRAY} from \"@daybrush/utils\";\n\nconsole.log(ARRAY); // \"array\"\n*/\nexport const ARRAY = \"array\";\n/**\n* get string \"object\"\n* @memberof Consts\n* @example\nimport {OBJECT} from \"@daybrush/utils\";\n\nconsole.log(OBJECT); // \"object\"\n*/\nexport const OBJECT = \"object\";\n/**\n* get string \"string\"\n* @memberof Consts\n* @example\nimport {STRING} from \"@daybrush/utils\";\n\nconsole.log(STRING); // \"string\"\n*/\nexport const STRING = \"string\";\n/**\n* get string \"number\"\n* @memberof Consts\n* @example\nimport {NUMBER} from \"@daybrush/utils\";\n\nconsole.log(NUMBER); // \"number\"\n*/\nexport const NUMBER = \"number\";\n/**\n* get string \"undefined\"\n* @memberof Consts\n* @example\nimport {UNDEFINED} from \"@daybrush/utils\";\n\nconsole.log(UNDEFINED); // \"undefined\"\n*/\nexport const UNDEFINED = \"undefined\";\n\n/**\n* Check whether the environment is window or node.js.\n* @memberof Consts\n* @example\nimport {IS_WINDOW} from \"@daybrush/utils\";\n\nconsole.log(IS_WINDOW); // false in node.js\nconsole.log(IS_WINDOW); // true in browser\n*/\nexport const IS_WINDOW = typeof window !== UNDEFINED;\n\n/**\n* Check whether the environment is window or node.js.\n* @memberof Consts\n* @name document\n* @example\nimport {IS_WINDOW} from \"@daybrush/utils\";\n\nconsole.log(IS_WINDOW); // false in node.js\nconsole.log(IS_WINDOW); // true in browser\n*/\nconst doc = (typeof document !== UNDEFINED && document) as Document; // FIXME: this type maybe false\n\nexport {doc as document};\n\nconst prefixes: string[] = [\"webkit\", \"ms\", \"moz\", \"o\"];\n\n/**\n * @namespace CrossBrowser\n */\n\n/**\n* Get a CSS property with a vendor prefix that supports cross browser.\n* @function\n* @param {string} property - A CSS property\n* @return {string} CSS property with cross-browser vendor prefix\n* @memberof CrossBrowser\n* @example\nimport {getCrossBrowserProperty} from \"@daybrush/utils\";\n\nconsole.log(getCrossBrowserProperty(\"transform\")); // \"transform\", \"-ms-transform\", \"-webkit-transform\"\nconsole.log(getCrossBrowserProperty(\"filter\")); // \"filter\", \"-webkit-filter\"\n*/\nexport const getCrossBrowserProperty = /*#__PURE__*/(property: string) => {\n if (!doc) {\n return \"\";\n }\n const styles = (doc.body || doc.documentElement).style as any;\n const length = prefixes.length;\n\n if (typeof styles[property] !== UNDEFINED) {\n return property;\n }\n for (let i = 0; i < length; ++i) {\n const name = `-${prefixes[i]}-${property}`;\n\n if (typeof styles[name] !== UNDEFINED) {\n return name;\n }\n }\n return \"\";\n};\n\n/**\n* get string \"transfrom\" with the vendor prefix.\n* @memberof CrossBrowser\n* @example\nimport {TRANSFORM} from \"@daybrush/utils\";\n\nconsole.log(TRANSFORM); // \"transform\", \"-ms-transform\", \"-webkit-transform\"\n*/\nexport const TRANSFORM = /*#__PURE__*/getCrossBrowserProperty(\"transform\");\n/**\n* get string \"filter\" with the vendor prefix.\n* @memberof CrossBrowser\n* @example\nimport {FILTER} from \"@daybrush/utils\";\n\nconsole.log(FILTER); // \"filter\", \"-ms-filter\", \"-webkit-filter\"\n*/\nexport const FILTER = /*#__PURE__*/getCrossBrowserProperty(\"filter\");\n/**\n* get string \"animation\" with the vendor prefix.\n* @memberof CrossBrowser\n* @example\nimport {ANIMATION} from \"@daybrush/utils\";\n\nconsole.log(ANIMATION); // \"animation\", \"-ms-animation\", \"-webkit-animation\"\n*/\nexport const ANIMATION = /*#__PURE__*/getCrossBrowserProperty(\"animation\");\n/**\n* get string \"keyframes\" with the vendor prefix.\n* @memberof CrossBrowser\n* @example\nimport {KEYFRAMES} from \"@daybrush/utils\";\n\nconsole.log(KEYFRAMES); // \"keyframes\", \"-ms-keyframes\", \"-webkit-keyframes\"\n*/\nexport const KEYFRAMES = /*#__PURE__*/ANIMATION.replace(\"animation\", \"keyframes\");\n\nexport const OPEN_CLOSED_CHARACTERS: OpenCloseCharacter[] = [\n { open: \"(\", close: \")\" },\n { open: `\"`, close: `\"`},\n { open: `'`, close: `'`},\n { open: `\\\\\"`, close: `\\\\\"`},\n { open: `\\\\'`, close: `\\\\'`},\n];\nexport const TINY_NUM = 0.0000001;\nexport const REVERSE_TINY_NUM = 1 / TINY_NUM;\nexport const DEFAULT_UNIT_PRESETS: IObject<(pos: number, size?: number) => number> = {\n \"cm\": pos => pos * 96 / 2.54,\n \"mm\": pos => pos * 96 / 254,\n \"in\": pos => pos * 96,\n \"pt\": pos => pos * 96 / 72,\n \"pc\": pos => pos * 96 / 6,\n \"%\": (pos, size) => pos * size! / 100,\n \"vw\": (pos, size = window.innerWidth) => pos / 100 * size,\n \"vh\": (pos, size = window.innerHeight) => pos / 100 * size,\n \"vmax\": (pos, size = Math.max(window.innerWidth, window.innerHeight)) => pos / 100 * size,\n \"vmin\": (pos, size = Math.min(window.innerWidth, window.innerHeight)) => pos / 100 * size,\n};\n","import {\n UNDEFINED, STRING,\n OBJECT, FUNCTION,\n IS_WINDOW, OPEN_CLOSED_CHARACTERS, NUMBER,\n DEFAULT_UNIT_PRESETS,\n TINY_NUM\n} from \"./consts\";\nimport {\n FlattedElement,\n IArrayFormat, IObject, OpenCloseCharacter,\n SplitOptions,\n} from \"./types\";\n/**\n* @namespace\n* @name Utils\n*/\n\n/**\n * Returns the inner product of two numbers(`a1`, `a2`) by two criteria(`b1`, `b2`).\n * @memberof Utils\n * @param - The first number\n * @param - The second number\n * @param - The first number to base on the inner product\n * @param - The second number to base on the inner product\n * @return - Returns the inner product\nimport { dot } from \"@daybrush/utils\";\n\nconsole.log(dot(0, 15, 2, 3)); // 6\nconsole.log(dot(5, 15, 2, 3)); // 9\nconsole.log(dot(5, 15, 1, 1)); // 10\n */\nexport function dot(a1: number, a2: number, b1: number, b2: number) {\n return (a1 * b2 + a2 * b1) / (b1 + b2);\n}\n/**\n* Check the type that the value is undefined.\n* @memberof Utils\n* @param {string} value - Value to check the type\n* @return {boolean} true if the type is correct, false otherwise\n* @example\nimport {isUndefined} from \"@daybrush/utils\";\n\nconsole.log(isUndefined(undefined)); // true\nconsole.log(isUndefined(\"\")); // false\nconsole.log(isUndefined(1)); // false\nconsole.log(isUndefined(null)); // false\n*/\nexport function isUndefined(value: any): value is undefined {\n return (typeof value === UNDEFINED);\n}\n/**\n* Check the type that the value is object.\n* @memberof Utils\n* @param {string} value - Value to check the type\n* @return {} true if the type is correct, false otherwise\n* @example\nimport {isObject} from \"@daybrush/utils\";\n\nconsole.log(isObject({})); // true\nconsole.log(isObject(undefined)); // false\nconsole.log(isObject(\"\")); // false\nconsole.log(isObject(null)); // false\n*/\nexport function isObject(value: any): value is IObject {\n return value && (typeof value === OBJECT);\n}\n/**\n* Check the type that the value is isArray.\n* @memberof Utils\n* @param {string} value - Value to check the type\n* @return {} true if the type is correct, false otherwise\n* @example\nimport {isArray} from \"@daybrush/utils\";\n\nconsole.log(isArray([])); // true\nconsole.log(isArray({})); // false\nconsole.log(isArray(undefined)); // false\nconsole.log(isArray(null)); // false\n*/\nexport function isArray(value: any): value is any[] {\n return Array.isArray(value);\n}\n/**\n* Check the type that the value is string.\n* @memberof Utils\n* @param {string} value - Value to check the type\n* @return {} true if the type is correct, false otherwise\n* @example\nimport {isString} from \"@daybrush/utils\";\n\nconsole.log(isString(\"1234\")); // true\nconsole.log(isString(undefined)); // false\nconsole.log(isString(1)); // false\nconsole.log(isString(null)); // false\n*/\nexport function isString(value: any): value is string {\n return typeof value === STRING;\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === NUMBER;\n}\n\n/**\n* Check the type that the value is function.\n* @memberof Utils\n* @param {string} value - Value to check the type\n* @return {} true if the type is correct, false otherwise\n* @example\nimport {isFunction} from \"@daybrush/utils\";\n\nconsole.log(isFunction(function a() {})); // true\nconsole.log(isFunction(() => {})); // true\nconsole.log(isFunction(\"1234\")); // false\nconsole.log(isFunction(1)); // false\nconsole.log(isFunction(null)); // false\n*/\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === FUNCTION;\n}\nfunction isEqualSeparator(\n character: string,\n separator: string,\n) {\n const isCharacterSpace = character === \"\" || character == \" \";\n const isSeparatorSpace = separator === \"\" || separator == \" \";\n\n return (isSeparatorSpace && isCharacterSpace) || character === separator;\n}\nfunction findOpen(\n openCharacter: OpenCloseCharacter,\n texts: string[],\n index: number,\n length: number,\n openCloseCharacters: OpenCloseCharacter[],\n) {\n const isIgnore = findIgnore(openCharacter, texts, index);\n\n if (!isIgnore) {\n return findClose(openCharacter, texts, index + 1, length, openCloseCharacters);\n }\n return index;\n}\nfunction findIgnore(\n character: OpenCloseCharacter,\n texts: string[],\n index: number,\n) {\n if (!character.ignore) {\n return null;\n }\n const otherText = texts.slice(Math.max(index - 3, 0), index + 3).join(\"\");\n\n return new RegExp(character.ignore).exec(otherText);\n\n}\nfunction findClose(\n closeCharacter: OpenCloseCharacter,\n texts: string[],\n index: number,\n length: number,\n openCloseCharacters: OpenCloseCharacter[],\n) {\n for (let i = index; i < length; ++i) {\n const character = texts[i].trim();\n\n if (character === closeCharacter.close && !findIgnore(closeCharacter, texts, i)) {\n return i;\n }\n let nextIndex = i;\n // re open\n const openCharacter = find(openCloseCharacters, ({ open }) => open === character);\n\n if (openCharacter) {\n nextIndex = findOpen(openCharacter, texts, i, length, openCloseCharacters);\n }\n if (nextIndex === -1) {\n break;\n }\n i = nextIndex;\n }\n return -1;\n}\n\nexport function splitText(\n text: string,\n splitOptions: string | SplitOptions,\n): string[] {\n const {\n separator = \",\",\n isSeparateFirst,\n isSeparateOnlyOpenClose,\n isSeparateOpenClose = isSeparateOnlyOpenClose,\n openCloseCharacters = OPEN_CLOSED_CHARACTERS,\n } = isString(splitOptions) ? {\n separator: splitOptions,\n } as SplitOptions : splitOptions;\n const openClosedText = openCloseCharacters.map(({ open, close }) => {\n if (open === close) {\n return open;\n }\n return `${open}|${close}`;\n }).join(\"|\");\n const regexText = `(\\\\s*${separator}\\\\s*|${openClosedText}|\\\\s+)`;\n const regex = new RegExp(regexText, \"g\");\n const texts = text.split(regex).filter(chr => {\n return chr && chr !== \"undefined\";\n });\n const length = texts.length;\n const values: string[] = [];\n let tempValues: string[] = [];\n\n function resetTemp() {\n if (tempValues.length) {\n values.push(tempValues.join(\"\"));\n tempValues = [];\n\n return true;\n }\n return false;\n }\n for (let i = 0; i < length; ++i) {\n const character = texts[i].trim();\n let nextIndex = i;\n\n\n const openCharacter = find(openCloseCharacters, ({ open }) => open === character);\n const closeCharacter = find(openCloseCharacters, ({ close }) => close === character);\n\n if (openCharacter) {\n nextIndex = findOpen(openCharacter, texts, i, length, openCloseCharacters);\n\n if (nextIndex !== -1 && isSeparateOpenClose) {\n if (resetTemp() && isSeparateFirst) {\n break;\n }\n values.push(texts.slice(i, nextIndex + 1).join(\"\"));\n i = nextIndex;\n\n if (isSeparateFirst) {\n break;\n }\n continue;\n }\n } else if (closeCharacter && !findIgnore(closeCharacter, texts, i)) {\n const nextOpenCloseCharacters = [...openCloseCharacters];\n\n nextOpenCloseCharacters.splice(openCloseCharacters.indexOf(closeCharacter), 1);\n\n return splitText(\n text,\n {\n separator,\n isSeparateFirst,\n isSeparateOnlyOpenClose,\n isSeparateOpenClose,\n openCloseCharacters: nextOpenCloseCharacters,\n });\n } else if (isEqualSeparator(character, separator) && !isSeparateOnlyOpenClose) {\n resetTemp();\n if (isSeparateFirst) {\n break;\n }\n continue;\n }\n\n if (nextIndex === -1) {\n nextIndex = length - 1;\n }\n tempValues.push(texts.slice(i, nextIndex + 1).join(\"\"));\n i = nextIndex;\n }\n if (tempValues.length) {\n values.push(tempValues.join(\"\"));\n }\n return values;\n}\n\n/**\n* divide text by space.\n* @memberof Utils\n* @param {string} text - text to divide\n* @return {Array} divided texts\n* @example\nimport {spliceSpace} from \"@daybrush/utils\";\n\nconsole.log(splitSpace(\"a b c d e f g\"));\n// [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]\nconsole.log(splitSpace(\"'a,b' c 'd,e' f g\"));\n// [\"'a,b'\", \"c\", \"'d,e'\", \"f\", \"g\"]\n*/\nexport function splitSpace(text: string) {\n // divide comma(space)\n return splitText(text, \"\");\n}\n\n/**\n* divide text by comma.\n* @memberof Utils\n* @param {string} text - text to divide\n* @return {Array} divided texts\n* @example\nimport {splitComma} from \"@daybrush/utils\";\n\nconsole.log(splitComma(\"a,b,c,d,e,f,g\"));\n// [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\"]\nconsole.log(splitComma(\"'a,b',c,'d,e',f,g\"));\n// [\"'a,b'\", \"c\", \"'d,e'\", \"f\", \"g\"]\n*/\nexport function splitComma(text: string): string[] {\n // divide comma(,)\n // \"[^\"]*\"|'[^']*'\n return splitText(text, \",\");\n}\n/**\n* divide text by bracket \"(\", \")\".\n* @memberof Utils\n* @param {string} text - text to divide\n* @return {object} divided texts\n* @example\nimport {splitBracket} from \"@daybrush/utils\";\n\nconsole.log(splitBracket(\"a(1, 2)\"));\n// {prefix: \"a\", value: \"1, 2\", suffix: \"\"}\nconsole.log(splitBracket(\"a(1, 2)b\"));\n// {prefix: \"a\", value: \"1, 2\", suffix: \"b\"}\n*/\nexport function splitBracket(text: string) {\n const matches = (/([^(]*)\\(([\\s\\S]*)\\)([\\s\\S]*)/g).exec(text);\n\n if (!matches || matches.length < 4) {\n return {};\n } else {\n return { prefix: matches[1], value: matches[2], suffix: matches[3] };\n }\n}\n/**\n* divide text by number and unit.\n* @memberof Utils\n* @param {string} text - text to divide\n* @return {} divided texts\n* @example\nimport {splitUnit} from \"@daybrush/utils\";\n\nconsole.log(splitUnit(\"10px\"));\n// {prefix: \"\", value: 10, unit: \"px\"}\nconsole.log(splitUnit(\"-10px\"));\n// {prefix: \"\", value: -10, unit: \"px\"}\nconsole.log(splitUnit(\"a10%\"));\n// {prefix: \"a\", value: 10, unit: \"%\"}\n*/\nexport function splitUnit(text: string): { prefix: string, unit: string, value: number } {\n const matches = /^([^\\d|e|\\-|\\+]*)((?:\\d|\\.|-|e-|e\\+)+)(\\S*)$/g.exec(text);\n\n if (!matches) {\n return { prefix: \"\", unit: \"\", value: NaN };\n }\n const prefix = matches[1];\n const value = matches[2];\n const unit = matches[3];\n\n return { prefix, unit, value: parseFloat(value) };\n}\n\n/**\n* transform strings to camel-case\n* @memberof Utils\n* @param {String} text - string\n* @return {String} camel-case string\n* @example\nimport {camelize} from \"@daybrush/utils\";\n\nconsole.log(camelize(\"transform-origin\")); // transformOrigin\nconsole.log(camelize(\"abcd_efg\")); // abcdEfg\nconsole.log(camelize(\"abcd efg\")); // abcdEfg\n*/\nexport function camelize(str: string) {\n return str.replace(/[\\s-_]+([^\\s-_])/g, (all, letter) => letter.toUpperCase());\n}\n/**\n* transform a camelized string into a lowercased string.\n* @memberof Utils\n* @param {string} text - a camel-cased string\n* @param {string} [separator=\"-\"] - a separator\n* @return {string} a lowercased string\n* @example\nimport {decamelize} from \"@daybrush/utils\";\n\nconsole.log(decamelize(\"transformOrigin\")); // transform-origin\nconsole.log(decamelize(\"abcdEfg\", \"_\")); // abcd_efg\n*/\nexport function decamelize(str: string, separator: string = \"-\") {\n return str.replace(/([a-z])([A-Z])/g, (all, letter, letter2) => `${letter}${separator}${letter2.toLowerCase()}`);\n}\n\n/**\n* transforms something in an array into an array.\n* @memberof Utils\n* @param - Array form\n* @return an array\n* @example\nimport {toArray} from \"@daybrush/utils\";\n\nconst arr1 = toArray(document.querySelectorAll(\".a\")); // Element[]\nconst arr2 = toArray(document.querySelectorAll(\".a\")); // HTMLElement[]\n*/\nexport function toArray(value: IArrayFormat): T[] {\n return [].slice.call(value);\n}\n\n/**\n* Date.now() method\n* @memberof CrossBrowser\n* @return {number} milliseconds\n* @example\nimport {now} from \"@daybrush/utils\";\n\nconsole.log(now()); // 12121324241(milliseconds)\n*/\nexport function now() {\n return Date.now ? Date.now() : new Date().getTime();\n}\n\n/**\n* Returns the index of the first element in the array that satisfies the provided testing function.\n* @function\n* @memberof CrossBrowser\n* @param - The array `findIndex` was called upon.\n* @param - A function to execute on each value in the array until the function returns true, indicating that the satisfying element was found.\n* @param - Returns defaultIndex if not found by the function.\n* @example\nimport { findIndex } from \"@daybrush/utils\";\n\nfindIndex([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // 1\n*/\nexport function findIndex(\n arr: T[],\n callback: (element: T, index: number, arr: T[]) => any,\n defaultIndex: number = -1,\n): number {\n const length = arr.length;\n\n for (let i = 0; i < length; ++i) {\n if (callback(arr[i], i, arr)) {\n return i;\n }\n }\n return defaultIndex;\n}\n\n/**\n* Returns the reverse direction index of the first element in the array that satisfies the provided testing function.\n* @function\n* @memberof CrossBrowser\n* @param - The array `findLastIndex` was called upon.\n* @param - A function to execute on each value in the array until the function returns true, indicating that the satisfying element was found.\n* @param - Returns defaultIndex if not found by the function.\n* @example\nimport { findLastIndex } from \"@daybrush/utils\";\n\nfindLastIndex([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // 1\n*/\nexport function findLastIndex(\n arr: T[],\n callback: (element: T, index: number, arr: T[]) => any,\n defaultIndex: number = -1,\n): number {\n const length = arr.length;\n\n for (let i = length - 1; i >= 0; --i) {\n if (callback(arr[i], i, arr)) {\n return i;\n }\n }\n return defaultIndex;\n}\n\n/**\n* Returns the value of the reverse direction element in the array that satisfies the provided testing function.\n* @function\n* @memberof CrossBrowser\n* @param - The array `findLast` was called upon.\n* @param - A function to execute on each value in the array,\n* @param - Returns defalutValue if not found by the function.\n* @example\nimport { find } from \"@daybrush/utils\";\n\nfind([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // {a: 2}\n*/\nexport function findLast(\n arr: T[],\n callback: (element: T, index: number, arr: T[]) => any,\n defalutValue?: T,\n): T | undefined {\n const index = findLastIndex(arr, callback);\n\n return index > - 1 ? arr[index] : defalutValue;\n}\n/**\n* Returns the value of the first element in the array that satisfies the provided testing function.\n* @function\n* @memberof CrossBrowser\n* @param - The array `find` was called upon.\n* @param - A function to execute on each value in the array,\n* @param - Returns defalutValue if not found by the function.\n* @example\nimport { find } from \"@daybrush/utils\";\n\nfind([{a: 1}, {a: 2}, {a: 3}, {a: 4}], ({ a }) => a === 2); // {a: 2}\n*/\nexport function find(\n arr: T[],\n callback: (element: T, index: number, arr: T[]) => any,\n defalutValue?: T,\n): T | undefined {\n const index = findIndex(arr, callback);\n\n return index > - 1 ? arr[index] : defalutValue;\n}\n\n/**\n* window.requestAnimationFrame() method with cross browser.\n* @function\n* @memberof CrossBrowser\n* @param {FrameRequestCallback} callback - The function to call when it's time to update your animation for the next repaint.\n* @return {number} id\n* @example\nimport {requestAnimationFrame} from \"@daybrush/utils\";\n\nrequestAnimationFrame((timestamp) => {\n console.log(timestamp);\n});\n*/\nexport const requestAnimationFrame = /*#__PURE__*/(() => {\n const firstTime = now();\n\n const raf = IS_WINDOW\n && (window.requestAnimationFrame || (window as any).webkitRequestAnimationFrame\n || (window as any).mozRequestAnimationFrame || (window as any).msRequestAnimationFrame);\n\n return raf ? (raf.bind(window) as (callback: FrameRequestCallback) => number) : ((callback: FrameRequestCallback) => {\n const currTime = now();\n const id = setTimeout(() => {\n callback(currTime - firstTime);\n }, 1000 / 60);\n\n return id as any as number;\n });\n})();\n\n/**\n* window.cancelAnimationFrame() method with cross browser.\n* @function\n* @memberof CrossBrowser\n* @param {number} handle - the id obtained through requestAnimationFrame method\n* @return {void}\n* @example\nimport { requestAnimationFrame, cancelAnimationFrame } from \"@daybrush/utils\";\n\nconst id = requestAnimationFrame((timestamp) => {\n console.log(timestamp);\n});\n\ncancelAnimationFrame(id);\n*/\nexport const cancelAnimationFrame = /*#__PURE__*/(() => {\n const caf = IS_WINDOW\n && (window.cancelAnimationFrame || (window as any).webkitCancelAnimationFrame\n || (window as any).mozCancelAnimationFrame || (window as any).msCancelAnimationFrame);\n\n return caf\n ? caf.bind(window) as (handle: number) => void\n : ((handle: number) => { clearTimeout(handle); });\n})();\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function getKeys(obj: IObject): string[] {\n return Object.keys(obj);\n}\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function getValues(obj: IObject): any[] {\n const keys = getKeys(obj);\n\n return keys.map(key => obj[key]);\n}\n/**\n* @function\n* @memberof Utils\n*/\nexport function getEntries(obj: IObject): [string, any][] {\n const keys = getKeys(obj);\n\n return keys.map(key => [key, obj[key]]);\n}\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function sortOrders(keys: Array, orders: Array = []) {\n keys.sort((a, b) => {\n const index1 = orders.indexOf(a);\n const index2 = orders.indexOf(b);\n\n if (index2 === -1 && index1 === -1) {\n return 0;\n }\n if (index1 === -1) {\n return 1;\n }\n if (index2 === -1) {\n return -1;\n }\n return index1 - index2;\n });\n}\n\n/**\n* convert unit size to px size\n* @function\n* @memberof Utils\n*/\nexport function convertUnitSize(pos: string, size: number | IObject<((pos: number) => number) | number>) {\n const { value, unit } = splitUnit(pos);\n\n if (isObject(size)) {\n const sizeFunction = size[unit];\n if (sizeFunction) {\n if (isFunction(sizeFunction)) {\n return sizeFunction(value);\n } else if (DEFAULT_UNIT_PRESETS[unit]) {\n return DEFAULT_UNIT_PRESETS[unit](value, sizeFunction);\n }\n }\n } else if (unit === \"%\") {\n return value * size / 100;\n }\n if (DEFAULT_UNIT_PRESETS[unit]) {\n return DEFAULT_UNIT_PRESETS[unit](value);\n }\n return value;\n}\n\n/**\n* calculate between min, max\n* @function\n* @memberof Utils\n*/\nexport function between(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(value, max));\n}\n\nexport function checkBoundSize(targetSize: number[], compareSize: number[], isMax: boolean, ratio = targetSize[0] / targetSize[1]) {\n return [\n [throttle(compareSize[0], TINY_NUM), throttle(compareSize[0] / ratio, TINY_NUM)],\n [throttle(compareSize[1] * ratio, TINY_NUM), throttle(compareSize[1], TINY_NUM)],\n ].filter(size => size.every((value, i) => {\n const defaultSize = compareSize[i];\n const throttledSize = throttle(defaultSize, TINY_NUM);\n\n return isMax ? value <= defaultSize || value <= throttledSize : value >= defaultSize || value >= throttledSize;\n }))[0] || targetSize;\n}\n\n/**\n* calculate bound size\n* @function\n* @memberof Utils\n*/\nexport function calculateBoundSize(\n size: number[],\n minSize: number[],\n maxSize: number[],\n keepRatio?: number | boolean,\n): number[] {\n if (!keepRatio) {\n return size.map((value, i) => between(value, minSize[i], maxSize[i]));\n }\n let [width, height] = size;\n\n const ratio = keepRatio === true ? width / height : keepRatio;\n // width : height = minWidth : minHeight;\n const [minWidth, minHeight] = checkBoundSize(size, minSize, false, ratio);\n const [maxWidth, maxHeight] = checkBoundSize(size, maxSize, true, ratio);\n\n if (width < minWidth || height < minHeight) {\n width = minWidth;\n height = minHeight;\n } else if (width > maxWidth || height > maxHeight) {\n width = maxWidth;\n height = maxHeight;\n }\n return [width, height];\n}\n\n\n/**\n* Add all the numbers.\n* @function\n* @memberof Utils\n*/\nexport function sum(nums: number[]): number {\n const length = nums.length;\n let total = 0;\n\n for (let i = length - 1; i >= 0; --i) {\n total += nums[i];\n }\n return total;\n}\n\n/**\n* Average all numbers.\n* @function\n* @memberof Utils\n*/\nexport function average(nums: number[]) {\n const length = nums.length;\n let total = 0;\n\n for (let i = length - 1; i >= 0; --i) {\n total += nums[i];\n }\n return length ? total / length : 0;\n}\n/**\n* Get the angle of two points. (0 <= rad < 359)\n* @function\n* @memberof Utils\n*/\nexport function getRad(pos1: number[], pos2: number[]): number {\n const distX = pos2[0] - pos1[0];\n const distY = pos2[1] - pos1[1];\n const rad = Math.atan2(distY, distX);\n\n return rad >= 0 ? rad : rad + Math.PI * 2;\n}\n/**\n* Get the average point of all points.\n* @function\n* @memberof Utils\n*/\nexport function getCenterPoint(points: number[][]): number[] {\n return [0, 1].map(i => average(points.map(pos => pos[i])));\n}\n/**\n* Gets the direction of the shape.\n* @function\n* @memberof Utils\n*/\nexport function getShapeDirection(points: number[][]): 1 | -1 {\n const center = getCenterPoint(points);\n const pos1Rad = getRad(center, points[0]);\n const pos2Rad = getRad(center, points[1]);\n\n return (pos1Rad < pos2Rad && pos2Rad - pos1Rad < Math.PI) || (pos1Rad > pos2Rad && pos2Rad - pos1Rad < -Math.PI)\n ? 1 : -1;\n}\n\n/**\n* Get the distance between two points.\n* @function\n* @memberof Utils\n*/\nexport function getDist(a: number[], b?: number[]) {\n return Math.sqrt(Math.pow((b ? b[0] : 0) - a[0], 2) + Math.pow((b ? b[1] : 0) - a[1], 2));\n}\n\n/**\n* throttle number depending on the unit.\n* @function\n* @memberof Utils\n*/\nexport function throttle(num: number, unit?: number) {\n if (!unit) {\n return num;\n }\n const reverseUnit = 1 / unit;\n return Math.round(num / unit) / reverseUnit;\n}\n\n/**\n* throttle number array depending on the unit.\n* @function\n* @memberof Utils\n*/\nexport function throttleArray(nums: number[], unit?: number) {\n nums.forEach((_, i) => {\n nums[i] = throttle(nums[i], unit);\n });\n return nums;\n}\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function counter(num: number): number[] {\n const nums: number[] = [];\n\n for (let i = 0; i < num; ++i) {\n nums.push(i);\n }\n\n return nums;\n}\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function replaceOnce(text: string, fromText: RegExp | string, toText: string | ((...args: any[]) => string)): string {\n let isOnce = false;\n return text.replace(fromText, (...args: any[]) => {\n if (isOnce) {\n return args[0];\n }\n isOnce = true;\n return isString(toText) ? toText : toText(...args);\n });\n}\n\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function flat(arr: Type[][]): Type[] {\n return arr.reduce((prev, cur) => {\n return prev.concat(cur);\n }, []);\n}\n\n/**\n* @function\n* @memberof Utils\n*/\nexport function deepFlat(arr: T): Array> {\n return arr.reduce((prev, cur) => {\n if (isArray(cur)) {\n prev.push(...deepFlat(cur));\n } else {\n prev.push(cur);\n }\n return prev;\n }, [] as any[]);\n}\n\n\n/**\n * @function\n * @memberof Utils\n */\nexport function pushSet(elements: T[], element: T) {\n if (elements.indexOf(element) === -1) {\n elements.push(element);\n }\n}\n","import { document } from \"./consts\";\nimport { IObject, IEventMap } from \"./types\";\nimport { isObject } from \"./utils\";\n\n/**\n * @namespace DOM\n */\n\nexport function $(selectors: K, multi: true):\n NodeListOf;\nexport function $(selectors: K, multi: true): NodeListOf;\nexport function $(selectors: string, multi: true): NodeListOf;\n\nexport function $(selectors: K, multi?: false): HTMLElementTagNameMap[K] | null;\nexport function $(selectors: K, multi?: false): SVGElementTagNameMap[K] | null;\nexport function $(selectors: string, multi?: false): E | null;\n/**\n * Returns all element descendants of node that\n * match selectors.\n */\n\n/**\n * Checks if the specified class value exists in the element's class attribute.\n * @memberof DOM\n * @param - A DOMString containing one or more selectors to match\n * @param - If multi is true, a DOMString containing one or more selectors to match against.\n * @example\nimport {$} from \"@daybrush/utils\";\n\nconsole.log($(\"div\")); // div element\nconsole.log($(\"div\", true)); // [div, div] elements\n*/\nexport function $(selectors: string, multi?: boolean): E | NodeListOf | null {\n if (!document) {\n return multi ? [] as any : null;\n }\n return multi ? document.querySelectorAll(selectors) : document.querySelector(selectors);\n}\n\n/**\n* Checks if the specified class value exists in the element's class attribute.\n* @memberof DOM\n* @param element - target\n* @param className - the class name to search\n* @return {boolean} return false if the class is not found.\n* @example\nimport {hasClass} from \"@daybrush/utils\";\n\nconsole.log(hasClass(element, \"start\")); // true or false\n*/\nexport function hasClass(element: Element, className: string) {\n if (element.classList) {\n return element.classList.contains(className);\n }\n return !!element.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`));\n}\n\n/**\n* Add the specified class value. If these classe already exist in the element's class attribute they are ignored.\n* @memberof DOM\n* @param element - target\n* @param className - the class name to add\n* @example\nimport {addClass} from \"@daybrush/utils\";\n\naddClass(element, \"start\");\n*/\nexport function addClass(element: Element, className: string) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className += ` ${className}`;\n }\n}\n\n/**\n* Removes the specified class value.\n* @memberof DOM\n* @param element - target\n* @param className - the class name to remove\n* @example\nimport {removeClass} from \"@daybrush/utils\";\n\nremoveClass(element, \"start\");\n*/\nexport function removeClass(element: Element, className: string) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`);\n\n element.className = element.className.replace(reg, \" \");\n }\n}\n\n/**\n* Gets the CSS properties from the element.\n* @memberof DOM\n* @param elements - elements\n* @param properites - the CSS properties\n* @return returns CSS properties and values.\n* @example\nimport {fromCSS} from \"@daybrush/utils\";\n\nconsole.log(fromCSS(element, [\"left\", \"opacity\", \"top\"])); // {\"left\": \"10px\", \"opacity\": 1, \"top\": \"10px\"}\n*/\nexport function fromCSS(\n elements: Element | Element[] | NodeListOf, properties: string[]): IObject {\n if (!elements || !properties || !properties.length) {\n return {};\n }\n let element;\n\n if (elements instanceof Element) {\n element = elements;\n } else if (elements.length) {\n element = elements[0];\n } else {\n return {};\n }\n const cssObject: IObject = {};\n const styles = getWindow(element).getComputedStyle(element) as any;\n const length = properties.length;\n\n for (let i = 0; i < length; ++i) {\n cssObject[properties[i]] = styles[properties[i]];\n }\n return cssObject;\n}\n\nexport function addEvent(\n el: EventTarget, type: K, listener: (e: IEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;\n/**\n* Sets up a function that will be called whenever the specified event is delivered to the target\n* @memberof DOM\n* @param - event target\n* @param - A case-sensitive string representing the event type to listen for.\n* @param - The object which receives a notification (an object that implements the Event interface) when an event of the specified type occurs\n* @param - An options object that specifies characteristics about the event listener.\n* @example\nimport {addEvent} from \"@daybrush/utils\";\n\naddEvent(el, \"click\", e => {\n console.log(e);\n});\n*/\nexport function addEvent(\n el: EventTarget,\n type: string, listener: (e: Event) => void,\n options?: boolean | AddEventListenerOptions) {\n el.addEventListener(type, listener, options);\n}\n\nexport function removeEvent(\n el: EventTarget, type: K, listener: (e: IEventMap[K]) => void, options?: boolean | EventListenerOptions): void;\n/**\n* removes from the EventTarget an event listener previously registered with EventTarget.addEventListener()\n* @memberof DOM\n* @param - event target\n* @param - A case-sensitive string representing the event type to listen for.\n* @param - The EventListener function of the event handler to remove from the event target.\n* @param - An options object that specifies characteristics about the event listener.\n* @example\nimport {addEvent, removeEvent} from \"@daybrush/utils\";\nconst listener = e => {\n console.log(e);\n};\naddEvent(el, \"click\", listener);\nremoveEvent(el, \"click\", listener);\n*/\nexport function removeEvent(\n el: EventTarget, type: string,\n listener: (e: Event) => void,\n options?: boolean | EventListenerOptions,\n) {\n el.removeEventListener(type, listener, options);\n}\n\n\nexport function getDocument(el?: Node) {\n return el?.ownerDocument || document;\n}\n\nexport function getDocumentElement(el?: Node) {\n return getDocument(el).documentElement;\n}\n\nexport function getDocumentBody(el?: Node) {\n return getDocument(el).body;\n}\n\nexport function getWindow(el?: Node) {\n return el?.ownerDocument?.defaultView || window;\n}\n\n\nexport function isWindow(val: any): val is Window {\n return val && \"postMessage\" in val && \"blur\" in val && \"self\" in val;\n}\n\nexport function isNode(el?: any): el is Node {\n return isObject(el) && el.nodeName && el.nodeType && \"ownerDocument\" in el;\n}\n","import { average, throttle, TINY_NUM } from \"@daybrush/utils\";\n\nfunction add(\n matrix: number[],\n inverseMatrix: number[],\n startIndex: number,\n fromIndex: number,\n n: number,\n k: number,\n) {\n for (let i = 0; i < n; ++i) {\n const x = startIndex + i * n;\n const fromX = fromIndex + i * n;\n matrix[x] += matrix[fromX] * k;\n inverseMatrix[x] += inverseMatrix[fromX] * k;\n }\n}\n\nfunction swap(\n matrix: number[],\n inverseMatrix: number[],\n startIndex: number,\n fromIndex: number,\n n: number,\n) {\n for (let i = 0; i < n; ++i) {\n const x = startIndex + i * n;\n const fromX = fromIndex + i * n;\n const v = matrix[x];\n const iv = inverseMatrix[x];\n\n matrix[x] = matrix[fromX];\n matrix[fromX] = v;\n\n inverseMatrix[x] = inverseMatrix[fromX];\n inverseMatrix[fromX] = iv;\n }\n}\n\nfunction divide(\n matrix: number[],\n inverseMatrix: number[],\n startIndex: number,\n n: number,\n k: number,\n) {\n for (let i = 0; i < n; ++i) {\n const x = startIndex + i * n;\n\n matrix[x] /= k;\n inverseMatrix[x] /= k;\n }\n}\n\n/**\n *\n * @namespace Matrix\n */\n/**\n * @memberof Matrix\n */\nexport function ignoreDimension(\n matrix: number[],\n m: number,\n n: number = Math.sqrt(matrix.length),\n) {\n const newMatrix = matrix.slice();\n\n for (let i = 0; i < n; ++i) {\n newMatrix[i * n + m - 1] = 0;\n newMatrix[(m - 1) * n + i] = 0;\n }\n newMatrix[(m - 1) * (n + 1)] = 1;\n\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function invert(\n matrix: number[],\n n: number = Math.sqrt(matrix.length),\n) {\n const newMatrix = matrix.slice();\n const inverseMatrix = createIdentityMatrix(n);\n\n for (let i = 0; i < n; ++i) {\n // diagonal\n const identityIndex = n * i + i;\n\n if (!throttle(newMatrix[identityIndex], TINY_NUM)) {\n // newMatrix[identityIndex] = 0;\n for (let j = i + 1; j < n; ++j) {\n if (newMatrix[n * i + j]) {\n swap(newMatrix, inverseMatrix, i, j, n);\n break;\n }\n }\n }\n if (!throttle(newMatrix[identityIndex], TINY_NUM)) {\n // no inverse matrix\n return [];\n }\n divide(newMatrix, inverseMatrix, i, n, newMatrix[identityIndex]);\n for (let j = 0; j < n; ++j) {\n const targetStartIndex = j;\n const targetIndex = j + i * n;\n const target = newMatrix[targetIndex];\n\n if (!throttle(target, TINY_NUM) || i === j) {\n continue;\n }\n add(newMatrix, inverseMatrix, targetStartIndex, i, n, -target);\n }\n }\n\n return inverseMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function transpose(matrix: number[], n: number = Math.sqrt(matrix.length)) {\n const newMatrix: number[] = [];\n\n for (let i = 0; i < n; ++i) {\n for (let j = 0; j < n; ++j) {\n newMatrix[j * n + i] = matrix[n * i + j];\n }\n }\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function getOrigin(matrix: number[], n: number = Math.sqrt(matrix.length)) {\n const originMatrix: number[] = [];\n const w = matrix[n * n - 1];\n for (let i = 0; i < n - 1; ++i) {\n originMatrix[i] = matrix[n * (n - 1) + i] / w;\n }\n originMatrix[n - 1] = 0;\n return originMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function fromTranslation(pos: number[], n: number) {\n const newMatrix = createIdentityMatrix(n);\n\n for (let i = 0; i < n - 1; ++i) {\n newMatrix[n * (n - 1) + i] = pos[i] || 0;\n }\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function convertPositionMatrix(matrix: number[], n: number) {\n const newMatrix = matrix.slice();\n\n for (let i = matrix.length; i < n - 1; ++i) {\n newMatrix[i] = 0;\n }\n newMatrix[n - 1] = 1;\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function convertDimension(matrix: number[], n: number = Math.sqrt(matrix.length), m: number) {\n // n < m\n if (n === m) {\n return matrix;\n }\n const newMatrix = createIdentityMatrix(m);\n\n const length = Math.min(n, m);\n for (let i = 0; i < length - 1; ++i) {\n for (let j = 0; j < length - 1; ++j) {\n newMatrix[i * m + j] = matrix[i * n + j];\n }\n\n newMatrix[(i + 1) * m - 1] = matrix[(i + 1) * n - 1];\n newMatrix[(m - 1) * m + i] = matrix[(n - 1) * n + i];\n }\n newMatrix[m * m - 1] = matrix[n * n - 1];\n\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function multiplies(n: number, ...matrixes: number[][]) {\n let m: number[] = createIdentityMatrix(n);\n\n matrixes.forEach(matrix => {\n m = multiply(m, matrix, n);\n });\n return m;\n}\n\n/**\n * @memberof Matrix\n */\nexport function multiply(matrix: number[], matrix2: number[], n: number = Math.sqrt(matrix.length)) {\n const newMatrix: number[] = [];\n // 1 y: n\n // 1 x: m\n // 2 x: m\n // 2 y: k\n // n * m X m * k\n const m = matrix.length / n;\n const k = matrix2.length / m;\n\n if (!m) {\n return matrix2;\n } else if (!k) {\n return matrix;\n }\n for (let i = 0; i < n; ++i) {\n for (let j = 0; j < k; ++j) {\n newMatrix[j * n + i] = 0;\n for (let l = 0; l < m; ++l) {\n // m1 x: m(l), y: n(i)\n // m2 x: k(j): y: m(l)\n // nw x: n(i), y: k(j)\n newMatrix[j * n + i] += matrix[l * n + i] * matrix2[j * m + l];\n }\n }\n }\n // n * k\n return newMatrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function plus(pos1: number[], pos2: number[]) {\n const length = Math.min(pos1.length, pos2.length);\n const nextPos = pos1.slice();\n\n for (let i = 0; i < length; ++i) {\n nextPos[i] = nextPos[i] + pos2[i];\n }\n return nextPos;\n}\n\n/**\n * @memberof Matrix\n */\nexport function minus(pos1: number[], pos2: number[]) {\n const length = Math.min(pos1.length, pos2.length);\n const nextPos = pos1.slice();\n\n for (let i = 0; i < length; ++i) {\n nextPos[i] = nextPos[i] - pos2[i];\n }\n return nextPos;\n}\n\n/**\n * @memberof Matrix\n */\nexport function convertCSStoMatrix(a: number[], is2d: boolean = a.length === 6) {\n if (is2d) {\n return [\n a[0], a[1], 0,\n a[2], a[3], 0,\n a[4], a[5], 1,\n ];\n }\n return a;\n}\n\n/**\n * @memberof Matrix\n */\nexport function convertMatrixtoCSS(a: number[], is2d: boolean = a.length === 9) {\n if (is2d) {\n return [\n a[0], a[1],\n a[3], a[4],\n a[6], a[7],\n ];\n }\n return a;\n}\n\n/**\n * @memberof Matrix\n */\nexport function calculate(matrix: number[], matrix2: number[], n: number = matrix2.length) {\n const result = multiply(matrix, matrix2, n);\n const k = result[n - 1];\n return result.map(v => v / k);\n}\n\n/**\n * @memberof Matrix\n */\nexport function rotateX3d(matrix: number[], rad: number) {\n return multiply(\n matrix,\n [\n 1, 0, 0, 0,\n 0, Math.cos(rad), Math.sin(rad), 0,\n 0, -Math.sin(rad), Math.cos(rad), 0,\n 0, 0, 0, 1,\n ],\n 4,\n );\n}\n\n/**\n * @memberof Matrix\n */\nexport function rotateY3d(matrix: number[], rad: number) {\n return multiply(\n matrix,\n [\n Math.cos(rad), 0, -Math.sin(rad), 0,\n 0, 1, 0, 0,\n Math.sin(rad), 0, Math.cos(rad), 0,\n 0, 0, 0, 1,\n ],\n 4,\n );\n}\n\n/**\n * @memberof Matrix\n */\nexport function rotateZ3d(matrix: number[], rad: number) {\n return multiply(\n matrix,\n createRotateMatrix(rad, 4),\n );\n}\n\n/**\n * @memberof Matrix\n */\nexport function scale3d(matrix: number[], [\n sx = 1,\n sy = 1,\n sz = 1,\n]: number[]) {\n return multiply(\n matrix,\n [\n sx, 0, 0, 0,\n 0, sy, 0, 0,\n 0, 0, sz, 0,\n 0, 0, 0, 1,\n ],\n 4,\n );\n}\n\n/**\n * @memberof Matrix\n */\nexport function rotate(pos: number[], rad: number) {\n return calculate(\n createRotateMatrix(rad, 3),\n convertPositionMatrix(pos, 3),\n );\n}\n\n/**\n * @memberof Matrix\n */\nexport function translate3d(matrix, [\n tx = 0,\n ty = 0,\n tz = 0,\n]: number[]) {\n return multiply(\n matrix,\n [\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n tx, ty, tz, 1,\n ],\n 4,\n );\n}\n/**\n * @memberof Matrix\n */\nexport function matrix3d(matrix1: number[], matrix2: number[]) {\n return multiply(matrix1, matrix2, 4);\n}\n\n/**\n * @memberof Matrix\n */\nexport function createRotateMatrix(rad: number, n: number) {\n const cos = Math.cos(rad);\n const sin = Math.sin(rad);\n const m = createIdentityMatrix(n);\n\n // cos -sin\n // sin cos\n m[0] = cos;\n m[1] = sin;\n m[n] = -sin;\n m[n + 1] = cos;\n\n return m;\n}\n\n/**\n * @memberof Matrix\n */\nexport function createIdentityMatrix(n: number) {\n const length = n * n;\n const matrix: number[] = [];\n\n for (let i = 0; i < length; ++i) {\n matrix[i] = i % (n + 1) ? 0 : 1;\n }\n return matrix;\n}\n\n/**\n * @memberof Matrix\n */\nexport function createScaleMatrix(scale: number[], n: number) {\n const m = createIdentityMatrix(n);\n const length = Math.min(scale.length, n - 1);\n\n for (let i = 0; i < length; ++i) {\n m[(n + 1) * i] = scale[i];\n }\n return m;\n}\n\n/**\n * @memberof Matrix\n */\nexport function createOriginMatrix(origin: number[], n: number) {\n const m = createIdentityMatrix(n);\n const length = Math.min(origin.length, n - 1);\n\n for (let i = 0; i < length; ++i) {\n m[n * (n - 1) + i] = origin[i];\n }\n return m;\n}\n\n/**\n * @memberof Matrix\n */\nexport function createWarpMatrix(\n pos0: number[],\n pos1: number[],\n pos2: number[],\n pos3: number[],\n nextPos0: number[],\n nextPos1: number[],\n nextPos2: number[],\n nextPos3: number[],\n) {\n const [x0, y0] = pos0;\n const [x1, y1] = pos1;\n const [x2, y2] = pos2;\n const [x3, y3] = pos3;\n\n const [u0, v0] = nextPos0;\n const [u1, v1] = nextPos1;\n const [u2, v2] = nextPos2;\n const [u3, v3] = nextPos3;\n\n const matrix = [\n x0, 0, x1, 0, x2, 0, x3, 0,\n y0, 0, y1, 0, y2, 0, y3, 0,\n 1, 0, 1, 0, 1, 0, 1, 0,\n 0, x0, 0, x1, 0, x2, 0, x3,\n 0, y0, 0, y1, 0, y2, 0, y3,\n 0, 1, 0, 1, 0, 1, 0, 1,\n -u0 * x0, -v0 * x0, -u1 * x1, -v1 * x1, -u2 * x2, -v2 * x2, -u3 * x3, -v3 * x3,\n -u0 * y0, -v0 * y0, -u1 * y1, -v1 * y1, -u2 * y2, -v2 * y2, -u3 * y3, -v3 * y3,\n ];\n const inverseMatrix = invert(matrix, 8);\n\n if (!inverseMatrix.length) {\n return [];\n }\n const h = multiply(inverseMatrix, [u0, v0, u1, v1, u2, v2, u3, v3], 8);\n\n h[8] = 1;\n return convertDimension(transpose(h), 3, 4);\n}\n\n/**\n * @memberof Matrix\n */\nexport function getCenter(points: number[][]) {\n return [0, 1].map(i => average(points.map(pos => pos[i])));\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n};\r\n","import { splitComma, splitBracket, splitUnit, splitSpace, isArray, convertUnitSize, isObject } from \"@daybrush/utils\";\nimport { MatrixInfo } from \"./types\";\nimport { calculate, invert, matrix3d, rotateX3d, rotateY3d, rotateZ3d, scale3d, translate3d } from \"@scena/matrix\";\n\nexport function createMatrix() {\n return [\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1,\n ];\n}\nexport function parseMat(transform: string | string[], size: number | Record number) | number> = 0): number[] {\n return toMat(parse(transform, size));\n}\nexport function getElementMatrix(el: HTMLElement) {\n return parseMat(getComputedStyle(el).transform!);\n}\nexport function calculateMatrixDist(matrix: number[], pos: number[]) {\n const res = calculate(matrix, [pos[0], pos[1] || 0, pos[2] || 0, 1], 4);\n const w = res[3] || 1;\n\n return [\n res[0] / w,\n res[1] / w,\n res[2] / w,\n ];\n}\nexport function getDistElementMatrix(el: HTMLElement, container = document.body): number[] {\n let target: HTMLElement | null = el;\n let matrix = createMatrix();\n\n while (target) {\n const transform = getComputedStyle(target).transform!;\n matrix = matrix3d(parseMat(transform), matrix);\n\n if (target === container) {\n break;\n }\n target = target.parentElement;\n }\n matrix = invert(matrix, 4);\n\n matrix[12] = 0;\n matrix[13] = 0;\n matrix[14] = 0;\n\n return matrix;\n}\n\nexport function toMat(matrixInfos: MatrixInfo[]): number[] {\n let target = createMatrix();\n\n matrixInfos.forEach(info => {\n const {\n matrixFunction,\n functionValue,\n } = info;\n\n if (!matrixFunction) {\n return;\n }\n target = matrixFunction(target, functionValue);\n });\n return target;\n}\nexport function parse(transform: string | string[], size: number | Record number) | number> = 0): MatrixInfo[] {\n const transforms = isArray(transform) ? transform : splitSpace(transform);\n\n return transforms.map(t => {\n const { prefix: name, value } = splitBracket(t);\n\n\n let matrixFunction = null;\n let functionName: string = name;\n let functionValue: any = \"\";\n\n if (name === \"translate\" || name === \"translateX\" || name === \"translate3d\") {\n const nextSize = isObject(size) ? {\n ...size,\n \"o%\": size[\"%\"],\n } : {\n \"%\": size,\n \"o%\": size,\n };\n const [posX, posY = 0, posZ = 0] = splitComma(value!).map((v, i) => {\n if (i === 0 && \"x%\" in nextSize) {\n nextSize[\"%\"] = size[\"x%\"];\n } else if (i === 1 && \"y%\" in nextSize) {\n nextSize[\"%\"] = size[\"y%\"];\n } else {\n nextSize[\"%\"] = size[\"o%\"];\n }\n return convertUnitSize(v, nextSize);\n });\n\n matrixFunction = translate3d;\n functionValue = [posX, posY, posZ];\n } else if (name === \"translateY\") {\n const nextSize = isObject(size) ? {\n \"%\": size[\"y%\"],\n ...size,\n } : {\n \"%\": size,\n };\n const posY = convertUnitSize(value!, nextSize);\n\n matrixFunction = translate3d;\n functionValue = [0, posY, 0];\n } else if (name === \"translateZ\") {\n const posZ = parseFloat(value!);\n\n matrixFunction = translate3d;\n functionValue = [0, 0, posZ];\n } else if (name === \"scale\" || name === \"scale3d\") {\n const [sx, sy = sx, sz = 1] = splitComma(value!).map(v => parseFloat(v)) as number[];\n\n matrixFunction = scale3d;\n functionValue = [sx, sy, sz];\n } else if (name === \"scaleX\") {\n const sx = parseFloat(value!);\n\n matrixFunction = scale3d;\n functionValue = [sx, 1, 1];\n } else if (name === \"scaleY\") {\n const sy = parseFloat(value!);\n\n matrixFunction = scale3d;\n functionValue = [1, sy, 1];\n } else if (name === \"scaleZ\") {\n const sz = parseFloat(value!);\n\n matrixFunction = scale3d;\n functionValue = [1, 1, sz];\n } else if (name === \"rotate\" || name === \"rotateZ\" || name === \"rotateX\" || name === \"rotateY\") {\n const { unit, value: unitValue } = splitUnit(value!);\n const rad = unit === \"rad\" ? unitValue : unitValue * Math.PI / 180;\n\n if (name === \"rotate\" || name === \"rotateZ\") {\n functionName = \"rotateZ\";\n matrixFunction = rotateZ3d;\n } else if (name === \"rotateX\") {\n matrixFunction = rotateX3d;\n } else if (name === \"rotateY\") {\n matrixFunction = rotateY3d;\n }\n functionValue = rad;\n } else if (name === \"matrix3d\") {\n matrixFunction = matrix3d;\n functionValue = splitComma(value!).map(v => parseFloat(v));\n } else if (name === \"matrix\") {\n const m = splitComma(value!).map(v => parseFloat(v));\n matrixFunction = matrix3d;\n functionValue = [\n m[0], m[1], 0, 0,\n m[2], m[3], 0, 0,\n 0, 0, 1, 0,\n m[4], m[5], 0, 1,\n ];\n } else {\n functionName = \"\";\n }\n return {\n name: name!,\n functionName,\n value: value!,\n matrixFunction,\n functionValue,\n };\n });\n}\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nexport default class PolyMap {\n private keys: T[] = [];\n private values: number[] = [];\n public get(key: T): number {\n return this.values[this.keys.indexOf(key)];\n }\n public set(key: T, value: number) {\n const keys = this.keys;\n const values = this.values;\n const prevIndex = keys.indexOf(key);\n const index = prevIndex === -1 ? keys.length : prevIndex;\n\n keys[index] = key;\n values[index] = value;\n }\n}\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nexport default class HashMap {\n private object = {};\n public get(key: number | string): T {\n return this.object[key];\n }\n public set(key: number | string, value: T) {\n this.object[key] = value;\n }\n};\n\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nexport const SUPPORT_MAP = typeof Map === \"function\";\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nexport default class Link {\n prev?: Link;\n next?: Link;\n\n public connect(prevLink?: Link, nextLink?: Link) {\n this.prev = prevLink;\n this.next = nextLink;\n\n prevLink && (prevLink.next = this);\n nextLink && (nextLink.prev = this);\n }\n public disconnect() {\n // In double linked list, diconnect the interconnected relationship.\n const prevLink = this.prev;\n const nextLink = this.next;\n prevLink && (prevLink.next = nextLink);\n nextLink && (nextLink.prev = prevLink);\n }\n public getIndex() {\n let link: Link | undefined = this;\n let index = -1;\n\n while (link) {\n link = link.prev;\n ++index;\n }\n return index;\n }\n}\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nimport Link from \"./Link\";\n\nfunction orderChanged(changed: number[][], fixed: boolean[]) {\n // It is roughly in the order of these examples.\n // 4, 6, 0, 2, 1, 3, 5, 7\n const fromLinks: Link[] = [];\n // 0, 1, 2, 3, 4, 5, 6, 7\n const toLinks: Link[] = [];\n\n changed.forEach(([from, to]) => {\n const link = new Link();\n\n fromLinks[from] = link;\n toLinks[to] = link;\n });\n // `fromLinks` are connected to each other by double linked list.\n fromLinks.forEach((link, i) => {\n link.connect(fromLinks[i - 1]);\n });\n\n return changed.filter((_, i) => !fixed[i]).map(([from, to], i) => {\n if (from === to) {\n return [0, 0];\n }\n const fromLink = fromLinks[from];\n const toLink = toLinks[to - 1];\n const fromIndex = fromLink.getIndex();\n\n // Disconnect the link connected to `fromLink`.\n fromLink.disconnect();\n\n // Connect `fromLink` to the right of `toLink`.\n if (!toLink) {\n fromLink.connect(undefined, fromLinks[0]);\n } else {\n fromLink.connect(toLink, toLink.next);\n }\n const toIndex = fromLink.getIndex();\n return [fromIndex, toIndex];\n });\n}\n\nexport default class Result {\n public prevList: T[];\n public list: T[];\n public added: number[];\n public removed: number[];\n public changed: number[][];\n public maintained: number[][];\n private changedBeforeAdded: number[][];\n private fixed: boolean[];\n\n private cacheOrdered: number[][];\n private cachePureChanged: number[][];\n constructor(\n prevList: T[],\n list: T[],\n added: number[],\n removed: number[],\n changed: number[][],\n maintained: number[][],\n changedBeforeAdded: number[][],\n fixed: boolean[],\n ) {\n this.prevList = prevList;\n this.list = list;\n this.added = added;\n this.removed = removed;\n this.changed = changed;\n this.maintained = maintained;\n this.changedBeforeAdded = changedBeforeAdded;\n this.fixed = fixed;\n }\n get ordered(): number[][] {\n if (!this.cacheOrdered) {\n this.caculateOrdered();\n }\n return this.cacheOrdered;\n }\n get pureChanged(): number[][] {\n if (!this.cachePureChanged) {\n this.caculateOrdered();\n }\n return this.cachePureChanged;\n }\n private caculateOrdered() {\n const ordered = orderChanged(this.changedBeforeAdded, this.fixed);\n const changed: number[][] = this.changed;\n const pureChanged: number[][] = [];\n\n this.cacheOrdered = ordered.filter(([from, to], i) => {\n const [fromBefore, toBefore] = changed[i];\n\n if (from !== to) {\n pureChanged.push([fromBefore, toBefore]);\n return true;\n }\n });\n this.cachePureChanged = pureChanged;\n }\n}\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nimport { MapInteface, DiffResult } from \"./types\";\nimport PolyMap from \"./PolyMap\";\nimport HashMap from \"./HashMap\";\nimport { SUPPORT_MAP } from \"./consts\";\nimport Result from \"./Result\";\n\n/**\n *\n * @memberof eg.ListDiffer\n * @static\n * @function\n * @param - Previous List 이전 목록 \n * @param - List to Update 업데이트 할 목록 \n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\n * @return - Returns the diff between `prevList` and `list` `prevList`와 `list`의 다른 점을 반환한다.\n * @example\n * import { diff } from \"@egjs/list-differ\";\n * // script => eg.ListDiffer.diff\n * const result = diff([0, 1, 2, 3, 4, 5], [7, 8, 0, 4, 3, 6, 2, 1], e => e);\n * // List before update\n * // [1, 2, 3, 4, 5]\n * console.log(result.prevList);\n * // Updated list\n * // [4, 3, 6, 2, 1]\n * console.log(result.list);\n * // Index array of values added to `list`\n * // [0, 1, 5]\n * console.log(result.added);\n * // Index array of values removed in `prevList`\n * // [5]\n * console.log(result.removed);\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.changed);\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\n * // [[4, 3], [3, 4], [2, 6]]\n * console.log(result.pureChanged);\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\n * // [[4, 1], [4, 2], [4, 3]]\n * console.log(result.ordered);\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.maintained);\n */\nexport function diff(\n prevList: T[],\n list: T[],\n findKeyCallback?: (e: T, i: number, arr: T[]) => any\n): DiffResult {\n const mapClass: new () => MapInteface = SUPPORT_MAP ? Map : (findKeyCallback ? HashMap : PolyMap);\n const callback = findKeyCallback || ((e: T) => e);\n const added: number[] = [];\n const removed: number[] = [];\n const maintained: number[][] = [];\n const prevKeys = prevList.map(callback);\n const keys = list.map(callback);\n const prevKeyMap: MapInteface = new mapClass();\n const keyMap: MapInteface = new mapClass();\n const changedBeforeAdded: number[][] = [];\n const fixed: boolean[] = [];\n const removedMap: object = {};\n let changed: number[][] = [];\n let addedCount = 0;\n let removedCount = 0;\n\n // Add prevKeys and keys to the hashmap.\n prevKeys.forEach((key, prevListIndex) => {\n prevKeyMap.set(key, prevListIndex);\n });\n keys.forEach((key, listIndex) => {\n keyMap.set(key, listIndex);\n });\n\n // Compare `prevKeys` and `keys` and add them to `removed` if they are not in `keys`.\n prevKeys.forEach((key, prevListIndex) => {\n const listIndex = keyMap.get(key);\n\n // In prevList, but not in list, it is removed.\n if (typeof listIndex === \"undefined\") {\n ++removedCount;\n removed.push(prevListIndex);\n } else {\n removedMap[listIndex] = removedCount;\n }\n });\n\n // Compare `prevKeys` and `keys` and add them to `added` if they are not in `prevKeys`.\n keys.forEach((key, listIndex) => {\n const prevListIndex = prevKeyMap.get(key);\n\n // In list, but not in prevList, it is added.\n if (typeof prevListIndex === \"undefined\") {\n added.push(listIndex);\n ++addedCount;\n } else {\n maintained.push([prevListIndex, listIndex]);\n removedCount = removedMap[listIndex] || 0;\n\n changedBeforeAdded.push([\n prevListIndex - removedCount,\n listIndex - addedCount,\n ]);\n fixed.push(listIndex === prevListIndex);\n if (prevListIndex !== listIndex) {\n changed.push([prevListIndex, listIndex]);\n }\n }\n });\n // Sort by ascending order of 'to(list's index).\n removed.reverse();\n\n return new Result(\n prevList,\n list,\n added,\n removed,\n changed,\n maintained,\n changedBeforeAdded,\n fixed,\n );\n}\n","/*\negjs-list-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nimport { DiffResult, ListFormat } from \"./types\";\nimport { diff } from \"./utils\";\n\n/**\n * A module that checks diff when values are added, removed, or changed in an array.\n * @ko 배열 또는 오브젝트에서 값이 추가되거나 삭제되거나 순서가 변경사항을 체크하는 모듈입니다.\n * @memberof eg\n */\nclass ListDiffer {\n private list: T[];\n /**\n * @param - Initializing Data Array. 초기 설정할 데이터 배열.\n * @param - This callback function returns the key of the item. 아이템의 키를 반환하는 콜백 함수입니다.\n * @example\n * import ListDiffer from \"@egjs/list-differ\";\n * // script => eg.ListDiffer\n * const differ = new ListDiffer([0, 1, 2, 3, 4, 5], e => e);\n * const result = differ.update([7, 8, 0, 4, 3, 6, 2, 1]);\n * // List before update\n * // [1, 2, 3, 4, 5]\n * console.log(result.prevList);\n * // Updated list\n * // [4, 3, 6, 2, 1]\n * console.log(result.list);\n * // Index array of values added to `list`.\n * // [0, 1, 5]\n * console.log(result.added);\n * // Index array of values removed in `prevList`.\n * // [5]\n * console.log(result.removed);\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`.\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.changed);\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\n * // [[4, 3], [3, 4], [2, 6]]\n * console.log(result.pureChanged);\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\n * // [[4, 1], [4, 2], [4, 3]]\n * console.log(result.ordered);\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved.\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.maintained);\n */\n constructor(\n list: ListFormat = [],\n private findKeyCallback?: (e: T, i: number, arr: T[]) => number | string,\n ) {\n this.list = [].slice.call(list);\n }\n /**\n * Update list.\n * @ko 리스트를 업데이트를 합니다.\n * @param - List to update 업데이트할 리스트 \n * @return - Returns the results of an update from `prevList` to `list`. `prevList`에서 `list`로 업데이트한 결과를 반환한다. \n */\n public update(list: ListFormat): DiffResult {\n const newData: T[] = [].slice.call(list);\n const result = diff(this.list, newData, this.findKeyCallback);\n\n this.list = newData;\n return result;\n }\n}\n\nexport default ListDiffer;\n","/*\negjs-children-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nexport const findKeyCallback = typeof Map === \"function\"\n ? undefined\n : (() => {\n let childrenCount = 0;\n\n return (el: Element) => (el as any).__DIFF_KEY__ || ((el as any).__DIFF_KEY__ = ++childrenCount);\n })();\n","/*\negjs-children-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nimport ListDiffer, { ListFormat } from \"@egjs/list-differ\";\nimport { findKeyCallback } from \"./consts\";\n\n/**\n * A module that checks diff when child are added, removed, or changed .\n * @ko 자식 노드들에서 자식 노드가 추가되거나 삭제되거나 순서가 변경된 사항을 체크하는 모듈입니다.\n * @memberof eg\n * @extends eg.ListDiffer\n */\nclass ChildrenDiffer extends ListDiffer {\n /**\n * @param - Initializing Children 초기 설정할 자식 노드들\n */\n constructor(\n list: ListFormat = [],\n ) {\n super(list, findKeyCallback);\n }\n}\nexport default ChildrenDiffer;\n","import { findIndex, isObject } from \"@daybrush/utils\";\nimport { EventListener, EventHash, EventInfo, EventOptions, OnEvent, TargetParam } from \"./types\";\n\n/**\n * Implement EventEmitter on object or component.\n */\nclass EventEmitter {\n\n private _events: {\n [name: string]: EventInfo[],\n } = {};\n public on(\n eventName: Name, listener: EventListener): this;\n public on(events: EventHash): this;\n /**\n * Add a listener to the registered event.\n * @param - Name of the event to be added\n * @param - listener function of the event to be added\n * @example\n * import EventEmitter from \"@scena/event-emitter\";\n * cosnt emitter = new EventEmitter();\n *\n * // Add listener in \"a\" event\n * emitter.on(\"a\", () => {\n * });\n * // Add listeners\n * emitter.on({\n * a: () => {},\n * b: () => {},\n * });\n */\n public on(eventName: string | object, listener?: EventListener): this {\n if (isObject(eventName)) {\n for (const name in eventName) {\n this.on(name, eventName[name]);\n }\n } else {\n this._addEvent(eventName, listener, {});\n }\n return this;\n }\n public off(\n eventName?: Name, listener?: EventListener): this;\n public off(events: EventHash): this;\n /**\n * Remove listeners registered in the event target.\n * @param - Name of the event to be removed\n * @param - listener function of the event to be removed\n * @example\n * import EventEmitter from \"@scena/event-emitter\";\n * cosnt emitter = new EventEmitter();\n *\n * // Remove all listeners.\n * emitter.off();\n *\n * // Remove all listeners in \"A\" event.\n * emitter.off(\"a\");\n *\n *\n * // Remove \"listener\" listener in \"a\" event.\n * emitter.off(\"a\", listener);\n */\n public off(eventName?: string | object, listener?: EventListener): this {\n if (!eventName) {\n this._events = {};\n } else if(isObject(eventName)) {\n for (const name in eventName) {\n this.off(name);\n }\n } else if (!listener) {\n this._events[eventName] = [];\n } else {\n const events = this._events[eventName];\n\n if (events) {\n const index = findIndex(events, e => e.listener === listener);\n\n if (index > -1) {\n events.splice(index, 1);\n }\n }\n }\n return this;\n }\n /**\n * Add a disposable listener and Use promise to the registered event.\n * @param - Name of the event to be added\n * @param - disposable listener function of the event to be added\n * @example\n * import EventEmitter from \"@scena/event-emitter\";\n * cosnt emitter = new EventEmitter();\n *\n * // Add a disposable listener in \"a\" event\n * emitter.once(\"a\", () => {\n * });\n *\n * // Use Promise\n * emitter.once(\"a\").then(e => {\n * });\n */\n public once(\n eventName: Name, listener?: EventListener): Promise> {\n if (listener) {\n this._addEvent(eventName, listener, { once: true });\n }\n return new Promise>(resolve => {\n this._addEvent(eventName, resolve, { once: true });\n });\n }\n public emit(\n eventName: {} extends Param ? Name : never): boolean;\n public emit(\n eventName: Name, param: TargetParam): boolean;\n /**\n * Fires an event to call listeners.\n * @param - Event name\n * @param - Event parameter\n * @return If false, stop the event.\n * @example\n *\n * import EventEmitter from \"@scena/event-emitter\";\n *\n *\n * const emitter = new EventEmitter();\n *\n * emitter.on(\"a\", e => {\n * });\n *\n *\n * emitter.emit(\"a\", {\n * a: 1,\n * });\n */\n public emit(eventName: string, param: TargetParam = {}): boolean {\n const events = this._events[eventName];\n\n if (!eventName || !events) {\n return true;\n }\n let isStop = false;\n\n param.eventType = eventName;\n param.stop = () => {\n isStop = true;\n };\n param.currentTarget = this;\n\n\n [...events].forEach(info => {\n info.listener(param);\n if (info.once) {\n this.off(eventName, info.listener);\n }\n });\n\n return !isStop;\n }\n public trigger(eventName: {} extends TargetParam ? Name : never): boolean;\n public trigger(eventName: Name, param: TargetParam): boolean;\n /**\n * Fires an event to call listeners.\n * @param - Event name\n * @param - Event parameter\n * @return If false, stop the event.\n * @example\n *\n * import EventEmitter from \"@scena/event-emitter\";\n *\n *\n * const emitter = new EventEmitter();\n *\n * emitter.on(\"a\", e => {\n * });\n *\n *\n * emitter.emit(\"a\", {\n * a: 1,\n * });\n *//**\n * Fires an event to call listeners.\n * @param - Event name\n * @param - Event parameter\n * @return If false, stop the event.\n * @example\n *\n * import EventEmitter from \"@scena/event-emitter\";\n *\n *\n * const emitter = new EventEmitter();\n *\n * emitter.on(\"a\", e => {\n * });\n *\n * // emit\n * emitter.trigger(\"a\", {\n * a: 1,\n * });\n */\n public trigger(eventName: Name, param: TargetParam= {}): boolean {\n return this.emit(eventName, param);\n }\n\n private _addEvent(eventName: string, listener: EventListener, options: Partial) {\n const events = this._events;\n\n events[eventName] = events[eventName] || [];\n\n const listeners = events[eventName];\n\n listeners.push({ listener, ...options });\n }\n}\n\nexport default EventEmitter;\n","import EventEmitter from \"@scena/event-emitter\";\nimport { isFunction, isString, now } from \"@daybrush/utils\";\nimport { CheckScrollOptions, DragScrollEvents, DragScrollOptions, Rect } from \"./types\";\n\nfunction getDefaultScrollPosition(e: { container: HTMLElement, direction: number[] }) {\n let container = e.container;\n\n if (container === document.body) {\n return [\n container.scrollLeft || document.documentElement.scrollLeft,\n container.scrollTop || document.documentElement.scrollTop,\n ];\n }\n return [\n container.scrollLeft,\n container.scrollTop,\n ];\n}\n\nfunction checkDefaultScrollEvent(container: HTMLElement | Window, callback: () => void) {\n container.addEventListener(\"scroll\", callback);\n\n return () => {\n container.removeEventListener(\"scroll\", callback);\n }\n}\n\nfunction getContainerElement(container: DragScrollOptions[\"container\"]): HTMLElement {\n if (!container) {\n return null;\n } else if (isString(container)) {\n return document.querySelector(container);\n } if (isFunction(container)) {\n return container();\n } else if (container instanceof Element) {\n return container;\n } else if (\"current\" in container) {\n return container.current;\n } else if (\"value\" in container) {\n return container.value;\n }\n}\n\n/**\n * @sort 1\n */\nclass DragScroll extends EventEmitter {\n private _startRect: Rect | null = null;\n private _startPos: number[] = [];\n private _prevTime: number = 0;\n private _timer: number = 0;\n private _prevScrollPos: number[] = [0, 0];\n private _isWait = false;\n private _flag = false;\n private _currentOptions: DragScrollOptions | null = null;\n private _lock = false;\n private _unregister: (() => void) | null = null;\n /**\n */\n public dragStart(e: any, options: DragScrollOptions) {\n const container = getContainerElement(options.container);\n\n if (!container) {\n this._flag = false;\n return;\n }\n let top = 0;\n let left = 0;\n let width = 0;\n let height = 0;\n\n if (container === document.body) {\n width = window.innerWidth;\n height = window.innerHeight;\n } else {\n const rect = container.getBoundingClientRect();\n\n top = rect.top;\n left = rect.left;\n width = rect.width;\n height = rect.height;\n }\n\n this._flag = true;\n this._startPos = [e.clientX, e.clientY];\n this._startRect = { top, left, width, height };\n this._prevScrollPos = this._getScrollPosition([0, 0], options);\n this._currentOptions = options;\n this._registerScrollEvent(options);\n }\n public drag(e: any, options: DragScrollOptions) {\n clearTimeout(this._timer);\n if (!this._flag) {\n return;\n }\n const {\n clientX,\n clientY,\n } = e;\n const {\n threshold = 0,\n } = options;\n const {\n _startRect,\n _startPos,\n } = this;\n\n\n this._currentOptions = options;\n const direction = [0, 0];\n\n if (_startRect.top > clientY - threshold) {\n if (_startPos[1] > _startRect.top || clientY < _startPos[1]) {\n direction[1] = -1;\n }\n } else if (_startRect.top + _startRect.height < clientY + threshold) {\n if (_startPos[1] < _startRect.top + _startRect.height || clientY > _startPos[1]) {\n direction[1] = 1;\n }\n }\n if (_startRect.left > clientX - threshold) {\n if (_startPos[0] > _startRect.left || clientX < _startPos[0]) {\n direction[0] = -1;\n }\n } else if (_startRect.left + _startRect.width < clientX + threshold) {\n if (_startPos[0] < _startRect.left + _startRect.width || clientX > _startPos[0]) {\n direction[0] = 1;\n }\n }\n\n if (!direction[0] && !direction[1]) {\n return false;\n }\n return this._continueDrag({\n ...options,\n direction,\n inputEvent: e,\n isDrag: true,\n });\n }\n /**\n */\n public checkScroll(options: CheckScrollOptions) {\n if (this._isWait) {\n return false;\n }\n const {\n prevScrollPos = this._prevScrollPos,\n direction,\n throttleTime = 0,\n inputEvent,\n isDrag,\n } = options;\n const nextScrollPos = this._getScrollPosition(direction || [0, 0], options);\n const offsetX = nextScrollPos[0] - prevScrollPos[0];\n const offsetY = nextScrollPos[1] - prevScrollPos[1];\n\n const nextDirection = direction || [\n offsetX ? Math.abs(offsetX) / offsetX : 0,\n offsetY ? Math.abs(offsetY) / offsetY : 0,\n ];\n this._prevScrollPos = nextScrollPos;\n this._lock = false;\n\n if (!offsetX && !offsetY) {\n return false;\n }\n /**\n * @event DragScroll#move\n */\n this.emit(\"move\", {\n offsetX: nextDirection[0] ? offsetX : 0,\n offsetY: nextDirection[1] ? offsetY : 0,\n inputEvent,\n });\n\n if (throttleTime && isDrag) {\n clearTimeout(this._timer);\n this._timer = window.setTimeout(() => {\n this._continueDrag(options);\n }, throttleTime);\n }\n return true;\n }\n /**\n *\n */\n public dragEnd() {\n this._flag = false;\n this._lock = false;\n clearTimeout(this._timer);\n this._unregisterScrollEvent();\n }\n private _getScrollPosition(direction: number[], options: DragScrollOptions) {\n const {\n container,\n getScrollPosition = getDefaultScrollPosition,\n } = options;\n return getScrollPosition({ container: getContainerElement(container), direction });\n }\n private _continueDrag(options: CheckScrollOptions) {\n const {\n container,\n direction,\n throttleTime,\n useScroll,\n isDrag,\n inputEvent,\n } = options;\n\n if (!this._flag || (isDrag && this._isWait)) {\n return;\n }\n const nowTime = now();\n const distTime = Math.max(throttleTime + this._prevTime - nowTime, 0);\n\n if (distTime > 0) {\n clearTimeout(this._timer);\n this._timer = window.setTimeout(() => {\n this._continueDrag(options);\n }, distTime);\n\n return false;\n }\n this._prevTime = nowTime;\n const prevScrollPos = this._getScrollPosition(direction, options);\n\n this._prevScrollPos = prevScrollPos;\n\n if (isDrag) {\n this._isWait = true;\n }\n\n // unregister native scroll event\n if (!useScroll) {\n this._lock = true;\n }\n const param = {\n container: getContainerElement(container),\n direction,\n inputEvent,\n };\n options.requestScroll?.(param);\n /**\n * @event DragScroll#scroll\n */\n this.emit(\"scroll\", param);\n\n this._isWait = false;\n return useScroll || this.checkScroll({\n ...options,\n prevScrollPos,\n direction,\n inputEvent,\n });\n }\n\n private _registerScrollEvent(options: DragScrollOptions) {\n this._unregisterScrollEvent();\n const checkScrollEvent = options.checkScrollEvent;\n\n if (!checkScrollEvent) {\n return;\n }\n const callback = checkScrollEvent === true ? checkDefaultScrollEvent : checkScrollEvent;\n const container = getContainerElement(options.container);\n\n if (checkScrollEvent === true && (container === document.body || container === document.documentElement)) {\n this._unregister = checkDefaultScrollEvent(window, this._onScroll);\n } else {\n this._unregister = callback(container, this._onScroll);\n }\n }\n private _unregisterScrollEvent() {\n this._unregister?.();\n this._unregister = null;\n }\n\n private _onScroll = () => {\n const options = this._currentOptions;\n if (this._lock || !options) {\n return;\n }\n\n this.emit(\"scrollDrag\", {\n next: (inputEvent: any) => {\n this.checkScroll({\n container: options.container,\n inputEvent,\n });\n },\n });\n };\n}\n\nexport default DragScroll;\n","import { throttle, TINY_NUM } from \"@daybrush/utils\";\n\nexport function tinyThrottle(num: number) {\n return throttle(num, TINY_NUM);\n}\n\nexport function isSameConstants(\n linearConstants1: number[],\n linearConstants2: number[],\n) {\n return linearConstants1.every((v, i) => tinyThrottle(v - linearConstants2[i]) === 0);\n}\n\nexport function isSamePoint(\n point1: number[],\n point2: number[],\n) {\n return !tinyThrottle(point1[0] - point2[0]) && !tinyThrottle(point1[1] - point2[1]);\n}\n\nexport function flat(arr: Type[][]): Type[] {\n return arr.reduce((prev, current) => {\n prev.push(...current);\n return prev;\n }, []);\n}\n","import { sum, findIndex, getShapeDirection, getDist, throttle, TINY_NUM, find } from \"@daybrush/utils\";\nimport { OverlapPointInfo, PointInfo, Rect } from \"./types\";\nimport { flat, isSameConstants, isSamePoint, tinyThrottle } from \"./utils\";\n\n/**\n * @namespace OverlapArea\n */\n\n/**\n * Gets the size of a shape (polygon) made of points.\n * @memberof OverlapArea\n */\nexport function getAreaSize(points: number[][]): number {\n if (points.length < 3) {\n return 0;\n }\n return Math.abs(sum(points.map((point, i) => {\n const nextPoint = points[i + 1] || points[0];\n\n return point[0] * nextPoint[1] - nextPoint[0] * point[1];\n }))) / 2;\n}\n\n\n/**\n * Get points that fit the rect,\n * @memberof OverlapArea\n */\nexport function fitPoints(points: number[][], rect: Rect): number[][] {\n const { width, height, left, top } = rect;\n const { minX, minY, maxX, maxY } = getMinMaxs(points);\n const ratioX = width / (maxX - minX);\n const ratioY = height / (maxY - minY);\n\n return points.map(point => {\n return [\n left + (point[0] - minX) * ratioX,\n top + (point[1] - minY) * ratioY,\n ];\n });\n}\n/**\n * Get the minimum and maximum points of the points.\n * @memberof OverlapArea\n */\nexport function getMinMaxs(points: number[][]): { minX: number, minY: number, maxX: number, maxY: number } {\n const xs = points.map(point => point[0]);\n const ys = points.map(point => point[1]);\n\n return {\n minX: Math.min(...xs),\n minY: Math.min(...ys),\n maxX: Math.max(...xs),\n maxY: Math.max(...ys),\n };\n}\n/**\n * Whether the point is in shape\n * @param - point pos\n * @param - shape points\n * @param - whether to check except line\n * @memberof OverlapArea\n */\nexport function isInside(pos: number[], points: number[][], excludeLine?: boolean): boolean {\n const [x, y] = pos;\n const {\n minX,\n maxX,\n } = getMinMaxs(points);\n\n const xLine = [[minX, y], [maxX, y]];\n const xLinearConstants = getLinearConstants(xLine[0], xLine[1]);\n const lines = convertLines(points);\n\n interface IntersectionPosInfo {\n pos: number[];\n line: number[][];\n type: \"intersection\" | \"point\" | \"line\";\n }\n const intersectionPosInfos: IntersectionPosInfo[] = [];\n\n lines.forEach(line => {\n const linearConstants = getLinearConstants(line[0], line[1]);\n const standardPoint = line[0];\n\n if (isSameConstants(xLinearConstants, linearConstants)) {\n intersectionPosInfos.push({\n pos: pos,\n line,\n type: \"line\",\n });\n } else {\n const xPoints = getPointsOnLines(getIntersectionPointsByConstants(xLinearConstants, linearConstants), [xLine, line]);\n\n xPoints.forEach(point => {\n if (line.some(linePoint => isSamePoint(linePoint, point))) {\n intersectionPosInfos.push({\n pos: point,\n line,\n type: \"point\",\n });\n } else if (tinyThrottle(standardPoint[1] - y) !== 0) {\n intersectionPosInfos.push({\n pos: point,\n line,\n type: \"intersection\",\n });\n }\n })\n }\n });\n\n if (!excludeLine) {\n // on line\n if (find(intersectionPosInfos, p => p[0] === x)) {\n return true;\n }\n }\n let intersectionCount = 0;\n const xMap = {};\n\n intersectionPosInfos.forEach(({ pos, type, line }) => {\n if (pos[0] > x) {\n return;\n }\n if (type === \"intersection\") {\n ++intersectionCount;\n } else if (type === \"line\") {\n return;\n } else if (type === \"point\") {\n const point = find(line, linePoint => linePoint[1] !== y);\n const prevValue = xMap[pos[0]];\n const nextValue = point[1] > y ? 1 : -1;\n\n if (!prevValue) {\n xMap[pos[0]] = nextValue;\n } else if (prevValue !== nextValue) {\n ++intersectionCount;\n }\n }\n });\n return intersectionCount % 2 === 1;\n}\n/**\n * Get distance from point to constants. [a, b, c] (ax + by + c = 0)\n * @return [a, b, c]\n * @memberof OverlapArea\n */\nexport function getDistanceFromPointToConstants(\n [a, b, c]: [number, number, number],\n pos: number[],\n) {\n return (a * pos[0] + b * pos[1] + c) / (a * a + b * b);\n}\n\n/**\n * Get the coefficient of the linear function. [a, b, c] (ax + by + c = 0)\n * @return [a, b, c]\n * @memberof OverlapArea\n */\nexport function getLinearConstants(point1: number[], point2: number[]): [number, number, number] {\n const [x1, y1] = point1;\n const [x2, y2] = point2;\n // ax + by + c = 0\n // [a, b, c]\n let dx = x2 - x1;\n let dy = y2 - y1;\n\n if (Math.abs(dx) < TINY_NUM) {\n dx = 0;\n }\n if (Math.abs(dy) < TINY_NUM) {\n dy = 0;\n }\n\n // b > 0\n // ax + by + c = 0\n let a = 0;\n let b = 0;\n let c = 0;\n if (!dx) {\n if (dy) {\n // -x + 1 = 0\n a = -1;\n c = x1;\n }\n } else if (!dy) {\n // y - 1 = 0\n b = 1;\n c = -y1;\n } else {\n // y = -a(x - x1) + y1\n // ax + y + a * x1 - y1 = 0\n a = -dy / dx;\n b = 1;\n c = -a * x1 - y1;\n }\n\n return [a, b, c] as [number, number, number];\n}\n/**\n * Get intersection points with linear functions.\n * @memberof OverlapArea\n */\nexport function getIntersectionPointsByConstants(\n linearConstants1: number[],\n linearConstants2: number[],\n): number[][] {\n const [a1, b1, c1] = linearConstants1;\n const [a2, b2, c2] = linearConstants2;\n\n const isZeroA = a1 === 0 && a2 === 0;\n const isZeroB = b1 === 0 && b2 === 0;\n let results: number[][] = [];\n\n if (isZeroA && isZeroB) {\n return [];\n } else if (isZeroA) {\n // b1 * y + c1 = 0\n // b2 * y + c2 = 0\n const y1 = -c1 / b1;\n const y2 = -c2 / b2;\n\n if (y1 !== y2) {\n return [];\n } else {\n return [\n [-Infinity, y1],\n [Infinity, y1],\n ];\n }\n } else if (isZeroB) {\n // a1 * x + c1 = 0\n // a2 * x + c2 = 0\n const x1 = -c1 / a1;\n const x2 = -c2 / a2;\n\n if (x1 !== x2) {\n return [];\n } else {\n return [\n [x1, -Infinity],\n [x1, Infinity],\n ];\n }\n } else if (a1 === 0) {\n // b1 * y + c1 = 0\n // y = - c1 / b1;\n // a2 * x + b2 * y + c2 = 0\n const y = -c1 / b1;\n const x = -(b2 * y + c2) / a2;\n\n results = [[x, y]];\n } else if (a2 === 0) {\n // b2 * y + c2 = 0\n // y = - c2 / b2;\n // a1 * x + b1 * y + c1 = 0\n const y = -c2 / b2;\n const x = -(b1 * y + c1) / a1;\n\n results = [[x, y]];\n } else if (b1 === 0) {\n // a1 * x + c1 = 0\n // x = - c1 / a1;\n // a2 * x + b2 * y + c2 = 0\n const x = - c1 / a1;\n const y = -(a2 * x + c2) / b2;\n\n results = [[x, y]];\n } else if (b2 === 0) {\n // a2 * x + c2 = 0\n // x = - c2 / a2;\n // a1 * x + b1 * y + c1 = 0\n const x = - c2 / a2;\n const y = -(a1 * x + c1) / b1;\n\n results = [[x, y]];\n } else {\n // a1 * x + b1 * y + c1 = 0\n // a2 * x + b2 * y + c2 = 0\n // b2 * a1 * x + b2 * b1 * y + b2 * c1 = 0\n // b1 * a2 * x + b1 * b2 * y + b1 * c2 = 0\n // (b2 * a1 - b1 * a2) * x = (b1 * c2 - b2 * c1)\n const x = (b1 * c2 - b2 * c1) / (b2 * a1 - b1 * a2);\n const y = -(a1 * x + c1) / b1;\n\n results = [[x, y]];\n }\n\n return results.map(result => [result[0], result[1]]);\n}\n/**\n * Get intersection points to the two lines.\n * @memberof OverlapArea\n */\nexport function getIntersectionPoints(\n line1: number[][],\n line2: number[][],\n isLimit?: boolean,\n): number[][] {\n const points = getIntersectionPointsByConstants(\n getLinearConstants(line1[0], line1[1]),\n getLinearConstants(line2[0], line2[1]),\n );\n\n if (isLimit) {\n return getPointsOnLines(points, [line1, line2]);\n }\n return points;\n}\n\nexport function isPointOnLine(\n pos: number[],\n line: number[][],\n) {\n const linearConstants = getLinearConstants(line[0], line[1]);\n\n return tinyThrottle(getDistanceFromPointToConstants(linearConstants, pos)) === 0;\n}\n\n/**\n * Get the points on the lines (between two points).\n * @memberof OverlapArea\n */\nexport function getPointsOnLines(\n points: number[][],\n lines: number[][][],\n): number[][] {\n const minMaxs = lines.map(line => [0, 1].map(order => [\n Math.min(line[0][order], line[1][order]),\n Math.max(line[0][order], line[1][order]),\n ]));\n let results: number[][] = [];\n\n if (points.length === 2) {\n const [x, y] = points[0];\n if (!tinyThrottle(x - points[1][0])) {\n /// Math.max(minY1, minY2)\n const top = Math.max(...minMaxs.map(minMax => minMax[1][0]));\n /// Math.min(maxY1, miax2)\n const bottom = Math.min(...minMaxs.map(minMax => minMax[1][1]));\n\n if (tinyThrottle(top - bottom) > 0) {\n return [];\n }\n results = [\n [x, top],\n [x, bottom],\n ];\n } else if (!tinyThrottle(y - points[1][1])) {\n /// Math.max(minY1, minY2)\n const left = Math.max(...minMaxs.map(minMax => minMax[0][0]));\n /// Math.min(maxY1, miax2)\n const right = Math.min(...minMaxs.map(minMax => minMax[0][1]));\n\n if (tinyThrottle(left - right) > 0) {\n return [];\n }\n results = [\n [left, y],\n [right, y],\n ];\n }\n }\n\n if (!results.length) {\n results = points.filter(point => {\n const [pointX, pointY] = point;\n\n return minMaxs.every(minMax => {\n return (0 <= tinyThrottle(pointX - minMax[0][0]) && 0 <= tinyThrottle(minMax[0][1] - pointX))\n && (0 <= tinyThrottle(pointY - minMax[1][0]) && 0 <= tinyThrottle(minMax[1][1] - pointY));\n });\n });\n }\n\n return results.map(result => [tinyThrottle(result[0]), tinyThrottle(result[1])]);\n\n}\n/**\n* Convert two points into lines.\n* @function\n* @memberof OverlapArea\n*/\nexport function convertLines(points: number[][]): number[][][] {\n return [...points.slice(1), points[0]].map((point, i) => [points[i], point]);\n}\n\nfunction getOverlapPointInfos(points1: number[][], points2: number[][]): OverlapPointInfo[] {\n const targetPoints1 = points1.slice();\n const targetPoints2 = points2.slice();\n\n if (getShapeDirection(targetPoints1) === -1) {\n targetPoints1.reverse();\n }\n if (getShapeDirection(targetPoints2) === -1) {\n targetPoints2.reverse();\n }\n const lines1 = convertLines(targetPoints1);\n const lines2 = convertLines(targetPoints2);\n const linearConstantsList1 = lines1.map(line1 => getLinearConstants(line1[0], line1[1]));\n const linearConstantsList2 = lines2.map(line2 => getLinearConstants(line2[0], line2[1]));\n\n const overlapInfos: OverlapPointInfo[] = [];\n\n linearConstantsList1.forEach((linearConstants1, i) => {\n const line1 = lines1[i];\n const linePointInfos: OverlapPointInfo[] = [];\n linearConstantsList2.forEach((linearConstants2, j) => {\n const intersectionPoints = getIntersectionPointsByConstants(linearConstants1, linearConstants2);\n const points = getPointsOnLines(intersectionPoints, [line1, lines2[j]]);\n\n linePointInfos.push(...points.map(pos => ({\n index1: i,\n index2: j,\n pos,\n type: \"intersection\" as const,\n })));\n });\n linePointInfos.sort((a, b) => {\n return getDist(line1[0], a.pos) - getDist(line1[0], b.pos);\n });\n\n overlapInfos.push(...linePointInfos);\n\n if (isInside(line1[1], targetPoints2)) {\n overlapInfos.push({\n index1: i,\n index2: -1,\n pos: line1[1],\n type: \"inside\" as const,\n });\n }\n });\n\n lines2.forEach((line2, i) => {\n if (!isInside(line2[1], targetPoints1)) {\n return;\n }\n let isNext = false;\n let index = findIndex(overlapInfos, ({ index2 }) => {\n if (index2 === i) {\n isNext = true;\n return false;\n }\n\n if (isNext) {\n return true;\n }\n return false;\n });\n if (index === -1) {\n isNext = false;\n index = findIndex(overlapInfos, ({ index1, index2 }) => {\n if (index1 === -1 && index2 + 1 === i) {\n isNext = true;\n return false;\n }\n\n if (isNext) {\n return true;\n }\n return false;\n });\n }\n if (index === -1) {\n overlapInfos.push({\n index1: -1,\n index2: i,\n pos: line2[1],\n type: \"inside\" as const,\n });\n } else {\n overlapInfos.splice(index, 0, {\n index1: -1,\n index2: i,\n pos: line2[1],\n type: \"inside\" as const,\n });\n\n }\n });\n const pointMap: Record = {};\n\n return overlapInfos.filter(({ pos }) => {\n const key = `${pos[0]}x${pos[1]}`;\n\n if (pointMap[key]) {\n return false;\n }\n pointMap[key] = true;\n return true;\n });\n}\n\n/**\n* Get the points of the overlapped part of two shapes.\n* @function\n* @memberof OverlapArea\n*/\nexport function getOverlapPoints(points1: number[][], points2: number[][]): number[][] {\n const infos = getOverlapPointInfos(points1, points2);\n\n return infos.map(({ pos }) => pos);\n}\n\nfunction isConnectedLine(line: OverlapPointInfo[]) {\n const {\n 0: {\n index1: prevIndex1,\n index2: prevIndex2,\n },\n 1: {\n index1: nextIndex1,\n index2: nextIndex2,\n }\n } = line;\n\n if (prevIndex1 !== -1) {\n // same line\n if (prevIndex1 === nextIndex1) {\n return true;\n }\n if (prevIndex1 + 1 === nextIndex1) {\n return true;\n }\n }\n if (prevIndex2 !== -1) {\n // same line\n if (prevIndex2 === nextIndex2) {\n return true;\n }\n if (prevIndex2 + 1 === nextIndex2) {\n return true;\n }\n }\n\n return false;\n\n}\n/**\n* Get the areas of the overlapped part of two shapes.\n* @function\n* @memberof OverlapArea\n*/\nexport function getOverlapAreas(points1: number[][], points2: number[][]): number[][][] {\n const infos = getOverlapPointInfos(points1, points2);\n const areas: OverlapPointInfo[][] = [];\n let area: OverlapPointInfo[];\n\n getOverlapPointInfos(points1, points2).forEach((info, i, arr) => {\n if (i === 0 || !isConnectedLine([arr[i - 1], info])) {\n area = [info];\n areas.push(area);\n } else {\n area.push(info);\n }\n });\n\n return areas.map(area => area.map(({ pos }) => pos));\n}\nfunction findReversedAreas(points1: number[][], points2: number[][], index: number = 0, areas: number[][][] = []): number[][][] {\n const isFirst = areas.length === 0;\n const length = points1.length;\n const nextIndex = points1[index] ? index : 0;\n const nextPoints1 = [...points1.slice(nextIndex), ...points1.slice(0, nextIndex)];\n\n for (let i = 0; i < length; ++i) {\n const point1 = nextPoints1[i];\n\n if (find(points2, point2 => point2[0] === point1[0] && point2[1] === point1[1])) {\n continue;\n }\n if (areas.some(nextArea => find(nextArea, areaPoint => areaPoint[0] === point1[0] && areaPoint[1] === point1[1]))) {\n if (isFirst) {\n continue;\n } else {\n break;\n }\n }\n let nextArea: number[][];\n\n if (isFirst) {\n nextArea = [];\n areas.push(nextArea);\n } else {\n nextArea = areas[areas.length - 1];\n }\n nextArea.push(point1);\n\n\n const line = [point1, points1[index + 1] || points1[0]];\n const nextPoint2 = points2.filter(point2 => {\n return isPointOnLine(point2, line);\n }).sort((a, b) => {\n return getDist(point1, a) - getDist(point1, b);\n })[0];\n\n if (!nextPoint2) {\n findReversedAreas(nextPoints1, points2, i + 1, areas);\n break;\n } else {\n const point2Index = points2.indexOf(nextPoint2);\n\n findReversedAreas(points2, points1, point2Index, areas);\n if (!isFirst) {\n break;\n }\n }\n }\n return areas;\n}\nexport function findConnectedAreas(points1: number[][], points2: number[][]) {\n return findReversedAreas(points1, [...points2].reverse());\n}\n/**\n* Get non-overlapping areas of two shapes based on points1.\n* @memberof OverlapArea\n*/\nexport function getUnoverlapAreas(points1: number[][], points2: number[][]): number[][][] {\n if (!points2.length) {\n return [[...points1]];\n }\n const overlapAreas = getOverlapAreas(points1, points2);\n let unoverlapAreas = [points1];\n\n overlapAreas.forEach(overlapArea => {\n const nextOverlapArea = [...overlapArea].reverse();\n\n unoverlapAreas = flat(unoverlapAreas.map(area => {\n const connectedAreas = findReversedAreas(area, nextOverlapArea);\n const firstConnectedArea = connectedAreas[0];\n\n if (connectedAreas.length === 1 && nextOverlapArea.every(point => firstConnectedArea.indexOf(point) === -1)) {\n const lastPoint = firstConnectedArea[firstConnectedArea.length - 1];\n const firstPoint = [...nextOverlapArea].sort((a, b) => {\n return getDist(lastPoint, a) - getDist(lastPoint, b);\n })[0];\n const firstIndex = nextOverlapArea.indexOf(firstPoint);\n\n firstConnectedArea.push(\n ...nextOverlapArea.slice(firstIndex),\n ...nextOverlapArea.slice(0, firstIndex),\n nextOverlapArea[firstIndex],\n lastPoint,\n );\n }\n return connectedAreas;\n }));\n });\n\n return unoverlapAreas;\n}\n/**\n* Gets the size of the overlapped part of two shapes.\n* @function\n* @memberof OverlapArea\n*/\nexport function getOverlapSize(points1: number[][], points2: number[][]): number {\n const points = getOverlapPoints(points1, points2);\n\n return getAreaSize(points);\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Client, Position } from \"./types\";\nimport { IArrayFormat, isNumber } from \"@daybrush/utils\";\n\nexport function getRad(pos1: number[], pos2: number[]) {\n const distX = pos2[0] - pos1[0];\n const distY = pos2[1] - pos1[1];\n const rad = Math.atan2(distY, distX);\n\n return rad >= 0 ? rad : rad + Math.PI * 2;\n}\n\nexport function getRotatiion(touches: Client[]) {\n return getRad([\n touches[0].clientX,\n touches[0].clientY,\n ], [\n touches[1].clientX,\n touches[1].clientY,\n ]) / Math.PI * 180;\n}\n\nexport function isMultiTouch(e: any): e is TouchEvent {\n return e.touches && e.touches.length >= 2;\n}\nexport function getEventClients(e: any): Client[] {\n if (!e) {\n return [];\n } if (e.touches) {\n return getClients(e.touches);\n } else {\n return [getClient(e)];\n }\n}\nexport function isMouseEvent(e: any): e is MouseEvent {\n return e && (e.type.indexOf(\"mouse\") > -1 || \"button\" in e);\n}\nexport function getPosition(clients: Client[], prevClients: Client[], startClients: Client[]): Position {\n const length = startClients.length;\n const {\n clientX,\n clientY,\n originalClientX,\n originalClientY,\n } = getAverageClient(clients, length);\n const {\n clientX: prevX,\n clientY: prevY,\n } = getAverageClient(prevClients, length);\n\n const {\n clientX: startX,\n clientY: startY,\n } = getAverageClient(startClients, length);\n const deltaX = clientX - prevX;\n const deltaY = clientY - prevY;\n const distX = clientX - startX;\n const distY = clientY - startY;\n\n return {\n clientX: originalClientX!,\n clientY: originalClientY!,\n deltaX,\n deltaY,\n distX,\n distY,\n };\n}\nexport function getDist(clients: Client[]) {\n return Math.sqrt(\n Math.pow(clients[0].clientX - clients[1].clientX, 2)\n + Math.pow(clients[0].clientY - clients[1].clientY, 2),\n );\n}\nexport function getClients(touches: IArrayFormat) {\n const length = Math.min(touches.length, 2);\n const clients = [];\n\n for (let i = 0; i < length; ++i) {\n clients.push(getClient(touches[i]));\n }\n return clients;\n}\nexport function getClient(e: MouseEvent | Touch): Client {\n return {\n clientX: e.clientX,\n clientY: e.clientY,\n };\n}\nexport function getAverageClient(clients: Client[], length = clients.length): Required {\n const sumClient: Required = {\n clientX: 0,\n clientY: 0,\n originalClientX: 0,\n originalClientY: 0,\n };\n const minLength = Math.min(clients.length, length);\n\n for (let i = 0; i < minLength; ++i) {\n const client = clients[i];\n\n sumClient.originalClientX += \"originalClientX\" in client ? client.originalClientX! : client.clientX;\n sumClient.originalClientY += \"originalClientY\" in client ? client.originalClientY! : client.clientY;\n sumClient.clientX += client.clientX;\n sumClient.clientY += client.clientY;\n }\n if (!length) {\n return sumClient;\n }\n return {\n clientX: sumClient.clientX / length,\n clientY: sumClient.clientY / length,\n originalClientX: sumClient.originalClientX / length,\n originalClientY: sumClient.originalClientY / length,\n };\n}\nexport function plueClient(client1: Client, client2: Client) {\n return {\n clientX: (client1.clientX + client2.clientX),\n clientY: (client1.clientY + client2.clientY),\n };\n}\n\nexport function minusClient(client1: Client, client2: Client) {\n return {\n clientX: (client1.clientX - client2.clientX),\n clientY: (client1.clientY - client2.clientY),\n };\n}\n","import { Client, Position } from \"./types\";\nimport { getPosition, getDist, getRotatiion, getAverageClient } from \"./utils\";\n\nexport class ClientStore {\n public prevClients: Client[] = [];\n public startClients: Client[] = [];\n public movement = 0;\n public length = 0;\n constructor(clients: Client[]) {\n this.startClients = clients;\n this.prevClients = clients;\n this.length = clients.length;\n }\n public getAngle(clients: Client[] = this.prevClients) {\n return getRotatiion(clients);\n }\n public getRotation(clients: Client[] = this.prevClients) {\n return getRotatiion(clients) - getRotatiion(this.startClients);\n }\n public getPosition(clients: Client[] = this.prevClients, isAdd?: boolean) {\n const position = getPosition(clients || this.prevClients, this.prevClients, this.startClients);\n\n const { deltaX, deltaY } = position;\n\n this.movement += Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n this.prevClients = clients;\n\n return position;\n }\n public getPositions(clients: Client[] = this.prevClients) {\n const prevClients = this.prevClients;\n const startClients = this.startClients;\n const minLength = Math.min(this.length, prevClients.length);\n const positions: Position[] = [];\n\n for (let i = 0; i < minLength; ++i) {\n positions[i] = getPosition([clients[i]], [prevClients[i]], [startClients[i]]);\n }\n\n return positions;\n }\n public getMovement(clients?: Client[]) {\n const movement = this.movement;\n\n if (!clients) {\n return movement;\n }\n const currentClient = getAverageClient(clients, this.length);\n const prevClient = getAverageClient(this.prevClients, this.length);\n const deltaX = currentClient.clientX - prevClient.clientX;\n const deltaY = currentClient.clientY - prevClient.clientY;\n\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY) + movement;\n }\n public getDistance(clients = this.prevClients) {\n return getDist(clients);\n }\n public getScale(clients = this.prevClients) {\n return getDist(clients) / getDist(this.startClients);\n }\n public move(deltaX: number, deltaY: number) {\n this.startClients.forEach(client => {\n client.clientX -= deltaX;\n client.clientY -= deltaY;\n });\n this.prevClients.forEach(client => {\n client.clientX -= deltaX;\n client.clientY -= deltaY;\n });\n }\n}\n","import { Client, OnDrag, GestoOptions, GestoEvents } from \"./types\";\nimport {\n getEventClients, isMouseEvent, isMultiTouch,\n} from \"./utils\";\nimport EventEmitter, { TargetParam } from \"@scena/event-emitter\";\nimport { addEvent, removeEvent, now, IObject, getWindow, isWindow } from \"@daybrush/utils\";\nimport { ClientStore } from \"./ClientStore\";\n\nconst INPUT_TAGNAMES = [\"textarea\", \"input\"];\n/**\n * You can set up drag, pinch events in any browser.\n */\nclass Gesto extends EventEmitter {\n public options: GestoOptions = {};\n\n private flag = false;\n private pinchFlag = false;\n private data: IObject = {};\n private isDrag = false;\n private isPinch = false;\n\n private clientStores: ClientStore[] = [];\n private targets: Array = [];\n private prevTime: number = 0;\n private doubleFlag: boolean = false;\n private _useMouse = false;\n private _useTouch = false;\n private _useDrag = false;\n private _dragFlag = false;\n private _isTrusted = false;\n private _isMouseEvent = false;\n private _isSecondaryButton = false;\n private _preventMouseEvent = false;\n private _prevInputEvent: any = null;\n private _isDragAPI = false;\n private _isIdle = true;\n private _preventMouseEventId = 0;\n private _window: WindowProxy = window;\n\n /**\n *\n */\n constructor(targets: Array | Element | Window, options: GestoOptions = {}) {\n super();\n const elements = [].concat(targets as any) as Array;\n const firstTarget = elements[0];\n\n this._window = isWindow(firstTarget) ? firstTarget : getWindow(firstTarget);\n this.options = {\n checkInput: false,\n container: firstTarget && !(\"document\" in firstTarget) ? getWindow(firstTarget) : firstTarget,\n preventRightClick: true,\n preventWheelClick: true,\n preventClickEventOnDragStart: false,\n preventClickEventOnDrag: false,\n preventClickEventByCondition: null,\n preventDefault: true,\n checkWindowBlur: false,\n keepDragging: false,\n pinchThreshold: 0,\n events: [\"touch\", \"mouse\"],\n ...options,\n };\n\n const { container, events, checkWindowBlur } = this.options;\n\n this._useDrag = events!.indexOf(\"drag\") > -1;\n this._useTouch = events!.indexOf(\"touch\") > -1;\n this._useMouse = events!.indexOf(\"mouse\") > -1;\n this.targets = elements;\n\n if (this._useDrag) {\n elements.forEach(el => {\n addEvent(el, \"dragstart\", this.onDragStart);\n });\n }\n if (this._useMouse) {\n elements.forEach(el => {\n addEvent(el, \"mousedown\", this.onDragStart);\n addEvent(el, \"mousemove\", this._passCallback);\n });\n addEvent(container!, \"contextmenu\", this._onContextMenu);\n }\n if (checkWindowBlur) {\n addEvent(getWindow(), \"blur\", this.onBlur);\n }\n if (this._useTouch) {\n const passive = {\n passive: false,\n };\n elements.forEach(el => {\n addEvent(el, \"touchstart\", this.onDragStart, passive);\n addEvent(el, \"touchmove\", this._passCallback, passive);\n });\n }\n }\n /**\n * Stop Gesto's drag events.\n */\n public stop() {\n this.isDrag = false;\n this.data = {};\n this.clientStores = [];\n this.pinchFlag = false;\n this.doubleFlag = false;\n this.prevTime = 0;\n this.flag = false;\n this._isIdle = true;\n\n this._allowClickEvent();\n this._dettachDragEvent();\n this._isDragAPI = false;\n }\n /**\n * The total moved distance\n */\n public getMovement(clients?: Client[]) {\n return this.getCurrentStore().getMovement(clients) + this.clientStores.slice(1).reduce((prev, cur) => {\n return prev + cur.movement;\n }, 0);\n }\n /**\n * Whether to drag\n */\n public isDragging(): boolean {\n return this.isDrag;\n }\n /**\n * Whether the operation of gesto is finished and is in idle state\n */\n public isIdle(): boolean {\n return this._isIdle;\n }\n /**\n * Whether to start drag\n */\n public isFlag(): boolean {\n return this.flag;\n }\n /**\n * Whether to start pinch\n */\n public isPinchFlag() {\n return this.pinchFlag;\n }\n /**\n * Whether to start double click\n */\n public isDoubleFlag() {\n return this.doubleFlag;\n }\n /**\n * Whether to pinch\n */\n public isPinching() {\n return this.isPinch;\n }\n\n /**\n * If a scroll event occurs, it is corrected by the scroll distance.\n */\n public scrollBy(deltaX: number, deltaY: number, e: any, isCallDrag: boolean = true) {\n if (!this.flag) {\n return;\n }\n this.clientStores[0].move(deltaX, deltaY);\n isCallDrag && this.onDrag(e, true);\n }\n /**\n * Create a virtual drag event.\n */\n public move([deltaX, deltaY]: number[], inputEvent: any): TargetParam {\n const store = this.getCurrentStore();\n const nextClients = store.prevClients;\n\n return this.moveClients(nextClients.map(({ clientX, clientY }) => {\n return {\n clientX: clientX + deltaX,\n clientY: clientY + deltaY,\n originalClientX: clientX,\n originalClientY: clientY,\n };\n }), inputEvent, true);\n }\n /**\n * The dragStart event is triggered by an external event.\n */\n public triggerDragStart(e: any) {\n this.onDragStart(e, false);\n }\n /**\n * Set the event data while dragging.\n */\n public setEventData(data: IObject) {\n const currentData = this.data;\n\n for (const name in data) {\n currentData[name] = data[name];\n }\n return this;\n }\n /**\n * Set the event data while dragging.\n * Use `setEventData`\n * @deprecated\n */\n public setEventDatas(data: IObject) {\n return this.setEventData(data);\n }\n /**\n * Get the current event state while dragging.\n */\n public getCurrentEvent(inputEvent: any = this._prevInputEvent) {\n return {\n data: this.data,\n datas: this.data,\n ...this._getPosition(),\n movement: this.getMovement(),\n isDrag: this.isDrag,\n isPinch: this.isPinch,\n isScroll: false,\n inputEvent,\n };\n }\n /**\n * Get & Set the event data while dragging.\n */\n public getEventData() {\n return this.data;\n }\n /**\n * Get & Set the event data while dragging.\n * Use getEventData method\n * @depreacated\n */\n public getEventDatas() {\n return this.data;\n }\n /**\n * Unset Gesto\n */\n public unset() {\n const targets = this.targets;\n const container = this.options.container!;\n\n this.off();\n removeEvent(this._window, \"blur\", this.onBlur);\n\n if (this._useDrag) {\n targets.forEach(el => {\n removeEvent(el, \"dragstart\", this.onDragStart);\n });\n }\n if (this._useMouse) {\n targets.forEach(target => {\n removeEvent(target, \"mousedown\", this.onDragStart);\n });\n removeEvent(container, \"contextmenu\", this._onContextMenu);\n }\n if (this._useTouch) {\n targets.forEach(target => {\n removeEvent(target, \"touchstart\", this.onDragStart);\n });\n removeEvent(container, \"touchstart\", this.onDragStart);\n }\n this._prevInputEvent = null;\n this._allowClickEvent();\n this._dettachDragEvent();\n }\n public onDragStart = (e: any, isTrusted = true) => {\n if (!this.flag && e.cancelable === false) {\n return;\n }\n const isDragAPI = e.type.indexOf(\"drag\") >= -1;\n\n if (this.flag && isDragAPI) {\n return;\n }\n\n this._isDragAPI = true;\n const {\n container,\n pinchOutside,\n preventWheelClick,\n preventRightClick,\n preventDefault,\n checkInput,\n dragFocusedInput,\n preventClickEventOnDragStart,\n preventClickEventOnDrag,\n preventClickEventByCondition,\n } = this.options;\n const useTouch = this._useTouch;\n const isDragStart = !this.flag;\n\n this._isSecondaryButton = e.which === 3 || e.button === 2;\n\n if (\n (preventWheelClick && (e.which === 2 || e.button === 1))\n || (preventRightClick && (e.which === 3 || e.button === 2))\n ) {\n this.stop();\n return false;\n }\n\n if (isDragStart) {\n const activeElement = this._window.document.activeElement as HTMLElement;\n const target = e.target as HTMLElement;\n\n if (target) {\n const tagName = target.tagName.toLowerCase();\n const hasInput = INPUT_TAGNAMES.indexOf(tagName) > -1;\n const hasContentEditable = target.isContentEditable;\n\n if (hasInput || hasContentEditable) {\n if (checkInput || (!dragFocusedInput && activeElement === target)) {\n // force false or already focused.\n return false;\n }\n // no focus\n if (activeElement && (\n activeElement === target\n || (hasContentEditable && activeElement.isContentEditable && activeElement.contains(target))\n )) {\n if (dragFocusedInput) {\n target.blur();\n } else {\n return false;\n }\n }\n } else if ((preventDefault || e.type === \"touchstart\") && activeElement) {\n const activeTagName = activeElement.tagName.toLowerCase();\n\n if (activeElement.isContentEditable || INPUT_TAGNAMES.indexOf(activeTagName) > -1) {\n activeElement.blur();\n }\n }\n\n if (preventClickEventOnDragStart || preventClickEventOnDrag || preventClickEventByCondition) {\n addEvent(this._window, \"click\", this._onClick, true);\n }\n }\n this.clientStores = [new ClientStore(getEventClients(e))];\n this._isIdle = false;\n this.flag = true;\n this.isDrag = false;\n this._isTrusted = isTrusted;\n this._dragFlag = true;\n this._prevInputEvent = e;\n this.data = {};\n\n this.doubleFlag = now() - this.prevTime < 200;\n this._isMouseEvent = isMouseEvent(e);\n if (!this._isMouseEvent && this._preventMouseEvent) {\n this._allowMouseEvent();\n }\n\n const result = this._preventMouseEvent || this.emit(\"dragStart\", {\n data: this.data,\n datas: this.data,\n inputEvent: e,\n isMouseEvent: this._isMouseEvent,\n isSecondaryButton: this._isSecondaryButton,\n isTrusted,\n isDouble: this.doubleFlag,\n ...this.getCurrentStore().getPosition(),\n preventDefault() {\n e.preventDefault();\n },\n preventDrag: () => {\n this._dragFlag = false;\n },\n });\n if (result === false) {\n this.stop();\n }\n if (this._isMouseEvent && this.flag && preventDefault) {\n e.preventDefault();\n }\n }\n if (!this.flag) {\n return false;\n }\n let timer = 0;\n\n if (isDragStart) {\n this._attchDragEvent();\n\n // wait pinch\n if (useTouch && pinchOutside) {\n timer = setTimeout(() => {\n addEvent(container!, \"touchstart\", this.onDragStart, {\n passive: false\n });\n });\n }\n } else if (useTouch && pinchOutside) {\n // pinch is occured\n removeEvent(container!, \"touchstart\", this.onDragStart);\n }\n if (this.flag && isMultiTouch(e)) {\n clearTimeout(timer);\n if (isDragStart && (e.touches.length !== e.changedTouches.length)) {\n return;\n }\n if (!this.pinchFlag) {\n this.onPinchStart(e);\n }\n }\n\n }\n public onDrag = (e: any, isScroll?: boolean) => {\n if (!this.flag) {\n return;\n }\n const {\n preventDefault,\n } = this.options;\n if (!this._isMouseEvent && preventDefault) {\n e.preventDefault();\n }\n this._prevInputEvent = e;\n const clients = getEventClients(e);\n const result = this.moveClients(clients, e, false);\n\n if (this._dragFlag) {\n if (this.pinchFlag || result.deltaX || result.deltaY) {\n const dragResult = this._preventMouseEvent || this.emit(\"drag\", {\n ...result,\n isScroll: !!isScroll,\n inputEvent: e,\n });\n\n if (dragResult === false) {\n this.stop();\n return;\n }\n }\n if (this.pinchFlag) {\n this.onPinch(e, clients);\n }\n }\n\n this.getCurrentStore().getPosition(clients, true);\n }\n public onDragEnd = (e?: any) => {\n if (!this.flag) {\n return;\n }\n const {\n pinchOutside,\n container,\n preventClickEventOnDrag,\n preventClickEventOnDragStart,\n preventClickEventByCondition,\n } = this.options;\n const isDrag = this.isDrag;\n\n if (preventClickEventOnDrag || preventClickEventOnDragStart || preventClickEventByCondition) {\n requestAnimationFrame(() => {\n this._allowClickEvent();\n });\n }\n if (!preventClickEventByCondition && !preventClickEventOnDragStart && preventClickEventOnDrag && !isDrag) {\n this._allowClickEvent();\n }\n\n if (this._useTouch && pinchOutside) {\n removeEvent(container!, \"touchstart\", this.onDragStart);\n }\n if (this.pinchFlag) {\n this.onPinchEnd(e);\n }\n const clients = e?.touches ? getEventClients(e) : [];\n const clientsLength = clients.length;\n\n if (clientsLength === 0 || !this.options.keepDragging) {\n this.flag = false;\n } else {\n this._addStore(new ClientStore(clients));\n }\n\n\n const position = this._getPosition();\n const currentTime = now();\n const isDouble = !isDrag && this.doubleFlag;\n\n this._prevInputEvent = null;\n this.prevTime = isDrag || isDouble ? 0 : currentTime;\n\n if (!this.flag) {\n this._dettachDragEvent();\n\n this._preventMouseEvent || this.emit(\"dragEnd\", {\n data: this.data,\n datas: this.data,\n isDouble,\n isDrag: isDrag,\n isClick: !isDrag,\n isMouseEvent: this._isMouseEvent,\n isSecondaryButton: this._isSecondaryButton,\n inputEvent: e,\n isTrusted: this._isTrusted,\n ...position,\n });\n\n this.clientStores = [];\n\n if (!this._isMouseEvent) {\n this._preventMouseEvent = true;\n\n // Prevent the problem of touch event and mouse event occurring simultaneously\n clearTimeout(this._preventMouseEventId);\n this._preventMouseEventId = setTimeout(() => {\n this._preventMouseEvent = false;\n }, 200);\n }\n this._isIdle = true;\n }\n }\n public onPinchStart(e: TouchEvent) {\n const { pinchThreshold } = this.options;\n\n if (this.isDrag && this.getMovement() > pinchThreshold!) {\n return;\n }\n const store = new ClientStore(getEventClients(e));\n\n this.pinchFlag = true;\n this._addStore(store);\n\n const result = this.emit(\"pinchStart\", {\n data: this.data,\n datas: this.data,\n angle: store.getAngle(),\n touches: this.getCurrentStore().getPositions(),\n ...store.getPosition(),\n inputEvent: e,\n isTrusted: this._isTrusted,\n preventDefault() {\n e.preventDefault();\n },\n preventDrag: () => {\n this._dragFlag = false;\n },\n });\n\n if (result === false) {\n this.pinchFlag = false;\n }\n }\n public onPinch(e: TouchEvent, clients: Client[]) {\n if (!this.flag || !this.pinchFlag || clients.length < 2) {\n return;\n }\n\n const store = this.getCurrentStore();\n this.isPinch = true;\n\n this.emit(\"pinch\", {\n data: this.data,\n datas: this.data,\n movement: this.getMovement(clients),\n angle: store.getAngle(clients),\n rotation: store.getRotation(clients),\n touches: store.getPositions(clients),\n scale: store.getScale(clients),\n distance: store.getDistance(clients),\n ...store.getPosition(clients),\n inputEvent: e,\n isTrusted: this._isTrusted,\n });\n }\n public onPinchEnd(e: TouchEvent) {\n if (!this.pinchFlag) {\n return;\n }\n const isPinch = this.isPinch;\n\n this.isPinch = false;\n this.pinchFlag = false;\n const store = this.getCurrentStore();\n this.emit(\"pinchEnd\", {\n data: this.data,\n datas: this.data,\n isPinch,\n touches: store.getPositions(),\n ...store.getPosition(),\n inputEvent: e,\n });\n }\n private getCurrentStore() {\n return this.clientStores[0];\n }\n private moveClients(clients: Client[], inputEvent: any, isAdd: boolean): TargetParam {\n const position = this._getPosition(clients, isAdd);\n\n const isPrevDrag = this.isDrag;\n\n if (position.deltaX || position.deltaY) {\n this.isDrag = true;\n }\n let isFirstDrag = false;\n\n if (!isPrevDrag && this.isDrag) {\n isFirstDrag = true;\n }\n\n return {\n data: this.data,\n datas: this.data,\n ...position,\n movement: this.getMovement(clients),\n isDrag: this.isDrag,\n isPinch: this.isPinch,\n isScroll: false,\n isMouseEvent: this._isMouseEvent,\n isSecondaryButton: this._isSecondaryButton,\n inputEvent,\n isTrusted: this._isTrusted,\n isFirstDrag,\n };\n }\n private onBlur = () => {\n this.onDragEnd();\n }\n private _addStore(store: ClientStore) {\n this.clientStores.splice(0, 0, store);\n }\n private _getPosition(clients?: Client[], isAdd?: boolean) {\n const store = this.getCurrentStore();\n const position = store.getPosition(clients, isAdd);\n\n const { distX, distY } = this.clientStores.slice(1).reduce((prev, cur) => {\n const storePosition = cur.getPosition();\n\n prev.distX += storePosition.distX;\n prev.distY += storePosition.distY;\n return prev;\n }, position);\n\n return {\n ...position,\n distX,\n distY,\n };\n }\n private _allowClickEvent = () => {\n removeEvent(this._window, \"click\", this._onClick, true);\n };\n private _attchDragEvent() {\n const win = this._window;\n const container = this.options.container!;\n const passive = {\n passive: false\n };\n\n if (this._isDragAPI) {\n addEvent(container, \"dragover\", this.onDrag, passive);\n addEvent(win, \"dragend\", this.onDragEnd);\n }\n if (this._useMouse) {\n addEvent(container, \"mousemove\", this.onDrag);\n addEvent(win, \"mouseup\", this.onDragEnd);\n }\n\n if (this._useTouch) {\n addEvent(container, \"touchmove\", this.onDrag, passive);\n addEvent(win, \"touchend\", this.onDragEnd, passive);\n addEvent(win, \"touchcancel\", this.onDragEnd, passive);\n }\n };\n private _dettachDragEvent() {\n const win = this._window;\n const container = this.options.container!;\n\n if (this._isDragAPI) {\n removeEvent(container, \"dragover\", this.onDrag);\n removeEvent(win, \"dragend\", this.onDragEnd);\n }\n if (this._useMouse) {\n removeEvent(container, \"mousemove\", this.onDrag);\n removeEvent(win, \"mouseup\", this.onDragEnd);\n }\n\n if (this._useTouch) {\n removeEvent(container, \"touchstart\", this.onDragStart);\n removeEvent(container, \"touchmove\", this.onDrag);\n removeEvent(win, \"touchend\", this.onDragEnd);\n removeEvent(win, \"touchcancel\", this.onDragEnd);\n }\n };\n private _onClick = (e: MouseEvent) => {\n this._allowClickEvent();\n this._allowMouseEvent();\n\n const preventClickEventByCondition = this.options.preventClickEventByCondition;\n if (preventClickEventByCondition?.(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n private _onContextMenu = (e: MouseEvent) => {\n const options = this.options;\n if (!options.preventRightClick) {\n e.preventDefault();\n } else {\n this.onDragEnd(e);\n }\n }\n private _allowMouseEvent() {\n this._preventMouseEvent = false;\n clearTimeout(this._preventMouseEventId);\n }\n private _passCallback = () => { };\n}\n\nexport default Gesto;\n","import stringHash from \"string-hash\";\nimport { getDocument, splitComma } from \"@daybrush/utils\";\nimport { InjectOptions } from \"./types\";\n\nexport function getHash(str: string) {\n return stringHash(str).toString(36);\n}\nexport function getShadowRoot(parentElement: HTMLElement | SVGElement) {\n if (parentElement && parentElement.getRootNode) {\n const rootNode = parentElement.getRootNode();\n\n if (rootNode.nodeType === 11) {\n return rootNode as ShadowRoot;\n }\n }\n return;\n}\nexport function replaceStyle(className: string, css: string, options: Partial) {\n if (options.original) {\n return css;\n }\n return css.replace(/([^};{\\s}][^};{]*|^\\s*){/mg, (_, selector) => {\n const trimmedSelector = selector.trim();\n return (trimmedSelector ? splitComma(trimmedSelector) : [\"\"]).map(subSelector => {\n const trimmedSubSelector = subSelector.trim();\n if (trimmedSubSelector.indexOf(\"@\") === 0) {\n return trimmedSubSelector;\n } else if (trimmedSubSelector.indexOf(\":global\") > -1) {\n return trimmedSubSelector.replace(/\\:global/g, \"\");\n } else if (trimmedSubSelector.indexOf(\":host\") > -1) {\n return `${trimmedSubSelector.replace(/\\:host/g, `.${className}`)}`;\n } else if (trimmedSubSelector) {\n return `.${className} ${trimmedSubSelector}`;\n } else {\n return `.${className}`;\n }\n }).join(\", \") + \" {\";\n });\n}\nexport function injectStyle(className: string, css: string, options: Partial, el: Node, shadowRoot?: Node) {\n const doc = getDocument(el);\n const style = doc.createElement(\"style\");\n\n style.setAttribute(\"type\", \"text/css\");\n style.setAttribute(\"data-styled-id\", className);\n style.setAttribute(\"data-styled-count\", \"1\");\n\n if (options.nonce) {\n style.setAttribute(\"nonce\", options.nonce);\n }\n style.innerHTML = replaceStyle(className, css, options);\n\n (shadowRoot || doc.head || doc.body).appendChild(style);\n return style;\n}\n","import { getHash, injectStyle, getShadowRoot } from \"./utils\";\nimport { StyledInjector, InjectOptions } from \"./types\";\n\n/**\n * Create an styled object that can be defined and inserted into the css.\n * @param - css styles\n */\nfunction styled(css: string): StyledInjector {\n const injectClassName = \"rCS\" + getHash(css);\n\n return {\n className: injectClassName,\n inject(el: HTMLElement | SVGElement, options: Partial = {}) {\n const shadowRoot = getShadowRoot(el);\n let styleElement = (shadowRoot || el.ownerDocument || document).querySelector(`style[data-styled-id=\"${injectClassName}\"]`);\n\n if (!styleElement) {\n styleElement = injectStyle(injectClassName, css, options, el, shadowRoot);\n } else {\n const count = parseFloat(styleElement.getAttribute(\"data-styled-count\")) || 0;\n styleElement.setAttribute(\"data-styled-count\", `${count + 1}`);\n }\n return {\n destroy() {\n const injectCount = parseFloat(styleElement.getAttribute(\"data-styled-count\")) || 0;\n\n if (injectCount <= 1) {\n if (styleElement.remove) {\n styleElement.remove();\n } else {\n styleElement.parentNode?.removeChild(styleElement);\n }\n styleElement = null;\n } else {\n styleElement.setAttribute(\"data-styled-count\", `${injectCount - 1}`);\n }\n },\n };\n },\n };\n}\n\nexport * from \"./types\";\nexport default styled;\n","import cssStyled from \"css-styled\";\nimport {\n createElement, forwardRef,\n ForwardRefExoticComponent,\n PropsWithoutRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { StyledElement } from \"./StyledElement\";\n\nexport default function defaultStyled(\n tag: string, css: string): typeof StyledElement & (new (...args: any[]) => StyledElement) {\n const injector = cssStyled(css);\n\n return class Styled extends StyledElement {\n public injector = injector;\n public tag = tag;\n };\n}\n\n\nexport function styled<\n Target extends HTMLElement | SVGElement = HTMLElement,\n Props extends Record = Record,\n>(\n Tag: string,\n css: string\n): ForwardRefExoticComponent & React.RefAttributes> {\n const injector = cssStyled(css);\n const cssId = injector!.className;\n\n return forwardRef((props, ref) => {\n const {\n className = \"\",\n cspNonce,\n ...attributes\n } = props;\n const targetRef = useRef();\n\n useImperativeHandle(ref, () => targetRef.current!, []);\n useEffect(() => {\n const injectResult = injector.inject(targetRef.current!, {\n nonce: props.cspNonce,\n });\n\n return () => {\n injectResult.destroy();\n };\n }, []);\n return createElement(Tag, {\n \"ref\": targetRef,\n \"data-styled-id\": cssId,\n \"className\": `${className} ${cssId}`,\n ...attributes,\n });\n });\n}\n","import { Able } from \"../types\";\n\nexport function makeAble<\n Name extends string,\n AbleObject extends Partial>,\n>(name: Name, able: AbleObject) {\n return {\n events: [] as AbleObject[\"events\"] extends readonly any[] ? AbleObject[\"events\"] : readonly [],\n props: [] as AbleObject[\"props\"] extends readonly any[] ? AbleObject[\"props\"] : readonly [],\n name,\n ...able,\n } as const;\n}\n","import getAgent from \"@egjs/agent\";\nimport { IObject } from \"@daybrush/utils\";\nimport { MoveableInterface } from \"./types\";\n\n\nexport const DIRECTIONS4 = [\"n\", \"w\", \"s\", \"e\"];\nexport const DIRECTIONS = [\"n\", \"w\", \"s\", \"e\", \"nw\", \"ne\", \"sw\", \"se\"];\n\n\nfunction getSVGCursor(scale: number, degree: number) {\n return `data:image/svg+xml;utf8,`;\n}\nfunction getCursorCSS(degree: number) {\n const x1 = getSVGCursor(1, degree);\n // const x2 = getSVGCursor(2, degree);\n const degree45 = (Math.round(degree / 45) * 45) % 180;\n let defaultCursor = \"ns-resize\";\n\n if (degree45 === 135) {\n defaultCursor = \"nwse-resize\";\n } else if (degree45 === 45) {\n defaultCursor = \"nesw-resize\";\n } else if (degree45 === 90) {\n defaultCursor = \"ew-resize\";\n }\n\n // tslint:disable-next-line: max-line-length\n return `cursor:${defaultCursor};cursor: url('${x1}') 16 16, ${defaultCursor};`;\n}\n\nexport const agent = getAgent();\nexport const IS_WEBKIT = agent.browser.webkit;\nexport const IS_WEBKIT605 = IS_WEBKIT && (() => {\n const navi = typeof window === \"undefined\" ? { userAgent: \"\" } : window.navigator;\n const res = /applewebkit\\/([^\\s]+)/g.exec(navi.userAgent.toLowerCase());\n\n return res ? parseFloat(res[1]) < 605 : false;\n})();\n\nconst browserName = agent.browser.name;\nconst browserVersion = parseInt(agent.browser.version, 10);\nconst IS_CHROME = browserName === \"chrome\";\nconst IS_CHROMIUM = agent.browser.chromium;\nconst chromiumVersion = parseInt(agent.browser.chromiumVersion, 10) || 0;\n\nexport const IS_CHROMIUM109 = (IS_CHROME && browserVersion >= 109)\n || (IS_CHROMIUM && chromiumVersion >= 109);\nexport const IS_FIREFOX = browserName === \"firefox\";\nexport const IS_SAFARI_ABOVE15\n = parseInt(agent.browser.webkitVersion, 10) >= 612\n || browserVersion >= 15;\n\nexport const PREFIX = \"moveable-\";\n\n\nconst directionCSS = DIRECTIONS.map(dir => {\n let top = \"\";\n let left = \"\";\n let originX = \"center\";\n let originY = \"center\";\n const offset = `calc(var(--moveable-control-padding, 20) * -1px)`;\n\n if (dir.indexOf(\"n\") > -1) {\n top = `top: ${offset};`;\n originY = `bottom`;\n }\n if (dir.indexOf(`s`) > -1) {\n top = `top: 0px;`;\n originY = `top`;\n }\n if (dir.indexOf(`w`) > -1) {\n left = `left: ${offset};`;\n originX = `right`;\n }\n if (dir.indexOf(`e`) > -1) {\n left = `left: 0px;`;\n originX = `left`;\n }\n return `.around-control[data-direction*=\"${dir}\"] {\n ${left}${top}\n transform-origin: ${originX} ${originY};\n }`;\n}).join(\"\\n\");\n\nexport const MOVEABLE_CSS = `\n{\nposition: absolute;\nwidth: 1px;\nheight: 1px;\nleft: 0;\ntop: 0;\nz-index: 3000;\n--moveable-color: #4af;\n--zoom: 1;\n--zoompx: 1px;\n--moveable-line-padding: 0;\n--moveable-control-padding: 0;\nwill-change: transform;\noutline: 1px solid transparent;\n}\n.control-box {\nz-index: 0;\n}\n.line, .control {\nposition: absolute;\nleft: 0;\ntop: 0;\nwill-change: transform;\n}\n.control {\nwidth: 14px;\nheight: 14px;\nborder-radius: 50%;\nborder: 2px solid #fff;\nbox-sizing: border-box;\nbackground: #4af;\nbackground: var(--moveable-color);\nmargin-top: -7px;\nmargin-left: -7px;\nborder: 2px solid #fff;\nz-index: 10;\n}\n.around-control {\nposition: absolute;\nwill-change: transform;\nwidth: calc(var(--moveable-control-padding, 20) * 1px);\nheight: calc(var(--moveable-control-padding, 20) * 1px);\nleft: calc(var(--moveable-control-padding, 20) * -0.5px);\ntop: calc(var(--moveable-control-padding, 20) * -0.5px);\nbox-sizing: border-box;\nbackground: transparent;\nz-index: 8;\ncursor: alias;\ntransform-origin: center center;\n}\n${directionCSS}\n.padding {\nposition: absolute;\ntop: 0px;\nleft: 0px;\nwidth: 100px;\nheight: 100px;\ntransform-origin: 0 0;\n}\n.line {\nwidth: 1px;\nheight: 1px;\nbackground: #4af;\nbackground: var(--moveable-color);\ntransform-origin: 0px 50%;\n}\n.line.edge {\nz-index: 1;\nbackground: transparent;\n}\n.line.dashed {\nbox-sizing: border-box;\nbackground: transparent;\n}\n.line.dashed.horizontal {\nborder-top: 1px dashed #4af;\nborder-top-color: #4af;\nborder-top-color: var(--moveable-color);\n}\n.line.dashed.vertical {\nborder-left: 1px dashed #4af;\nborder-left-color: #4af;\nborder-left-color: var(--moveable-color);\n}\n.line.vertical {\ntransform: translateX(-50%);\n}\n.line.horizontal {\ntransform: translateY(-50%);\n}\n.line.vertical.bold {\nwidth: 2px;\n}\n.line.horizontal.bold {\nheight: 2px;\n}\n\n.control.origin {\nborder-color: #f55;\nbackground: #fff;\nwidth: 12px;\nheight: 12px;\nmargin-top: -6px;\nmargin-left: -6px;\npointer-events: none;\n}\n${[0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165].map(degree => `\n.direction[data-rotation=\"${degree}\"], :global .view-control-rotation${degree} {\n${getCursorCSS(degree)}\n}\n`).join(\"\\n\")}\n\n.line.direction:before {\ncontent: \"\";\nposition: absolute;\nwidth: 100%;\nheight: calc(var(--moveable-line-padding, 0) * 1px);\nbottom: 0;\nleft: 0;\n}\n.group {\nz-index: -1;\n}\n.area {\nposition: absolute;\n}\n.area-pieces {\nposition: absolute;\ntop: 0;\nleft: 0;\ndisplay: none;\n}\n.area.avoid, .area.pass {\npointer-events: none;\n}\n.area.avoid+.area-pieces {\ndisplay: block;\n}\n.area-piece {\nposition: absolute;\n}\n\n${IS_WEBKIT605 ? `:global svg *:before {\ncontent:\"\";\ntransform-origin: inherit;\n}` : \"\"}\n`;\n\nexport const NEARBY_POS = [\n [0, 1, 2],\n [1, 0, 3],\n [2, 0, 3],\n [3, 1, 2],\n];\n\nexport const FLOAT_POINT_NUM = 0.0001;\nexport const TINY_NUM = 0.0000001;\nexport const MIN_SCALE = 0.000000001;\nexport const MAX_NUM = Math.pow(10, 10);\nexport const MIN_NUM = -MAX_NUM;\n\nexport const DIRECTION_REGION_TO_DIRECTION: Record = {\n n: [0, -1],\n e: [1, 0],\n s: [0, 1],\n w: [-1, 0],\n nw: [-1, -1],\n ne: [1, -1],\n sw: [-1, 1],\n se: [1, 1],\n};\n\nexport const DIRECTION_INDEXES: IObject = {\n n: [0, 1],\n e: [1, 3],\n s: [3, 2],\n w: [2, 0],\n nw: [0],\n ne: [1],\n sw: [2],\n se: [3],\n};\nexport const DIRECTION_ROTATIONS: IObject = {\n n: 0,\n s: 180,\n w: 270,\n e: 90,\n nw: 315,\n ne: 45,\n sw: 225,\n se: 135,\n};\n\nexport const MOVEABLE_METHODS: Array = [\n \"isMoveableElement\",\n \"updateRect\",\n \"updateTarget\",\n \"destroy\",\n \"dragStart\",\n \"isInside\",\n \"hitTest\",\n \"setState\",\n \"getRect\",\n \"request\",\n \"isDragging\",\n \"getManager\",\n \"forceUpdate\",\n \"waitToChangeTarget\",\n \"updateSelectors\",\n \"getTargets\",\n \"stopDrag\",\n \"getControlBoxElement\",\n \"getMoveables\",\n \"getDragElement\",\n];\n","import { MoveableManagerState, OnCustomDrag } from \"../types\";\nimport { convertDragDist } from \"../utils\";\n\nexport function setCustomDrag(\n e: any,\n state: MoveableManagerState,\n delta: number[],\n isPinch: boolean,\n isConvert: boolean,\n ableName = \"draggable\",\n) {\n const result = state.gestos[ableName]?.move(delta, e.inputEvent) ?? {};\n const datas = result.originalDatas || result.datas;\n const ableDatas = datas[ableName] || (datas[ableName] = {});\n\n return {\n ...(isConvert ? convertDragDist(state, result) : result),\n isPinch: !!isPinch,\n parentEvent: true,\n datas: ableDatas,\n originalDatas: e.originalDatas,\n };\n}\n\nexport default class CustomGesto {\n private prevX = 0;\n private prevY = 0;\n private startX = 0;\n private startY = 0;\n private isDrag = false;\n private isFlag = false;\n private datas: any = {\n draggable: {},\n };\n constructor(private ableName = \"draggable\") {\n this.datas = {\n [ableName]: {},\n };\n }\n\n public dragStart(client: number[], e: any) {\n this.isDrag = false;\n this.isFlag = false;\n const originalDatas = e.originalDatas;\n\n this.datas = originalDatas;\n if (!originalDatas[this.ableName]) {\n originalDatas[this.ableName] = {};\n }\n return {\n ...this.move(client, e.inputEvent),\n type: \"dragstart\",\n };\n }\n public drag(client: number[], inputEvent: any) {\n return this.move([\n client[0] - this.prevX,\n client[1] - this.prevY,\n ], inputEvent);\n }\n public move(delta: number[], inputEvent: any): OnCustomDrag {\n let clientX!: number;\n let clientY!: number;\n let isFirstDrag = false;\n\n if (!this.isFlag) {\n this.prevX = delta[0];\n this.prevY = delta[1];\n this.startX = delta[0];\n this.startY = delta[1];\n\n clientX = delta[0];\n clientY = delta[1];\n\n this.isFlag = true;\n } else {\n const isPrevDrag = this.isDrag;\n\n clientX = this.prevX + delta[0];\n clientY = this.prevY + delta[1];\n\n if (delta[0] || delta[1]) {\n this.isDrag = true;\n }\n\n if (!isPrevDrag && this.isDrag) {\n isFirstDrag = true;\n }\n }\n\n this.prevX = clientX;\n this.prevY = clientY;\n\n return {\n type: \"drag\",\n clientX,\n clientY,\n inputEvent,\n isFirstDrag,\n isDrag: this.isDrag,\n distX: clientX - this.startX,\n distY: clientY - this.startY,\n deltaX: delta[0],\n deltaY: delta[1],\n datas: this.datas[this.ableName],\n originalDatas: this.datas,\n parentEvent: true,\n parentGesto: this,\n };\n }\n}\n","import { MoveablePosition } from \"../types\";\nimport { calculatePoses, calculatePosition, sign } from \"../utils\";\n\nexport function calculateElementPosition(\n matrix: number[],\n origin: number[],\n width: number,\n height: number,\n): MoveablePosition {\n const is3d = matrix.length === 16;\n const n = is3d ? 4 : 3;\n const poses = calculatePoses(matrix, width, height, n);\n let [\n [x1, y1],\n [x2, y2],\n [x3, y3],\n [x4, y4],\n ] = poses;\n let [originX, originY] = calculatePosition(matrix, origin, n);\n\n const left = Math.min(x1, x2, x3, x4);\n const top = Math.min(y1, y2, y3, y4);\n const right = Math.max(x1, x2, x3, x4);\n const bottom = Math.max(y1, y2, y3, y4);\n\n x1 = (x1 - left) || 0;\n x2 = (x2 - left) || 0;\n x3 = (x3 - left) || 0;\n x4 = (x4 - left) || 0;\n\n y1 = (y1 - top) || 0;\n y2 = (y2 - top) || 0;\n y3 = (y3 - top) || 0;\n y4 = (y4 - top) || 0;\n\n originX = (originX - left) || 0;\n originY = (originY - top) || 0;\n\n\n const sx = matrix[0];\n const sy = matrix[n + 1];\n const direction = sign(sx * sy);\n\n return {\n left,\n top,\n right,\n bottom,\n origin: [originX, originY],\n pos1: [x1, y1],\n pos2: [x2, y2],\n pos3: [x3, y3],\n pos4: [x4, y4],\n direction,\n };\n}\n","\nimport {\n invert, calculate, minus, plus,\n convertPositionMatrix,\n createScaleMatrix, multiply, fromTranslation, convertDimension,\n} from \"@scena/matrix\";\nimport {\n calculatePoses, getAbsoluteMatrix, getAbsolutePosesByState,\n calculatePosition, calculateInversePosition, convertTransformInfo, fillCSSObject,\n} from \"../utils\";\nimport { splitUnit, isArray, splitSpace, findIndex, dot, find, isString } from \"@daybrush/utils\";\nimport {\n MoveableManagerState, ResizableProps, MoveableManagerInterface,\n OnTransformEvent, OnTransformStartEvent, DraggableProps, OnDrag,\n} from \"../types\";\nimport { setCustomDrag } from \"./CustomGesto\";\nimport { parse, parseMat } from \"css-to-mat\";\nimport { Draggable } from \"../index.esm\";\nimport { calculateElementPosition } from \"../utils/calculateElementPosition\";\n\nexport function calculatePointerDist(moveable: MoveableManagerInterface, e: any) {\n const { clientX, clientY, datas } = e;\n const {\n moveableClientRect,\n rootMatrix,\n is3d,\n pos1,\n } = moveable.state;\n const { left, top } = moveableClientRect;\n const n = is3d ? 4 : 3;\n const [posX, posY] = minus(calculateInversePosition(rootMatrix, [clientX - left, clientY - top], n), pos1);\n const [distX, distY] = getDragDist({ datas, distX: posX, distY: posY });\n\n return [distX, distY];\n}\n\nexport function setDragStart(moveable: MoveableManagerInterface, { datas }: any) {\n const {\n allMatrix,\n beforeMatrix,\n is3d,\n left,\n top,\n origin,\n offsetMatrix,\n targetMatrix,\n transformOrigin,\n } = moveable.state;\n const n = is3d ? 4 : 3;\n\n datas.is3d = is3d;\n datas.matrix = allMatrix;\n datas.targetMatrix = targetMatrix;\n datas.beforeMatrix = beforeMatrix;\n datas.offsetMatrix = offsetMatrix;\n datas.transformOrigin = transformOrigin;\n datas.inverseMatrix = invert(allMatrix, n);\n datas.inverseBeforeMatrix = invert(beforeMatrix, n);\n datas.absoluteOrigin = convertPositionMatrix(plus([left, top], origin), n);\n datas.startDragBeforeDist = calculate(datas.inverseBeforeMatrix, datas.absoluteOrigin, n);\n datas.startDragDist = calculate(datas.inverseMatrix, datas.absoluteOrigin, n);\n}\n\nexport function getTransformDirection(e: any) {\n return calculateElementPosition(e.datas.beforeTransform, [50, 50], 100, 100).direction;\n}\n\n\nexport interface OriginalDataTransformInfos {\n startTransforms: string[];\n nextTransforms: string[];\n nextTransformAppendedIndexes: number[];\n}\n\nexport function resolveTransformEvent(moveable: MoveableManagerInterface, event: any, functionName: string) {\n const {\n datas,\n originalDatas: {\n beforeRenderable: originalDatas,\n },\n } = event;\n\n const index = datas.transformIndex;\n\n const nextTransforms = originalDatas.nextTransforms as string[];\n const length = nextTransforms.length;\n const nextTransformAppendedIndexes: any[] = originalDatas.nextTransformAppendedIndexes;\n let nextIndex = -1;\n\n if (index === -1) {\n // translate => rotate => scale\n if (functionName === \"translate\") {\n nextIndex = 0;\n } else if (functionName === \"rotate\") {\n nextIndex = findIndex(nextTransforms, text => text.match(/scale\\(/g,));\n }\n if (nextIndex === -1) {\n nextIndex = nextTransforms.length;\n }\n datas.transformIndex = nextIndex;\n } else if (find(nextTransformAppendedIndexes, info => info.index === index && info.functionName === functionName)) {\n nextIndex = index;\n } else {\n nextIndex = index + nextTransformAppendedIndexes.filter(info => info.index < index).length;\n }\n\n const result = convertTransformInfo(nextTransforms, moveable.state, nextIndex);\n const targetFunction = result.targetFunction;\n const matFunctionName = functionName === \"rotate\" ? \"rotateZ\" : functionName;\n\n datas.beforeFunctionTexts = result.beforeFunctionTexts;\n datas.afterFunctionTexts = result.afterFunctionTexts;\n datas.beforeTransform = result.beforeFunctionMatrix;\n datas.beforeTransform2 = result.beforeFunctionMatrix2;\n datas.targetTansform = result.targetFunctionMatrix;\n datas.afterTransform = result.afterFunctionMatrix;\n datas.afterTransform2 = result.afterFunctionMatrix2;\n datas.targetAllTransform = result.allFunctionMatrix;\n\n if (targetFunction.functionName === matFunctionName) {\n datas.afterFunctionTexts.splice(0, 1);\n datas.isAppendTransform = false;\n } else if (length > nextIndex) {\n datas.isAppendTransform = true;\n\n originalDatas.nextTransformAppendedIndexes = [...nextTransformAppendedIndexes, {\n functionName,\n index: nextIndex,\n isAppend: true,\n }];\n }\n}\n\nexport function convertTransformFormat(datas: any, value: any, dist: any) {\n return `${datas.beforeFunctionTexts.join(\" \")} ${datas.isAppendTransform ? dist : value} ${datas.afterFunctionTexts.join(\" \")}`;\n}\nexport function getTransformDist({ datas, distX, distY }: any) {\n const [bx, by] = getBeforeDragDist({ datas, distX, distY });\n // B * [tx, ty] * A = [bx, by] * targetMatrix;\n // [tx, ty] = B-1 * [bx, by] * targetMatrix * A-1 * [0, 0];\n\n const res = getTransfromMatrix(datas, fromTranslation([bx, by], 4));\n\n return calculate(res, convertPositionMatrix([0, 0, 0], 4), 4);\n}\nexport function getTransfromMatrix(datas: any, targetMatrix: number[], isAfter?: boolean) {\n const {\n beforeTransform,\n afterTransform,\n beforeTransform2,\n afterTransform2,\n targetAllTransform,\n } = datas;\n\n // B * afterTargetMatrix * A = (targetMatrix * targetAllTransform)\n // afterTargetMatrix = B-1 * targetMatrix * targetAllTransform * A-1\n // nextTargetMatrix = (targetMatrix * targetAllTransform)\n const nextTargetMatrix\n = isAfter\n ? multiply(targetAllTransform, targetMatrix, 4)\n : multiply(targetMatrix, targetAllTransform, 4);\n\n // res1 = B-1 * nextTargetMatrix\n const res1 = multiply(invert(isAfter ? beforeTransform2 : beforeTransform, 4), nextTargetMatrix, 4);\n\n // res3 = res2 * A-1\n const afterTargetMatrix = multiply(res1, invert(isAfter ? afterTransform2 : afterTransform, 4), 4);\n\n return afterTargetMatrix;\n}\nexport function getBeforeDragDist({ datas, distX, distY }: any) {\n // TT = BT\n const {\n inverseBeforeMatrix,\n is3d,\n startDragBeforeDist,\n absoluteOrigin,\n } = datas;\n const n = is3d ? 4 : 3;\n\n // ABS_ORIGIN * [distX, distY] = BM * (ORIGIN + [tx, ty])\n // BM -1 * ABS_ORIGIN * [distX, distY] - ORIGIN = [tx, ty]\n return minus(\n calculate(\n inverseBeforeMatrix,\n plus(absoluteOrigin, [distX, distY]),\n n,\n ),\n startDragBeforeDist,\n );\n}\nexport function getDragDist({ datas, distX, distY }: any, isBefore?: boolean) {\n const {\n inverseBeforeMatrix,\n inverseMatrix,\n is3d,\n startDragBeforeDist,\n startDragDist,\n absoluteOrigin,\n } = datas;\n const n = is3d ? 4 : 3;\n\n return minus(\n calculate(\n isBefore ? inverseBeforeMatrix : inverseMatrix,\n plus(absoluteOrigin, [distX, distY]),\n n,\n ),\n isBefore ? startDragBeforeDist : startDragDist,\n );\n}\nexport function getInverseDragDist({ datas, distX, distY }: any, isBefore?: boolean) {\n const {\n beforeMatrix,\n matrix,\n is3d,\n startDragBeforeDist,\n startDragDist,\n absoluteOrigin,\n } = datas;\n const n = is3d ? 4 : 3;\n\n return minus(\n calculate(\n isBefore ? beforeMatrix : matrix,\n plus(isBefore ? startDragBeforeDist : startDragDist, [distX, distY]),\n n,\n ),\n absoluteOrigin,\n );\n}\n\nexport function calculateTransformOrigin(\n transformOrigin: string[],\n width: number,\n height: number,\n prevWidth: number = width,\n prevHeight: number = height,\n prevOrigin: number[] = [0, 0],\n) {\n\n if (!transformOrigin) {\n return prevOrigin;\n }\n return transformOrigin.map((pos, i) => {\n const { value, unit } = splitUnit(pos);\n\n const prevSize = (i ? prevHeight : prevWidth);\n const size = (i ? height : width);\n if (pos === \"%\" || isNaN(value)) {\n // no value but %\n\n const measureRatio = prevSize ? prevOrigin[i] / prevSize : 0;\n\n return size * measureRatio;\n } else if (unit !== \"%\") {\n return value;\n }\n return size * value / 100;\n });\n}\n\nexport function getPosIndexesByDirection(direction: number[]) {\n const indexes: number[] = [];\n\n if (direction[1] >= 0) {\n if (direction[0] >= 0) {\n indexes.push(3);\n }\n if (direction[0] <= 0) {\n indexes.push(2);\n }\n }\n if (direction[1] <= 0) {\n if (direction[0] >= 0) {\n indexes.push(1);\n }\n if (direction[0] <= 0) {\n indexes.push(0);\n }\n }\n return indexes;\n}\nexport function getPosesByDirection(\n poses: number[][],\n direction: number[],\n) {\n /*\n [-1, -1](pos1) [0, -1](pos1,pos2) [1, -1](pos2)\n [-1, 0](pos1, pos3) [1, 0](pos2, pos4)\n [-1, 1](pos3) [0, 1](pos3, pos4) [1, 1](pos4)\n */\n return getPosIndexesByDirection(direction).map(index => poses[index]);\n}\n\nexport function getPosBySingleDirection(\n poses: number[][],\n direction: number,\n) {\n const ratio = (direction + 1) / 2;\n return [\n dot(poses[0][0], poses[1][0], ratio, 1 - ratio),\n dot(poses[0][1], poses[1][1], ratio, 1 - ratio),\n ];\n}\n\nexport function getPosByDirection(\n poses: number[][],\n direction: number[],\n) {\n const top = getPosBySingleDirection([poses[0], poses[1]], direction[0]);\n const bottom = getPosBySingleDirection([poses[2], poses[3]], direction[0]);\n\n return getPosBySingleDirection([top, bottom], direction[1]);\n}\n\nfunction getDist(\n startPos: number[],\n matrix: number[],\n width: number,\n height: number,\n n: number,\n fixedDirection: number[],\n) {\n const poses = calculatePoses(matrix, width, height, n);\n const fixedPos = getPosByDirection(poses, fixedDirection);\n const distX = startPos[0] - fixedPos[0];\n const distY = startPos[1] - fixedPos[1];\n\n return [distX, distY];\n}\nexport function getNextMatrix(\n offsetMatrix: number[],\n targetMatrix: number[],\n origin: number[],\n n: number,\n) {\n return multiply(\n offsetMatrix,\n getAbsoluteMatrix(targetMatrix, n, origin),\n n,\n );\n}\nexport function getNextTransformMatrix(\n state: MoveableManagerState,\n datas: any,\n transform: string | number[],\n isAllTransform?: boolean,\n) {\n const {\n transformOrigin,\n offsetMatrix,\n is3d,\n } = state;\n const n = is3d ? 4 : 3;\n let targetTransform!: number[];\n\n if (isString(transform)) {\n const {\n beforeTransform,\n afterTransform,\n } = datas;\n\n if (isAllTransform) {\n targetTransform = convertDimension(parseMat(transform), 4, n);\n } else {\n targetTransform = convertDimension(\n multiply(multiply(beforeTransform, parseMat([transform]), 4), afterTransform, 4),\n 4, n,\n );\n }\n } else {\n targetTransform = transform;\n }\n\n return getNextMatrix(\n offsetMatrix,\n targetTransform,\n transformOrigin,\n n,\n );\n}\nexport function scaleMatrix(\n state: any,\n scale: number[],\n) {\n const {\n transformOrigin,\n offsetMatrix,\n is3d,\n targetMatrix,\n targetAllTransform,\n } = state;\n const n = is3d ? 4 : 3;\n\n return getNextMatrix(\n offsetMatrix,\n multiply(targetAllTransform || targetMatrix, createScaleMatrix(scale, n), n),\n transformOrigin,\n n,\n );\n}\n\nexport function fillTransformStartEvent(moveable: MoveableManagerInterface, e: any): OnTransformStartEvent {\n const originalDatas = getBeforeRenderableDatas(e);\n return {\n setTransform: (transform: string | string[], index = -1) => {\n originalDatas.startTransforms = isArray(transform) ? transform : splitSpace(transform);\n setTransformIndex(moveable, e, index);\n },\n setTransformIndex: (index: number) => {\n setTransformIndex(moveable, e, index);\n },\n };\n}\nexport function setDefaultTransformIndex(moveable: MoveableManagerInterface, e: any, property: string) {\n const originalDatas = getBeforeRenderableDatas(e);\n const startTransforms = originalDatas.startTransforms;\n\n setTransformIndex(moveable, e, findIndex(startTransforms, func => func.indexOf(`${property}(`) === 0));\n}\nexport function setTransformIndex(moveable: MoveableManagerInterface, e: any, index: number) {\n const originalDatas = getBeforeRenderableDatas(e);\n const datas = e.datas;\n\n datas.transformIndex = index;\n if (index === -1) {\n return;\n }\n const transform = originalDatas.startTransforms[index];\n\n if (!transform) {\n return;\n }\n const state = moveable.state;\n const info = parse([transform], {\n \"x%\": v => v / 100 * state.offsetWidth,\n \"y%\": v => v / 100 * state.offsetHeight,\n });\n\n datas.startValue = info[0].functionValue;\n}\nexport function fillOriginalTransform(\n e: any,\n transform: string,\n) {\n const originalDatas = getBeforeRenderableDatas(e);\n\n originalDatas.nextTransforms = splitSpace(transform);\n // originalDatas.nextTargetMatrix = parseMat(transform);\n}\nexport function getBeforeRenderableDatas(e: any) {\n return e.originalDatas.beforeRenderable;\n}\nexport function getNextTransforms(e: any) {\n const {\n originalDatas: {\n beforeRenderable: originalDatas,\n },\n } = e;\n\n return originalDatas.nextTransforms as string[];\n}\nexport function getNextTransformText(e: any) {\n return (getNextTransforms(e) || []).join(\" \");\n}\n\nexport function getNextStyle(e: any) {\n return getBeforeRenderableDatas(e).nextStyle;\n}\n\nexport function fillTransformEvent(\n moveable: MoveableManagerInterface,\n nextTransform: string,\n delta: number[],\n isPinch: boolean,\n e: any,\n): OnTransformEvent {\n fillOriginalTransform(e, nextTransform);\n\n const drag = Draggable.drag!(\n moveable,\n setCustomDrag(e, moveable.state, delta, isPinch, false),\n ) as OnDrag;\n const afterTransform = drag ? drag.transform : nextTransform;\n return {\n transform: nextTransform,\n drag: drag as OnDrag,\n ...fillCSSObject({\n transform: afterTransform,\n }, e),\n afterTransform,\n };\n}\n\nexport function getTranslateFixedPosition(\n moveable: MoveableManagerInterface,\n transform: string | number[],\n fixedDirection: number[],\n fixedOffset: number[],\n datas: any,\n isAllTransform?: boolean,\n) {\n const nextMatrix = getNextTransformMatrix(moveable.state, datas, transform, isAllTransform);\n const nextFixedPosition = getDirectionOffset(\n moveable,\n fixedDirection,\n fixedOffset,\n nextMatrix,\n );\n\n return nextFixedPosition;\n}\n\nexport function getTranslateDist(\n moveable: MoveableManagerInterface,\n transform: string,\n fixedDirection: number[],\n fixedPosition: number[],\n fixedOffset: number[],\n datas: any,\n isAllTransform?: boolean,\n) {\n const nextFixedPosition = getTranslateFixedPosition(\n moveable,\n transform,\n fixedDirection,\n fixedOffset,\n datas,\n isAllTransform,\n );\n const state = moveable.state;\n const {\n left,\n top,\n } = state;\n\n const groupable = moveable.props.groupable;\n const groupLeft = groupable ? left : 0;\n const groupTop = groupable ? top : 0;\n const dist = minus(fixedPosition, nextFixedPosition);\n\n return minus(dist, [groupLeft, groupTop]);\n}\nexport function getScaleDist(\n moveable: MoveableManagerInterface,\n transform: string,\n fixedDirection: number[],\n fixedPosition: number[],\n fixedOffset: number[],\n datas: any,\n isAllTransform?: boolean,\n) {\n const dist = getTranslateDist(\n moveable,\n transform,\n fixedDirection,\n fixedPosition,\n fixedOffset,\n datas,\n isAllTransform,\n );\n\n return dist;\n}\nexport function getOriginDirection(moveable: MoveableManagerInterface) {\n const {\n width,\n height,\n transformOrigin,\n } = moveable.state;\n return [\n -1 + transformOrigin[0] / (width / 2),\n -1 + transformOrigin[1] / (height / 2),\n ];\n}\nexport function getDirectionByPos(\n pos: number[],\n width: number,\n height: number,\n) {\n return [\n width ? -1 + pos[0] / (width / 2) : 0,\n height ? -1 + pos[1] / (height / 2) : 0,\n ];\n}\nexport function getDirectionOffset(\n moveable: MoveableManagerInterface,\n fixedDirection: number[],\n fixedOffset: number[],\n nextMatrix: number[] = moveable.state.allMatrix,\n) {\n const {\n width,\n height,\n is3d,\n } = moveable.state;\n const n = is3d ? 4 : 3;\n const fixedOffsetPosition = [\n width / 2 * (1 + fixedDirection[0]) + fixedOffset[0],\n height / 2 * (1 + fixedDirection[1]) + fixedOffset[1],\n ];\n return calculatePosition(nextMatrix, fixedOffsetPosition, n);\n}\nexport function getRotateDist(\n moveable: MoveableManagerInterface,\n rotateDist: number,\n datas: any,\n) {\n const fixedDirection = datas.fixedDirection;\n const fixedPosition = datas.fixedPosition;\n const fixedOffset = datas.fixedOffset;\n\n return getTranslateDist(\n moveable,\n `rotate(${rotateDist}deg)`,\n fixedDirection,\n fixedPosition,\n fixedOffset,\n datas,\n );\n}\nexport function getResizeDist(\n moveable: MoveableManagerInterface,\n width: number,\n height: number,\n fixedPosition: number[],\n transformOrigin: string[],\n datas: any,\n) {\n const {\n groupable,\n } = moveable.props;\n const state = moveable.state;\n const {\n transformOrigin: prevOrigin,\n offsetMatrix,\n is3d,\n width: prevWidth,\n height: prevHeight,\n left,\n top,\n } = state;\n const fixedDirection = datas.fixedDirection;\n const targetMatrix = datas.nextTargetMatrix || state.targetMatrix;\n const n = is3d ? 4 : 3;\n const nextOrigin = calculateTransformOrigin(\n transformOrigin!,\n width,\n height,\n prevWidth,\n prevHeight,\n prevOrigin,\n );\n const groupLeft = groupable ? left : 0;\n const groupTop = groupable ? top : 0;\n const nextMatrix = getNextMatrix(offsetMatrix, targetMatrix, nextOrigin, n);\n const dist = getDist(fixedPosition, nextMatrix, width, height, n, fixedDirection);\n\n return minus(dist, [groupLeft, groupTop]);\n}\nexport function getAbsolutePosition(\n moveable: MoveableManagerInterface,\n direction: number[],\n) {\n return getPosByDirection(getAbsolutePosesByState(moveable.state), direction);\n}\n","import { PREFIX, IS_WEBKIT605, TINY_NUM } from \"./consts\";\nimport { prefixNames } from \"framework-utils\";\nimport {\n isUndefined, isObject, splitUnit,\n IObject, hasClass, isArray, isString, getRad,\n isFunction, convertUnitSize, between, getKeys, decamelize, isNumber,\n getDocumentBody,\n getDocumentElement,\n getWindow,\n isNode,\n isWindow,\n counter,\n} from \"@daybrush/utils\";\nimport {\n multiply, invert,\n convertDimension, createIdentityMatrix,\n createOriginMatrix, convertPositionMatrix, calculate,\n multiplies,\n minus,\n createScaleMatrix,\n plus,\n convertMatrixtoCSS,\n rotate,\n} from \"@scena/matrix\";\nimport {\n MoveableManagerState, Able, MoveableClientRect,\n MoveableProps, ArrayFormat, MoveableRefType,\n MatrixInfo, ExcludeEndParams, ExcludeParams,\n ElementSizes, TransformObject,\n MoveableRefTargetsResultType, MoveableRefTargetType, MoveableManagerInterface, CSSObject, PaddingBox,\n} from \"./types\";\nimport { parse, toMat, calculateMatrixDist, parseMat } from \"css-to-mat\";\nimport { getBeforeRenderableDatas, getDragDist } from \"./gesto/GestoUtils\";\nimport { getGestoData } from \"./gesto/GestoData\";\nimport { GetStyle, getCachedStyle } from \"./store/Store\";\nimport { normalized } from \"./ables/Snappable\";\n\nexport function round(num: number) {\n return Math.round(num);\n}\nexport function multiply2(pos1: number[], pos2: number[]) {\n return [\n pos1[0] * pos2[0],\n pos1[1] * pos2[1],\n ];\n}\nexport function prefix(...classNames: string[]) {\n return prefixNames(PREFIX, ...classNames);\n}\n\nexport function defaultSync(fn: () => void) {\n fn();\n}\n\nexport function createIdentityMatrix3() {\n return createIdentityMatrix(3);\n}\n\nexport function getTransformMatrix(transform: string | number[]) {\n if (!transform || transform === \"none\") {\n return [1, 0, 0, 1, 0, 0];\n\n }\n if (isObject(transform)) {\n return transform;\n }\n return parseMat(transform);\n}\nexport function getAbsoluteMatrix(matrix: number[], n: number, origin: number[]) {\n return multiplies(\n n,\n createOriginMatrix(origin, n),\n matrix,\n createOriginMatrix(origin.map(a => -a), n),\n );\n}\nexport function measureSVGSize(el: SVGElement, unit: string, isHorizontal: boolean) {\n if (unit === \"%\") {\n const viewBox = getSVGViewBox(el.ownerSVGElement!);\n\n return viewBox[isHorizontal ? \"width\" : \"height\"] / 100;\n }\n return 1;\n}\nexport function getBeforeTransformOrigin(el: SVGElement) {\n const relativeOrigin = getTransformOrigin(getComputedStyle(el, \":before\"));\n\n return relativeOrigin.map((o, i) => {\n const { value, unit } = splitUnit(o);\n\n return value * measureSVGSize(el, unit, i === 0);\n });\n}\nexport function getTransformOriginArray(transformOrigin: string) {\n return transformOrigin ? transformOrigin.split(\" \") : [\"0\", \"0\"];\n}\nexport function getTransformOrigin(style: CSSStyleDeclaration) {\n return getTransformOriginArray(style.transformOrigin);\n}\nexport function getElementTransform(\n target: HTMLElement | SVGElement,\n): string {\n const getStyle = getCachedStyle(target);\n const computedTransform = getStyle(\"transform\");\n\n if (computedTransform && computedTransform !== \"none\") {\n return computedTransform;\n }\n if (\"transform\" in target) {\n const list = (target as any).transform as SVGAnimatedTransformList;\n const baseVal = list.baseVal;\n\n if (!baseVal) {\n return \"\";\n }\n const length = baseVal.length;\n\n if (!length) {\n return \"\";\n }\n\n const matrixes: string[] = [];\n\n for (let i = 0; i < length; ++i) {\n const matrix = baseVal[i].matrix;\n\n matrixes.push(`matrix(${([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"] as const).map(chr => matrix[chr]).join(\", \")})`);\n }\n return matrixes.join(\" \");\n\n }\n return \"\";\n}\n\nexport function getOffsetInfo(\n el: SVGElement | HTMLElement | null | undefined,\n lastParent: SVGElement | HTMLElement | null | undefined,\n isParent?: boolean,\n checkZoom?: boolean,\n getTargetStyle?: GetStyle,\n) {\n\n const documentElement = getDocumentElement(el!) || getDocumentBody(el!);\n let hasSlot = false;\n let target: HTMLElement | SVGElement | null | undefined;\n let parentSlotElement: HTMLElement | null | undefined;\n\n if (!el || isParent) {\n target = el;\n } else {\n const assignedSlotParentElement = el?.assignedSlot?.parentElement;\n const parentElement = el.parentElement;\n\n if (assignedSlotParentElement) {\n hasSlot = true;\n parentSlotElement = parentElement;\n target = assignedSlotParentElement;\n } else {\n target = parentElement;\n }\n }\n\n let isCustomElement = false;\n let isEnd = el === lastParent || target === lastParent;\n let position = \"relative\";\n let offsetZoom = 1;\n\n\n const targetZoom = parseFloat(getTargetStyle?.(\"zoom\")) || 1;\n const targetPosition = getTargetStyle?.(\"position\");\n\n\n\n while (target && target !== documentElement) {\n if (lastParent === target) {\n isEnd = true;\n }\n const getStyle = getCachedStyle(target);\n const tagName = target.tagName.toLowerCase();\n const transform = getElementTransform(target as SVGElement);\n const willChange = getStyle(\"willChange\");\n const zoom = parseFloat(getStyle(\"zoom\")) || 1;\n\n position = getStyle(\"position\");\n if (checkZoom && zoom !== 1) {\n offsetZoom = zoom;\n break;\n }\n if (\n // offsetParent is the parentElement if the target's zoom is not 1 and not absolute.\n !isParent && checkZoom && targetZoom !== 1 && targetPosition && targetPosition !== \"absolute\"\n || tagName === \"svg\"\n || tagName === \"foreignobject\"\n || position !== \"static\"\n || (transform && transform !== \"none\")\n || willChange === \"transform\"\n ) {\n break;\n }\n const slotParentNode = el?.assignedSlot?.parentNode;\n const targetParentNode = target.parentNode;\n\n if (slotParentNode) {\n hasSlot = true;\n parentSlotElement = targetParentNode as HTMLElement;\n }\n const parentNode = targetParentNode;\n\n if (parentNode && parentNode.nodeType === 11) {\n // Shadow Root\n target = (parentNode as ShadowRoot).host as HTMLElement;\n isCustomElement = true;\n position = getCachedStyle(target)(\"position\");\n break;\n }\n target = parentNode as HTMLElement | SVGElement;\n position = \"relative\";\n }\n return {\n offsetZoom,\n hasSlot,\n parentSlotElement,\n isCustomElement,\n isStatic: position === \"static\",\n isEnd: isEnd || !target || target === documentElement,\n offsetParent: target as HTMLElement || documentElement,\n };\n}\n\nexport function getOffsetPosInfo(\n el: HTMLElement | SVGElement,\n target: HTMLElement | SVGElement,\n) {\n const tagName = el.tagName.toLowerCase();\n let offsetLeft = (el as HTMLElement).offsetLeft;\n let offsetTop = (el as HTMLElement).offsetTop;\n const getStyle = getCachedStyle(el);\n // svg\n const isSVG = isUndefined(offsetLeft);\n let hasOffset = !isSVG;\n let origin: number[];\n let targetOrigin: number[];\n // inner svg element\n if (!hasOffset && (tagName !== \"svg\" || (el as SVGElement).ownerSVGElement)) {\n origin = IS_WEBKIT605\n ? getBeforeTransformOrigin(el as SVGElement)\n : getTransformOriginArray(getStyle(\"transformOrigin\")).map(pos => parseFloat(pos));\n\n targetOrigin = origin.slice();\n hasOffset = true;\n\n if (tagName === \"svg\") {\n offsetLeft = 0;\n offsetTop = 0;\n } else {\n [\n offsetLeft, offsetTop, origin[0], origin[1],\n ] = getSVGGraphicsOffset(\n el as SVGGraphicsElement,\n origin,\n el === target && target.tagName.toLowerCase() === \"g\",\n );\n }\n } else {\n origin = getTransformOriginArray(getStyle(\"transformOrigin\")).map(pos => parseFloat(pos));\n\n targetOrigin = origin.slice();\n // console.log(getStyle(\"transformOrigin\"), targetOrigin);\n }\n return {\n tagName,\n isSVG,\n hasOffset,\n offset: [offsetLeft || 0, offsetTop || 0],\n origin,\n targetOrigin,\n };\n}\nexport function getBodyOffset(\n el: HTMLElement | SVGElement,\n isSVG: boolean,\n) {\n const getStyle = getCachedStyle(el);\n const getBodyStyle = getCachedStyle(getDocumentBody(el));\n const bodyPosition = getBodyStyle(\"position\");\n if (!isSVG && (!bodyPosition || bodyPosition === \"static\")) {\n return [0, 0];\n }\n\n let marginLeft = parseInt(getBodyStyle(\"marginLeft\"), 10);\n let marginTop = parseInt(getBodyStyle(\"marginTop\"), 10);\n\n if (getStyle(\"position\") === \"absolute\") {\n if (getStyle(\"top\") !== \"auto\" || getStyle(\"bottom\") !== \"auto\") {\n marginTop = 0;\n }\n if (getStyle(\"left\") !== \"auto\" || getStyle(\"right\") !== \"auto\") {\n marginLeft = 0;\n }\n }\n\n return [marginLeft, marginTop];\n}\nexport function convert3DMatrixes(matrixes: MatrixInfo[]) {\n matrixes.forEach(info => {\n const matrix = info.matrix;\n\n if (matrix) {\n info.matrix = convertDimension(matrix, 3, 4);\n }\n });\n}\n\nexport function getPositionFixedInfo(el: HTMLElement | SVGElement) {\n let fixedContainer = el.parentElement;\n let hasTransform = false;\n const body = getDocumentBody(el);\n\n while (fixedContainer) {\n const transform = getComputedStyle(fixedContainer).transform;\n\n\n if (transform && transform !== \"none\") {\n hasTransform = true;\n break;\n }\n if (fixedContainer === body) {\n break;\n }\n fixedContainer = fixedContainer.parentElement;\n }\n\n return {\n fixedContainer: fixedContainer || body,\n hasTransform,\n };\n}\n\nexport function makeMatrixCSS(matrix: number[], is3d: boolean = matrix.length > 9) {\n return `${is3d ? \"matrix3d\" : \"matrix\"}(${convertMatrixtoCSS(matrix, !is3d).join(\",\")})`;\n}\nexport function getSVGViewBox(el: SVGSVGElement) {\n const clientWidth = el.clientWidth;\n const clientHeight = el.clientHeight;\n\n if (!el) {\n return { x: 0, y: 0, width: 0, height: 0, clientWidth, clientHeight };\n }\n const viewBox = el.viewBox;\n const baseVal = (viewBox && viewBox.baseVal) || { x: 0, y: 0, width: 0, height: 0 };\n\n return {\n x: baseVal.x,\n y: baseVal.y,\n width: baseVal.width || clientWidth,\n height: baseVal.height || clientHeight,\n clientWidth,\n clientHeight,\n };\n}\nexport function getSVGMatrix(\n el: SVGSVGElement,\n n: number,\n) {\n const {\n width: viewBoxWidth,\n height: viewBoxHeight,\n clientWidth,\n clientHeight,\n } = getSVGViewBox(el);\n const scaleX = clientWidth / viewBoxWidth;\n const scaleY = clientHeight / viewBoxHeight;\n\n const preserveAspectRatio = el.preserveAspectRatio.baseVal;\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio\n const align = preserveAspectRatio.align;\n // 1 : meet 2: slice\n const meetOrSlice = preserveAspectRatio.meetOrSlice;\n const svgOrigin = [0, 0];\n const scale = [scaleX, scaleY];\n const translate = [0, 0];\n\n if (align !== 1) {\n const xAlign = (align - 2) % 3;\n const yAlign = Math.floor((align - 2) / 3);\n\n svgOrigin[0] = viewBoxWidth * xAlign / 2;\n svgOrigin[1] = viewBoxHeight * yAlign / 2;\n\n const scaleDimension = meetOrSlice === 2 ? Math.max(scaleY, scaleX) : Math.min(scaleX, scaleY);\n\n scale[0] = scaleDimension;\n scale[1] = scaleDimension;\n\n translate[0] = (clientWidth - viewBoxWidth) / 2 * xAlign;\n translate[1] = (clientHeight - viewBoxHeight) / 2 * yAlign;\n }\n const scaleMatrix = createScaleMatrix(scale, n);\n [\n scaleMatrix[n * (n - 1)],\n scaleMatrix[n * (n - 1) + 1],\n ] = translate;\n\n return getAbsoluteMatrix(\n scaleMatrix,\n n,\n svgOrigin,\n );\n}\nexport function getSVGGraphicsOffset(\n el: SVGGraphicsElement,\n origin: number[],\n isGTarget?: boolean,\n) {\n const tagName = el.tagName.toLowerCase();\n\n if (!el.getBBox || !isGTarget && tagName === \"g\") {\n return [0, 0, 0, 0];\n }\n const getStyle = getCachedStyle(el);\n const isFillBox = getStyle(\"transform-box\") === \"fill-box\";\n\n const bbox = el.getBBox();\n const viewBox = getSVGViewBox(el.ownerSVGElement!);\n let x = bbox.x;\n let y = bbox.y;\n\n // x, y가 0으로 나타나는 버그\n if (tagName === \"foreignobject\" && (!x && !y)) {\n x = parseFloat(el.getAttribute(\"x\")!) || 0;\n y = parseFloat(el.getAttribute(\"y\")!) || 0;\n }\n const left = x - viewBox.x;\n const top = y - viewBox.y;\n const originX = isFillBox ? origin[0] : origin[0] - left;\n const originY = isFillBox ? origin[1] : origin[1] - top;\n\n // if (isFillBox) {\n // const bbox = (el as SVGGraphicsElement).getBBox();\n // const x = parseFloat(getStyle(\"x\")) || bbox.x;\n // const y = parseFloat(getStyle(\"y\")) || bbox.y;\n\n // const xScale = bbox.x / x;\n // const yScale = bbox.y / y;\n\n // console.log(x, y);\n\n // originX *= xScale;\n // originY *= yScale;\n // }\n\n return [left, top, originX, originY];\n}\nexport function calculatePosition(matrix: number[], pos: number[], n: number) {\n return calculate(matrix, convertPositionMatrix(pos, n), n);\n}\nexport function calculatePoses(matrix: number[], width: number, height: number, n: number) {\n return [[0, 0], [width, 0], [0, height], [width, height]].map(pos => calculatePosition(matrix, pos, n));\n}\nexport function getRect(poses: number[][]) {\n const posesX = poses.map(pos => pos[0]);\n const posesY = poses.map(pos => pos[1]);\n const left = Math.min(...posesX);\n const top = Math.min(...posesY);\n const right = Math.max(...posesX);\n const bottom = Math.max(...posesY);\n const rectWidth = right - left;\n const rectHeight = bottom - top;\n\n return {\n left, top,\n right, bottom,\n width: rectWidth,\n height: rectHeight,\n };\n}\nexport function calculateRect(matrix: number[], width: number, height: number, n: number) {\n const poses = calculatePoses(matrix, width, height, n);\n\n return getRect(poses);\n}\nexport function getSVGOffset(\n offsetInfo: MatrixInfo,\n targetInfo: MatrixInfo,\n container: HTMLElement | SVGElement,\n n: number,\n beforeMatrix: number[],\n) {\n const target = offsetInfo.target;\n const origin = offsetInfo.origin!;\n const targetMatrix = targetInfo.matrix!;\n const {\n offsetWidth: width,\n offsetHeight: height,\n } = getSize(target);\n const containerClientRect = container.getBoundingClientRect();\n let margin = [0, 0];\n\n if (container === getDocumentBody(container)) {\n margin = getBodyOffset(target, true);\n }\n\n const rect = target.getBoundingClientRect();\n const rectLeft\n = rect.left - containerClientRect.left + container.scrollLeft\n - (container.clientLeft || 0) + margin[0];\n const rectTop\n = rect.top - containerClientRect.top + container.scrollTop\n - (container.clientTop || 0) + margin[1];\n const rectWidth = rect.width;\n const rectHeight = rect.height;\n\n const mat = multiplies(\n n,\n beforeMatrix,\n targetMatrix,\n );\n const {\n left: prevLeft,\n top: prevTop,\n width: prevWidth,\n height: prevHeight,\n } = calculateRect(mat, width, height, n);\n const posOrigin = calculatePosition(mat, origin, n);\n const prevOrigin = minus(posOrigin, [prevLeft, prevTop]);\n const rectOrigin = [\n rectLeft + prevOrigin[0] * rectWidth / prevWidth,\n rectTop + prevOrigin[1] * rectHeight / prevHeight,\n ];\n const offset = [0, 0];\n let count = 0;\n\n while (++count < 10) {\n const inverseBeforeMatrix = invert(beforeMatrix, n);\n [offset[0], offset[1]] = minus(\n calculatePosition(inverseBeforeMatrix, rectOrigin, n),\n calculatePosition(inverseBeforeMatrix, posOrigin, n),\n );\n const mat2 = multiplies(\n n,\n beforeMatrix,\n createOriginMatrix(offset, n),\n targetMatrix,\n );\n const {\n left: nextLeft,\n top: nextTop,\n } = calculateRect(mat2, width, height, n);\n const distLeft = nextLeft - rectLeft;\n const distTop = nextTop - rectTop;\n\n if (abs(distLeft) < 2 && abs(distTop) < 2) {\n break;\n }\n rectOrigin[0] -= distLeft;\n rectOrigin[1] -= distTop;\n }\n return offset.map(p => Math.round(p));\n}\n\nexport function calculateMoveableClientPositions(\n rootMatrix: number[],\n poses: number[][],\n rootClientRect: MoveableClientRect,\n) {\n const is3d = rootMatrix.length === 16;\n const n = is3d ? 4 : 3;\n const rootPoses = poses.map(pos => calculatePosition(rootMatrix, pos, n));\n const { left, top } = rootClientRect;\n\n return rootPoses.map(pos => {\n return [pos[0] + left, pos[1] + top];\n });\n\n}\n\nexport function getDistSize(vec: number[]) {\n return Math.sqrt(vec[0] * vec[0] + vec[1] * vec[1]);\n}\nexport function getDiagonalSize(pos1: number[], pos2: number[]) {\n return getDistSize([\n pos2[0] - pos1[0],\n pos2[1] - pos1[1],\n ]);\n}\nexport function getLineStyle(pos1: number[], pos2: number[], zoom = 1, rad: number = getRad(pos1, pos2)) {\n const width = getDiagonalSize(pos1, pos2);\n\n return {\n transform: `translateY(-50%) translate(${pos1[0]}px, ${pos1[1]}px) rotate(${rad}rad) scaleY(${zoom})`,\n width: `${width}px`,\n };\n}\nexport function getControlTransform(rotation: number, zoom: number, ...poses: number[][]) {\n const length = poses.length;\n\n const x = poses.reduce((prev, pos) => prev + pos[0], 0) / length;\n const y = poses.reduce((prev, pos) => prev + pos[1], 0) / length;\n return {\n transform: `translateZ(0px) translate(${x}px, ${y}px) rotate(${rotation}rad) scale(${zoom})`,\n };\n}\n\nexport function getProps(props: Props, ableName: keyof Props): Props {\n const self = props[ableName];\n\n if (isObject(self)) {\n return {\n ...props,\n ...self,\n };\n }\n return props;\n}\n\nexport function getSize(\n target?: SVGElement | HTMLElement | null,\n): ElementSizes {\n const hasOffset = target && !isUndefined((target as any).offsetWidth);\n\n let offsetWidth = 0;\n let offsetHeight = 0;\n let clientWidth = 0;\n let clientHeight = 0;\n let cssWidth = 0;\n let cssHeight = 0;\n let contentWidth = 0;\n let contentHeight = 0;\n\n let minWidth = 0;\n let minHeight = 0;\n let minOffsetWidth = 0;\n let minOffsetHeight = 0;\n\n let maxWidth = Infinity;\n let maxHeight = Infinity;\n let maxOffsetWidth = Infinity;\n let maxOffsetHeight = Infinity;\n let inlineCSSWidth = 0;\n let inlineCSSHeight = 0;\n let svg = false;\n\n if (target) {\n if (!hasOffset && (target as SVGElement).ownerSVGElement) {\n // check svg elements\n const bbox = (target as SVGGraphicsElement).getBBox();\n\n svg = true;\n offsetWidth = bbox.width;\n offsetHeight = bbox.height;\n cssWidth = offsetWidth;\n cssHeight = offsetHeight;\n contentWidth = offsetWidth;\n contentHeight = offsetHeight;\n clientWidth = offsetWidth;\n clientHeight = offsetHeight;\n } else {\n // check html elements\n const getStyle = getCachedStyle(target);\n const targetStyle = target.style;\n const boxSizing = getStyle(\"boxSizing\") === \"border-box\";\n const borderLeft = parseFloat(getStyle(\"borderLeftWidth\")) || 0;\n const borderRight = parseFloat(getStyle(\"borderRightWidth\")) || 0;\n const borderTop = parseFloat(getStyle(\"borderTopWidth\")) || 0;\n const borderBottom = parseFloat(getStyle(\"borderBottomWidth\")) || 0;\n const paddingLeft = parseFloat(getStyle(\"paddingLeft\")) || 0;\n const paddingRight = parseFloat(getStyle(\"paddingRight\")) || 0;\n const paddingTop = parseFloat(getStyle(\"paddingTop\")) || 0;\n const paddingBottom = parseFloat(getStyle(\"paddingBottom\")) || 0;\n\n const horizontalPadding = paddingLeft + paddingRight;\n const verticalPadding = paddingTop + paddingBottom;\n const horizontalBorder = borderLeft + borderRight;\n const verticalBorder = borderTop + borderBottom;\n const horizontalOffset = horizontalPadding + horizontalBorder;\n const verticalOffset = verticalPadding + verticalBorder;\n const position = getStyle(\"position\");\n\n let containerWidth = 0;\n let containerHeight = 0;\n\n // SVGSVGElement, HTMLElement\n if (\"clientLeft\" in target) {\n let parentElement: HTMLElement | null = null;\n\n if (position === \"absolute\") {\n const offsetInfo = getOffsetInfo(target, getDocumentBody(target));\n parentElement = offsetInfo.offsetParent;\n\n } else {\n parentElement = target.parentElement;\n }\n if (parentElement) {\n const getParentStyle = getCachedStyle(parentElement);\n\n containerWidth = parseFloat(getParentStyle(\"width\"));\n containerHeight = parseFloat(getParentStyle(\"height\"));\n }\n }\n minWidth = Math.max(\n horizontalPadding,\n convertUnitSize(getStyle(\"minWidth\"), containerWidth) || 0,\n );\n minHeight = Math.max(\n verticalPadding,\n convertUnitSize(getStyle(\"minHeight\"), containerHeight) || 0,\n );\n maxWidth = convertUnitSize(getStyle(\"maxWidth\"), containerWidth);\n maxHeight = convertUnitSize(getStyle(\"maxHeight\"), containerHeight);\n\n if (isNaN(maxWidth)) {\n maxWidth = Infinity;\n }\n if (isNaN(maxHeight)) {\n maxHeight = Infinity;\n }\n inlineCSSWidth = convertUnitSize(targetStyle.width, 0) || 0;\n inlineCSSHeight = convertUnitSize(targetStyle.height, 0) || 0;\n cssWidth = parseFloat(getStyle(\"width\")) || 0;\n cssHeight = parseFloat(getStyle(\"height\")) || 0;\n\n\n contentWidth = abs(cssWidth - inlineCSSWidth) < 1\n ? between(minWidth, inlineCSSWidth || cssWidth, maxWidth)\n : cssWidth;\n contentHeight = abs(cssHeight - inlineCSSHeight) < 1\n ? between(minHeight, inlineCSSHeight || cssHeight, maxHeight)\n : cssHeight;\n\n offsetWidth = contentWidth;\n offsetHeight = contentHeight;\n clientWidth = contentWidth;\n clientHeight = contentHeight;\n\n if (boxSizing) {\n maxOffsetWidth = maxWidth;\n maxOffsetHeight = maxHeight;\n minOffsetWidth = minWidth;\n minOffsetHeight = minHeight;\n contentWidth = offsetWidth - horizontalOffset;\n contentHeight = offsetHeight - verticalOffset;\n } else {\n maxOffsetWidth = maxWidth + horizontalOffset;\n maxOffsetHeight = maxHeight + verticalOffset;\n minOffsetWidth = minWidth + horizontalOffset;\n minOffsetHeight = minHeight + verticalOffset;\n offsetWidth = contentWidth + horizontalOffset;\n offsetHeight = contentHeight + verticalOffset;\n }\n clientWidth = contentWidth + horizontalPadding;\n clientHeight = contentHeight + verticalPadding;\n }\n }\n\n return {\n svg,\n offsetWidth,\n offsetHeight,\n clientWidth,\n clientHeight,\n contentWidth,\n contentHeight,\n inlineCSSWidth,\n inlineCSSHeight,\n cssWidth,\n cssHeight,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n minOffsetWidth,\n minOffsetHeight,\n maxOffsetWidth,\n maxOffsetHeight,\n };\n}\nexport function getRotationRad(\n poses: number[][],\n direction: number,\n) {\n return getRad(direction > 0 ? poses[0] : poses[1], direction > 0 ? poses[1] : poses[0]);\n}\n\nexport function resetClientRect(): MoveableClientRect {\n return {\n left: 0, top: 0,\n width: 0, height: 0,\n right: 0,\n bottom: 0,\n clientLeft: 0, clientTop: 0,\n clientWidth: 0, clientHeight: 0,\n scrollWidth: 0, scrollHeight: 0,\n };\n}\n\nexport function getExtendsRect(\n el: HTMLElement | SVGElement,\n rect: MoveableClientRect,\n): MoveableClientRect {\n const isRoot = el === getDocumentBody(el) || el === getDocumentElement(el);\n\n\n const extendsRect = {\n clientLeft: el.clientLeft,\n clientTop: el.clientTop,\n clientWidth: el.clientWidth,\n clientHeight: el.clientHeight,\n scrollWidth: el.scrollWidth,\n scrollHeight: el.scrollHeight,\n overflow: false,\n };\n\n if (isRoot) {\n extendsRect.clientHeight = Math.max(rect.height, extendsRect.clientHeight);\n extendsRect.scrollHeight = Math.max(rect.height, extendsRect.scrollHeight);\n }\n\n extendsRect.overflow = getCachedStyle(el)(\"overflow\") !== \"visible\";\n\n return {\n ...rect,\n ...extendsRect,\n };\n}\n\nexport function getClientRectByPosition(\n position: { left: number, right: number, top: number, bottom: number },\n base: MoveableClientRect,\n el?: HTMLElement | SVGElement, isExtends?: boolean,\n) {\n const {\n left,\n right,\n top,\n bottom,\n } = position;\n const baseTop = base.top;\n const baseLeft = base.left;\n\n const rect: MoveableClientRect = {\n left: baseLeft + left,\n top: baseTop + top,\n right: baseLeft + right,\n bottom: baseTop + bottom,\n width: right - left,\n height: bottom - top,\n };\n\n\n if (el && isExtends) {\n return getExtendsRect(el, rect);\n }\n return rect;\n}\nexport function getClientRect(el: HTMLElement | SVGElement, isExtends?: boolean): MoveableClientRect {\n let left = 0;\n let top = 0;\n let width = 0;\n let height = 0;\n // let isRoot = false;\n\n if (el) {\n const clientRect = el.getBoundingClientRect();\n\n left = clientRect.left;\n top = clientRect.top;\n width = clientRect.width;\n height = clientRect.height;\n }\n\n const rect: MoveableClientRect = {\n left,\n top,\n width,\n height,\n right: left + width,\n bottom: top + height,\n };\n\n if (el && isExtends) {\n return getExtendsRect(el, rect);\n }\n return rect;\n}\n\n\nexport function getTotalOrigin(moveable: MoveableManagerInterface) {\n const {\n groupable,\n svgOrigin,\n } = moveable.props;\n const {\n offsetWidth,\n offsetHeight,\n svg,\n transformOrigin,\n } = moveable.getState();\n\n if (!groupable && svg && svgOrigin) {\n return convertTransformOriginArray(svgOrigin, offsetWidth, offsetHeight);\n }\n\n return transformOrigin;\n}\n\n\nexport function getTotalDirection(\n parentDirection: number[],\n isPinch: boolean,\n inputEvent: any,\n datas: any,\n) {\n let direction: number[] | undefined;\n\n if (parentDirection) {\n direction = parentDirection;\n } else if (isPinch) {\n direction = [0, 0];\n } else {\n const target = inputEvent.target;\n\n direction = getDirection(target, datas);\n }\n return direction;\n}\nexport function getDirection(target: SVGElement | HTMLElement, datas: any) {\n if (!target) {\n return;\n }\n const deg = target.getAttribute(\"data-rotation\") || \"\";\n const direciton = target.getAttribute(\"data-direction\")!;\n\n datas.deg = deg;\n\n if (!direciton) {\n return;\n }\n const dir = [0, 0];\n\n (direciton.indexOf(\"w\") > -1) && (dir[0] = -1);\n (direciton.indexOf(\"e\") > -1) && (dir[0] = 1);\n (direciton.indexOf(\"n\") > -1) && (dir[1] = -1);\n (direciton.indexOf(\"s\") > -1) && (dir[1] = 1);\n\n return dir;\n}\nexport function getAbsolutePoses(poses: number[][], dist: number[]) {\n return [\n plus(dist, poses[0]),\n plus(dist, poses[1]),\n plus(dist, poses[2]),\n plus(dist, poses[3]),\n ];\n}\nexport function getAbsolutePosesByState({\n left,\n top,\n pos1,\n pos2,\n pos3,\n pos4,\n}: {\n left: number,\n top: number,\n pos1: number[],\n pos2: number[],\n pos3: number[],\n pos4: number[],\n}) {\n return getAbsolutePoses([pos1, pos2, pos3, pos4], [left, top]);\n}\n\nexport function roundSign(num: number) {\n return Math.round(num % 1 === -0.5 ? num - 1 : num);\n}\n\nexport function unsetAbles(self: MoveableManagerInterface, isControl: boolean) {\n self[isControl ? \"controlAbles\" : \"targetAbles\"].forEach(able => {\n able.unset && able.unset(self);\n });\n}\nexport function unsetGesto(self: MoveableManagerInterface, isControl: boolean) {\n const gestoName = isControl ? \"controlGesto\" : \"targetGesto\";\n const gesto = self[gestoName];\n\n if (gesto?.isIdle() === false) {\n unsetAbles(self, isControl);\n }\n gesto?.unset();\n self[gestoName] = null as any;\n}\n\nexport function fillCSSObject(style: Record, resolvedEvent?: any): CSSObject {\n if (resolvedEvent) {\n const originalDatas = getBeforeRenderableDatas(resolvedEvent);\n\n originalDatas.nextStyle = {\n ...originalDatas.nextStyle,\n ...style,\n };\n }\n return {\n style,\n cssText: getKeys(style).map(name => `${decamelize(name, \"-\")}: ${style[name]};`).join(\"\"),\n };\n}\n\nexport function fillAfterTransform(\n prevEvent: { style: Record, transform: string },\n nextEvent: { style: Record, transform: string, afterTransform?: string },\n resolvedEvent?: any\n): TransformObject {\n const afterTransform = nextEvent.afterTransform || nextEvent.transform;\n\n return {\n ...fillCSSObject({\n ...prevEvent.style,\n ...nextEvent.style,\n transform: afterTransform,\n }, resolvedEvent),\n afterTransform,\n transform: prevEvent.transform,\n };\n}\n\nexport function fillParams>(\n moveable: any,\n e: any,\n params: ExcludeParams,\n isBeforeEvent?: boolean,\n): T {\n const datas = e.datas;\n\n if (!datas.datas) {\n datas.datas = {};\n }\n const nextParams = {\n ...params,\n target: moveable.state.target,\n clientX: e.clientX,\n clientY: e.clientY,\n inputEvent: e.inputEvent,\n currentTarget: moveable,\n moveable,\n datas: datas.datas,\n isRequest: e.isRequest,\n isRequestChild: e.isRequestChild,\n isFirstDrag: !!e.isFirstDrag,\n isTrusted: e.isTrusted !== false,\n stopAble() {\n datas.isEventStart = false;\n },\n stopDrag() {\n e.stop?.();\n },\n } as any;\n\n if (!datas.isStartEvent) {\n datas.isStartEvent = true;\n } else if (!isBeforeEvent) {\n datas.lastEvent = nextParams;\n }\n return nextParams;\n}\nexport function fillEndParams>(\n moveable: any,\n e: any,\n params: ExcludeEndParams & { isDrag?: boolean },\n): T {\n const datas = e.datas;\n const isDrag = \"isDrag\" in params ? params.isDrag : e.isDrag;\n\n if (!datas.datas) {\n datas.datas = {};\n }\n\n return {\n isDrag,\n ...params,\n moveable,\n target: moveable.state.target,\n clientX: e.clientX,\n clientY: e.clientY,\n inputEvent: e.inputEvent,\n currentTarget: moveable,\n lastEvent: datas.lastEvent,\n isDouble: e.isDouble,\n datas: datas.datas,\n isFirstDrag: !!e.isFirstDrag,\n } as any;\n}\nexport function catchEvent = MoveableProps>(\n moveable: any,\n name: EventName,\n callback: (e: Props[EventName] extends ((e: infer P) => any) | undefined ? P : IObject) => void,\n): any {\n moveable._emitter.on(name, callback);\n}\n\nexport function triggerEvent = MoveableProps>(\n moveable: any,\n name: EventName,\n params: Props[EventName] extends ((e: infer P) => any) | undefined ? P : IObject,\n isManager?: boolean,\n isRequest?: boolean,\n): any {\n return moveable.triggerEvent(\n name,\n params,\n isManager,\n isRequest,\n );\n}\n\nexport function getComputedStyle(el: Element, pseudoElt?: string | null) {\n return getWindow(el).getComputedStyle(el, pseudoElt);\n}\n\nexport function filterAbles(\n ables: Able[], methods: Array,\n triggerAblesSimultaneously?: boolean,\n) {\n const enabledAbles: IObject = {};\n const ableGroups: IObject = {};\n\n return ables.filter(able => {\n const name = able.name;\n\n if (enabledAbles[name] || !methods.some(method => able[method])) {\n return false;\n }\n if (!triggerAblesSimultaneously && able.ableGroup) {\n if (ableGroups[able.ableGroup]) {\n return false;\n }\n ableGroups[able.ableGroup] = true;\n }\n enabledAbles[name] = true;\n return true;\n });\n}\n\nexport function equals(a1: any, a2: any) {\n return a1 === a2 || (a1 == null && a2 == null);\n}\n\nexport function selectValue(...values: any[]): T {\n const length = values.length - 1;\n for (let i = 0; i < length; ++i) {\n const value = values[i];\n\n if (!isUndefined(value)) {\n return value;\n }\n }\n\n return values[length];\n}\n\nexport function groupBy(arr: T[], func: (el: T, index: number, arr: T[]) => any) {\n const groups: T[][] = [];\n const groupKeys: any[] = [];\n\n arr.forEach((el, index) => {\n const groupKey = func(el, index, arr);\n const keyIndex = groupKeys.indexOf(groupKey);\n const group = groups[keyIndex] || [];\n\n if (keyIndex === -1) {\n groupKeys.push(groupKey);\n groups.push(group);\n }\n group.push(el);\n });\n return groups;\n}\nexport function groupByMap(arr: T[], func: (el: T, index: number, arr: T[]) => string | number) {\n const groups: T[][] = [];\n const groupKeys: IObject = {};\n\n arr.forEach((el, index) => {\n const groupKey = func(el, index, arr);\n let group = groupKeys[groupKey];\n\n if (!group) {\n group = [];\n groupKeys[groupKey] = group;\n groups.push(group);\n }\n group.push(el);\n });\n return groups;\n}\nexport function flat(arr: T[][]): T[] {\n return arr.reduce((prev, cur) => {\n return prev.concat(cur);\n }, []);\n}\n\nexport function equalSign(a: number, b: number) {\n return (a >= 0 && b >= 0) || (a < 0 && b < 0);\n}\n\nexport function maxOffset(...args: number[]) {\n args.sort((a, b) => abs(b) - abs(a));\n\n return args[0];\n}\nexport function minOffset(...args: number[]) {\n args.sort((a, b) => abs(a) - abs(b));\n\n return args[0];\n}\n\nexport function calculateInversePosition(matrix: number[], pos: number[], n: number) {\n return calculate(\n invert(matrix, n),\n convertPositionMatrix(pos, n),\n n,\n );\n}\nexport function convertDragDist(state: MoveableManagerState, e: any) {\n const {\n is3d,\n rootMatrix,\n } = state;\n const n = is3d ? 4 : 3;\n [\n e.distX, e.distY,\n ] = calculateInversePosition(rootMatrix, [e.distX, e.distY], n);\n\n return e;\n}\n\nexport function calculatePadding(\n matrix: number[],\n pos: number[],\n added: number[],\n n: number,\n) {\n if (!added[0] && !added[1]) {\n return pos;\n }\n\n const xAdded = calculatePosition(matrix, [normalized(added[0] || 1), 0], n);\n const yAdded = calculatePosition(matrix, [0, normalized(added[1] || 1)], n);\n const nextAdded = calculatePosition(matrix, [\n added[0] / getDistSize(xAdded),\n added[1] / getDistSize(yAdded),\n ], n);\n\n return plus(pos, nextAdded);\n}\n\nexport function convertCSSSize(value: number, size: number, isRelative?: boolean) {\n return isRelative ? `${value / size * 100}%` : `${value}px`;\n}\n\nexport function getTinyDist(v: number) {\n return abs(v) <= TINY_NUM ? 0 : v;\n}\n\nexport function viewDraggingPrefix(ableName: string) {\n return prefix(`${ableName}-view-dragging`);\n}\nexport function getDirectionViewClassName(ableName: string) {\n return (moveable: MoveableManagerInterface) => {\n if (!moveable.isDragging(ableName)) {\n return \"\";\n }\n const data = getGestoData(moveable, ableName);\n const deg = data.deg;\n if (!deg) {\n return \"\";\n }\n return prefix(`view-control-rotation${deg}`);\n };\n}\nexport function getDirectionCondition(ableName: string, checkAbles: string[] = [ableName]) {\n return (moveable: any, e: any) => {\n if (e.isRequest) {\n if (checkAbles.some(name => e.requestAble === name)) {\n return e.parentDirection!;\n } else {\n return false;\n }\n }\n const target = e.inputEvent.target;\n\n return hasClass(target, prefix(\"direction\")) && (!ableName || hasClass(target, prefix(ableName)));\n };\n}\n\nexport function convertTransformInfo(transforms: string[], state: MoveableManagerState, index: number) {\n const matrixInfos = parse(transforms, {\n \"x%\": v => v / 100 * state.offsetWidth,\n \"y%\": v => v / 100 * state.offsetHeight,\n });\n\n const beforeFunctionTexts = transforms.slice(0, index < 0 ? undefined : index);\n const beforeFunctionTexts2 = transforms.slice(0, index < 0 ? undefined : index + 1);\n const targetFunctionText = transforms[index] || \"\";\n const afterFunctionTexts = index < 0 ? [] : transforms.slice(index);\n const afterFunctionTexts2 = index < 0 ? [] : transforms.slice(index + 1);\n\n const beforeFunctions = matrixInfos.slice(0, index < 0 ? undefined : index);\n const beforeFunctions2 = matrixInfos.slice(0, index < 0 ? undefined : index + 1);\n const targetFunction = matrixInfos[index] ?? parse([\"\"])[0];\n const afterFunctions = index < 0 ? [] : matrixInfos.slice(index);\n const afterFunctions2 = index < 0 ? [] : matrixInfos.slice(index + 1);\n const targetFunctions = targetFunction ? [targetFunction] : [];\n\n\n const beforeFunctionMatrix = toMat(beforeFunctions);\n const beforeFunctionMatrix2 = toMat(beforeFunctions2);\n const afterFunctionMatrix = toMat(afterFunctions);\n const afterFunctionMatrix2 = toMat(afterFunctions2);\n const allFunctionMatrix = multiply(\n beforeFunctionMatrix,\n afterFunctionMatrix,\n 4,\n );\n return {\n transforms,\n beforeFunctionMatrix,\n beforeFunctionMatrix2,\n targetFunctionMatrix: toMat(targetFunctions),\n afterFunctionMatrix,\n afterFunctionMatrix2,\n allFunctionMatrix,\n beforeFunctions,\n beforeFunctions2,\n targetFunction: targetFunctions[0],\n afterFunctions,\n afterFunctions2,\n beforeFunctionTexts,\n beforeFunctionTexts2,\n targetFunctionText,\n afterFunctionTexts,\n afterFunctionTexts2,\n };\n}\n\nexport function isArrayFormat(arr: any): arr is ArrayFormat {\n if (!arr || !isObject(arr)) {\n return false;\n }\n if (isNode(arr)) {\n return false;\n }\n return isArray(arr) || \"length\" in arr;\n}\n\nexport function getRefTarget(\n target: MoveableRefType | Window, isSelector: true): T | null;\nexport function getRefTarget(\n target: MoveableRefType | Window, isSelector?: boolean): T | string | null;\nexport function getRefTarget(\n target: MoveableRefType | Window,\n isSelector?: boolean,\n): any {\n if (!target) {\n return null;\n }\n if (isNode(target)) {\n return target;\n }\n if (isString(target)) {\n if (isSelector) {\n return document.querySelector(target);\n }\n return target;\n }\n if (isFunction(target)) {\n return target();\n }\n if (isWindow(target)) {\n return target;\n }\n if (\"current\" in target) {\n return target.current;\n }\n return target;\n}\n\nexport function getRefTargets(\n targets: MoveableRefTargetType,\n isSelector: true): Array;\nexport function getRefTargets(\n targets: MoveableRefTargetType,\n isSelector?: boolean): MoveableRefTargetsResultType;\nexport function getRefTargets(targets: MoveableRefTargetType, isSelector?: boolean): any[] {\n if (!targets) {\n return [];\n }\n const userTargets = isArrayFormat(targets) ? [].slice.call(targets) : [targets];\n\n return userTargets.reduce((prev, target) => {\n if (isString(target) && isSelector) {\n return [...prev, ...[].slice.call(document.querySelectorAll(target))];\n }\n if (isArray(target)) {\n prev.push(getRefTargets(target, isSelector));\n } else {\n prev.push(getRefTarget(target, isSelector));\n }\n return prev;\n }, [] as MoveableRefTargetsResultType);\n}\n\nexport function minmax(...values: number[]) {\n return [Math.min(...values), Math.max(...values)];\n}\n\n\nexport function getAbsoluteRotation(pos1: number[], pos2: number[], direction: number) {\n let deg = getRad(pos1, pos2) / Math.PI * 180;\n\n deg = direction >= 0 ? deg : 180 - deg;\n deg = deg >= 0 ? deg : 360 + deg;\n\n return deg;\n}\n\n\nexport function getDragDistByState(state: MoveableManagerState, dist: number[]) {\n const {\n rootMatrix,\n is3d,\n } = state;\n const n = is3d ? 4 : 3;\n\n let inverseMatrix = invert(rootMatrix, n);\n\n if (!is3d) {\n inverseMatrix = convertDimension(inverseMatrix, 3, 4);\n }\n inverseMatrix[12] = 0;\n inverseMatrix[13] = 0;\n inverseMatrix[14] = 0;\n\n return calculateMatrixDist(inverseMatrix, dist);\n}\n\nexport function getSizeDistByDist(\n startSize: number[],\n dist: number[],\n ratio: number,\n direction: number[],\n keepRatio?: boolean,\n) {\n const [startOffsetWidth, startOffsetHeight] = startSize;\n let distWidth = 0;\n let distHeight = 0;\n\n if (keepRatio && startOffsetWidth && startOffsetHeight) {\n const rad = getRad([0, 0], dist);\n const standardRad = getRad([0, 0], direction);\n const size = getDistSize(dist);\n const signSize = Math.cos(rad - standardRad) * size;\n\n if (!direction[0]) {\n // top, bottom\n distHeight = signSize;\n distWidth = distHeight * ratio;\n } else if (!direction[1]) {\n // left, right\n distWidth = signSize;\n distHeight = distWidth / ratio;\n } else {\n // two-way\n const startWidthSize = direction[0] * startOffsetWidth;\n const startHeightSize = direction[1] * startOffsetHeight;\n\n let secondRad = Math.atan2(startWidthSize + dist[0], startHeightSize + dist[1]);\n let firstRad = Math.atan2(startWidthSize, startHeightSize);\n\n if (secondRad < 0) {\n secondRad += Math.PI * 2;\n }\n if (firstRad < 0) {\n firstRad += Math.PI * 2;\n }\n let rad = 0;\n\n if (abs(secondRad - firstRad) < Math.PI / 2 || abs(secondRad - firstRad) > Math.PI / 2 * 3) {\n rad = secondRad - firstRad;\n } else {\n firstRad += Math.PI;\n rad = secondRad - firstRad;\n }\n if (rad > Math.PI * 2) {\n rad -= Math.PI * 2;\n } else if (rad > Math.PI) {\n rad = 2 * Math.PI - rad;\n } else if (rad < -Math.PI) {\n rad = -2 * Math.PI - rad;\n }\n // 180\n // -1, -1, // 1, -1\n // 270 90\n // -1, 1 // 1, 1\n // 0\n const distSize = getDistSize([startWidthSize + dist[0], startHeightSize + dist[1]]) * Math.cos(rad);\n\n distWidth = distSize * Math.sin(firstRad) - startWidthSize;\n distHeight = distSize * Math.cos(firstRad) - startHeightSize;\n\n if (direction[0] < 0) {\n distWidth *= -1;\n }\n if (direction[1] < 0) {\n distHeight *= -1;\n }\n }\n } else {\n distWidth = direction[0] * dist[0];\n distHeight = direction[1] * dist[1];\n }\n\n return [distWidth, distHeight];\n}\nexport function getOffsetSizeDist(\n sizeDirection: number[],\n keepRatio: boolean,\n datas: any,\n e: any,\n) {\n const {\n ratio,\n startOffsetWidth,\n startOffsetHeight,\n } = datas;\n let distWidth = 0;\n let distHeight = 0;\n const {\n distX,\n distY,\n pinchScale,\n parentDistance,\n parentDist,\n parentScale,\n } = e;\n const startFixedDirection = datas.fixedDirection;\n const directionsDists = [0, 1].map(index => {\n return abs(sizeDirection[index] - startFixedDirection[index]);\n });\n const directionRatios = [0, 1].map(index => {\n let dist = directionsDists[index];\n\n if (dist !== 0) {\n dist = 2 / dist;\n }\n return dist;\n });\n if (parentDist) {\n distWidth = parentDist[0];\n distHeight = parentDist[1];\n\n if (keepRatio) {\n if (!distWidth) {\n distWidth = distHeight * ratio;\n } else if (!distHeight) {\n distHeight = distWidth / ratio;\n }\n }\n } else if (isNumber(pinchScale)) {\n distWidth = (pinchScale - 1) * startOffsetWidth;\n distHeight = (pinchScale - 1) * startOffsetHeight;\n } else if (parentScale) {\n distWidth = (parentScale[0] - 1) * startOffsetWidth;\n distHeight = (parentScale[1] - 1) * startOffsetHeight;\n } else if (parentDistance) {\n const scaleX = startOffsetWidth * directionsDists[0];\n const scaleY = startOffsetHeight * directionsDists[1];\n const ratioDistance = getDistSize([scaleX, scaleY]);\n\n distWidth = parentDistance / ratioDistance * scaleX * directionRatios[0];\n distHeight = parentDistance / ratioDistance * scaleY * directionRatios[1];\n } else {\n let dist = getDragDist({ datas, distX, distY });\n\n dist = directionRatios.map((ratio, i) => {\n return dist[i] * ratio;\n });\n\n [distWidth, distHeight] = getSizeDistByDist(\n [startOffsetWidth, startOffsetHeight],\n dist,\n ratio,\n sizeDirection,\n keepRatio,\n );\n }\n return {\n // direction,\n // sizeDirection,\n distWidth,\n distHeight,\n };\n}\n\nexport function convertTransformUnit(\n origin: string,\n xy?: boolean,\n): { x?: string; y?: string; value?: string; } {\n if (xy) {\n if (origin === \"left\") {\n return { x: \"0%\", y: \"50%\" };\n } else if (origin === \"top\") {\n return { x: \"50%\", y: \"50%\" };\n } else if (origin === \"center\") {\n return { x: \"50%\", y: \"50%\" };\n } else if (origin === \"right\") {\n return { x: \"100%\", y: \"50%\" };\n } else if (origin === \"bottom\") {\n return { x: \"50%\", y: \"100%\" };\n }\n const [left, right] = origin.split(\" \");\n const leftOrigin = convertTransformUnit(left || \"\");\n const rightOrigin = convertTransformUnit(right || \"\");\n const originObject = {\n ...leftOrigin,\n ...rightOrigin,\n };\n\n const nextOriginObject = {\n x: \"50%\",\n y: \"50%\",\n };\n if (originObject.x) {\n nextOriginObject.x = originObject.x;\n }\n if (originObject.y) {\n nextOriginObject.y = originObject.y;\n }\n if (originObject.value) {\n if (originObject.x && !originObject.y) {\n nextOriginObject.y = originObject.value;\n }\n if (!originObject.x && originObject.y) {\n nextOriginObject.x = originObject.value;\n }\n }\n return nextOriginObject;\n }\n if (origin === \"left\") {\n return { x: \"0%\" };\n }\n if (origin === \"right\") {\n return { x: \"100%\" };\n }\n if (origin === \"top\") {\n return { y: \"0%\" };\n }\n if (origin === \"bottom\") {\n return { y: \"100%\" };\n }\n if (!origin) {\n return {};\n }\n if (origin === \"center\") {\n return { value: \"50%\" };\n }\n return { value: origin };\n}\nexport function convertTransformOriginArray(transformOrigin: string, width: number, height: number) {\n const { x, y } = convertTransformUnit(transformOrigin, true);\n\n return [\n convertUnitSize(x!, width) || 0,\n convertUnitSize(y!, height) || 0,\n ];\n}\n\nexport function rotatePosesInfo(poses: number[][], origin: number[], rad: number) {\n const prevPoses = poses.map((pos) => minus(pos, origin));\n const nextPoses = prevPoses.map((pos) => rotate(pos, rad));\n\n return {\n prev: prevPoses,\n next: nextPoses,\n result: nextPoses.map(pos => plus(pos, origin)),\n };\n}\n\n\n\nexport function isDeepArrayEquals(arr1: any[], arr2: any[]): boolean {\n return arr1.length === arr2.length && arr1.every((value1, i) => {\n const value2 = arr2[i];\n const isArray1 = isArray(value1);\n const isArray2 = isArray(value2);\n if (isArray1 && isArray2) {\n return isDeepArrayEquals(value1, value2);\n } else if (!isArray1 && !isArray2) {\n return value1 === value2;\n }\n return false;\n });\n}\n\n\nexport function watchValue(\n moveable: any,\n property: string,\n nextValue: T,\n valueKey: (value: T) => string | number,\n defaultValue?: T,\n): T {\n const store = (moveable as any)._store;\n let prevValue = store[property];\n\n if (!(property in store)) {\n if (defaultValue != null) {\n store[property] = defaultValue;\n prevValue = defaultValue;\n } else {\n store[property] = nextValue;\n return nextValue;\n }\n }\n if (prevValue === nextValue || valueKey(prevValue) === valueKey(nextValue)) {\n return prevValue;\n }\n\n store[property] = nextValue;\n return nextValue;\n}\n\n\nexport function sign(value: number) {\n return value >= 0 ? 1 : -1;\n}\n\n\nexport function abs(value: number) {\n return Math.abs(value);\n}\n\n\nexport function countEach(count: number, callback: (index: number) => T): T[] {\n return counter(count).map(index => callback(index));\n}\n\n\nexport function getPaddingBox(padding: PaddingBox | number) {\n if (isNumber(padding)) {\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding,\n };\n }\n\n return {\n left: padding.left || 0,\n top: padding.top || 0,\n right: padding.right || 0,\n bottom: padding.bottom || 0,\n };\n}\n","import {\n convertCSStoMatrix, convertDimension,\n createIdentityMatrix, createOriginMatrix, createScaleMatrix,\n} from \"@scena/matrix\";\nimport { getCachedStyle } from \"../store/Store\";\nimport { IS_WEBKIT, IS_SAFARI_ABOVE15, IS_FIREFOX, IS_CHROMIUM109 } from \"../consts\";\nimport { MatrixInfo } from \"../types\";\nimport {\n getOffsetInfo, getElementTransform,\n getTransformMatrix, getPositionFixedInfo,\n convert3DMatrixes, getOffsetPosInfo,\n getSVGMatrix, getBodyOffset, getAbsoluteMatrix,\n} from \"../utils\";\nimport { getDocumentBody, getDocumentElement } from \"@daybrush/utils\";\nimport { parseMat } from \"css-to-mat\";\n\n\nexport function getShadowRoot(parentElement: HTMLElement | SVGElement) {\n if (parentElement && parentElement.getRootNode) {\n const rootNode = parentElement.getRootNode();\n\n if (rootNode.nodeType === 11) {\n return rootNode;\n }\n }\n return;\n}\n\n\nfunction getIndividualTransforms(getStyle: (property: string) => any) {\n const scale = getStyle(\"scale\") as string;\n const rotate = getStyle(\"rotate\") as string;\n const translate = getStyle(\"translate\") as string;\n const individualTransforms: string[] = [];\n\n if (translate && translate !== \"0px\" && translate !== \"none\") {\n individualTransforms.push(`translate(${translate.split(/\\s+/).join(\",\")})`);\n }\n if (rotate && rotate !== \"1\" && rotate !== \"none\") {\n individualTransforms.push(`rotate(${rotate})`);\n }\n if (scale && scale !== \"1\" && scale !== \"none\") {\n individualTransforms.push(`scale(${scale.split(/\\s+/).join(\",\")})`);\n }\n return individualTransforms;\n}\n\nexport interface MatrixStackInfo {\n zoom: number;\n offsetContainer: HTMLElement;\n matrixes: MatrixInfo[];\n targetMatrix: number[];\n transformOrigin: number[];\n targetOrigin: number[];\n is3d: boolean;\n hasFixed: boolean;\n}\nexport function getMatrixStackInfo(\n target: SVGElement | HTMLElement,\n container?: SVGElement | HTMLElement | null,\n checkContainer?: boolean,\n): MatrixStackInfo {\n let el: SVGElement | HTMLElement | null = target;\n const matrixes: MatrixInfo[] = [];\n const documentElement = getDocumentElement(target) || getDocumentBody(target);\n let requestEnd = !checkContainer && target === container || target === documentElement;\n let isEnd = requestEnd;\n let is3d = false;\n let n = 3;\n let transformOrigin!: number[];\n let targetTransformOrigin!: number[];\n let targetMatrix!: number[];\n\n let hasFixed = false;\n let offsetContainer = getOffsetInfo(container, container, true).offsetParent;\n let zoom = 1;\n\n while (el && !isEnd) {\n isEnd = requestEnd;\n const getStyle = getCachedStyle(el);\n const position = getStyle(\"position\");\n const transform = getElementTransform(el);\n const isFixed = position === \"fixed\";\n const individualTransforms = getIndividualTransforms(getStyle);\n let matrix: number[] = convertCSStoMatrix(getTransformMatrix(transform));\n let offsetParent: HTMLElement;\n let isOffsetEnd = false;\n let isStatic = false;\n let parentClientLeft = 0;\n let parentClientTop = 0;\n let fixedClientLeft = 0;\n let fixedClientTop = 0;\n let fixedInfo: {\n hasTransform: boolean;\n fixedContainer: HTMLElement | null;\n } = {\n hasTransform: false,\n fixedContainer: null,\n };\n\n if (isFixed) {\n hasFixed = true;\n fixedInfo = getPositionFixedInfo(el);\n offsetContainer = fixedInfo.fixedContainer!;\n }\n\n // convert 3 to 4\n const length = matrix.length;\n\n if (!is3d && (length === 16 || individualTransforms.length)) {\n is3d = true;\n n = 4;\n\n convert3DMatrixes(matrixes);\n if (targetMatrix) {\n targetMatrix = convertDimension(targetMatrix, 3, 4);\n }\n }\n if (is3d && length === 9) {\n matrix = convertDimension(matrix, 3, 4);\n }\n const {\n tagName,\n hasOffset,\n isSVG,\n origin,\n targetOrigin,\n offset: offsetPos,\n } = getOffsetPosInfo(el, target);\n let [\n offsetLeft,\n offsetTop,\n ] = offsetPos;\n\n // no target with svg\n if (tagName === \"svg\" && !(el as SVGSVGElement).ownerSVGElement && targetMatrix) {\n // scale matrix for svg's SVGElements.\n matrixes.push({\n type: \"target\",\n target: el,\n matrix: getSVGMatrix(el as SVGSVGElement, n),\n });\n matrixes.push({\n type: \"offset\",\n target: el,\n matrix: createIdentityMatrix(n),\n });\n }\n\n\n const targetZoom = parseFloat(getStyle(\"zoom\")) || 1;\n\n if (isFixed) {\n offsetParent = fixedInfo.fixedContainer!;\n isOffsetEnd = true;\n } else {\n const offsetInfo = getOffsetInfo(el, container, false, true, getStyle);\n const offsetZoom = offsetInfo.offsetZoom;\n\n offsetParent = offsetInfo.offsetParent;\n isOffsetEnd = offsetInfo.isEnd;\n isStatic = offsetInfo.isStatic;\n zoom *= offsetZoom;\n\n if ((offsetInfo.isCustomElement || offsetZoom !== 1) && isStatic) {\n offsetLeft -= offsetParent.offsetLeft;\n offsetTop -= offsetParent.offsetTop;\n } else if (IS_FIREFOX || IS_CHROMIUM109) {\n const parentSlotElement = offsetInfo.parentSlotElement;\n\n if (parentSlotElement) {\n let customOffsetParent: HTMLElement | null = offsetParent;\n let customOffsetLeft = 0;\n let customOffsetTop = 0;\n\n while (customOffsetParent) {\n if (!getShadowRoot(customOffsetParent)) {\n break;\n }\n customOffsetLeft += customOffsetParent.offsetLeft;\n customOffsetTop += customOffsetParent.offsetTop;\n customOffsetParent = customOffsetParent.offsetParent as HTMLElement;\n }\n offsetLeft -= customOffsetLeft;\n offsetTop -= customOffsetTop;\n }\n }\n }\n\n if (\n IS_WEBKIT && !IS_SAFARI_ABOVE15\n && hasOffset && !isSVG && isStatic\n && (position === \"relative\" || position === \"static\")\n ) {\n offsetLeft -= offsetParent.offsetLeft;\n offsetTop -= offsetParent.offsetTop;\n requestEnd = requestEnd || isOffsetEnd;\n }\n\n\n if (isFixed) {\n if (hasOffset && fixedInfo.hasTransform) {\n // border\n fixedClientLeft = offsetParent.clientLeft;\n fixedClientTop = offsetParent.clientTop;\n }\n } else {\n if (hasOffset && offsetContainer !== offsetParent) {\n // border\n parentClientLeft = offsetParent.clientLeft;\n parentClientTop = offsetParent.clientTop;\n }\n if (hasOffset && offsetParent === documentElement) {\n const margin = getBodyOffset(el, false);\n\n offsetLeft += margin[0];\n offsetTop += margin[1];\n }\n }\n\n matrixes.push({\n type: \"target\",\n target: el,\n matrix: getAbsoluteMatrix(matrix, n, origin),\n });\n\n if (individualTransforms.length) {\n matrixes.push({\n type: \"offset\",\n target: el,\n matrix: createIdentityMatrix(n),\n });\n\n matrixes.push({\n type: \"target\",\n target: el,\n matrix: getAbsoluteMatrix(parseMat(individualTransforms), n, origin),\n });\n }\n if (hasOffset) {\n const isElementTarget = el === target;\n const scrollLeft = isElementTarget ? 0 : el.scrollLeft;\n const scrollTop = isElementTarget ? 0 : el.scrollTop;\n\n matrixes.push({\n type: \"offset\",\n target: el,\n matrix: createOriginMatrix([\n offsetLeft - scrollLeft + parentClientLeft - fixedClientLeft,\n offsetTop - scrollTop + parentClientTop - fixedClientTop,\n ], n),\n });\n } else {\n // svg\n matrixes.push({\n type: \"offset\",\n target: el,\n origin,\n });\n }\n // transform으로 계산되지 않는 zoom을 위한 (0, 0) 을 기준 matrix 추가.\n if (targetZoom !== 1) {\n matrixes.push({\n type: \"zoom\",\n target: el,\n matrix: getAbsoluteMatrix(createScaleMatrix([targetZoom, targetZoom], n), n, [0, 0]),\n });\n }\n if (!targetMatrix) {\n targetMatrix = matrix;\n }\n if (!transformOrigin) {\n transformOrigin = origin;\n }\n if (!targetTransformOrigin) {\n targetTransformOrigin = targetOrigin;\n }\n\n if (isEnd || isFixed) {\n break;\n } else {\n el = offsetParent;\n requestEnd = isOffsetEnd;\n }\n if (!checkContainer || el === documentElement) {\n isEnd = requestEnd;\n }\n }\n if (!targetMatrix) {\n targetMatrix = createIdentityMatrix(n);\n }\n if (!transformOrigin) {\n transformOrigin = [0, 0];\n }\n if (!targetTransformOrigin) {\n targetTransformOrigin = [0, 0];\n }\n\n return {\n zoom,\n offsetContainer,\n matrixes,\n targetMatrix,\n transformOrigin,\n targetOrigin: targetTransformOrigin,\n is3d,\n hasFixed,\n };\n}\n","import { find, getWindow } from \"@daybrush/utils\";\nimport { getClientRect } from \"../utils\";\nimport { MoveableClientRect } from \"../types\";\nimport { getMatrixStackInfo, MatrixStackInfo } from \"../utils/getMatrixStackInfo\";\n\nlet cacheStyleMap: Map;\n}> | null = null;\nlet clientRectStyleMap: Map | null = null;\n\nlet matrixContainerInfos: Array<[\n [SVGElement | HTMLElement, SVGElement | HTMLElement | null | undefined],\n MatrixStackInfo\n]> | null = null;\n\nexport type GetStyle = (propertyName: string) => any;\nexport function setStoreCache(useCache?: boolean) {\n if (useCache) {\n if (window.Map) {\n cacheStyleMap = new Map();\n clientRectStyleMap = new Map();\n }\n matrixContainerInfos = [];\n } else {\n cacheStyleMap = null;\n matrixContainerInfos = null;\n clientRectStyleMap = null;\n }\n}\n\nexport function getCachedClientRect(el: HTMLElement | SVGElement): MoveableClientRect {\n const clientRect = clientRectStyleMap?.get(el);\n\n if (clientRect) {\n return clientRect;\n }\n const nextClientRect = getClientRect(el, true);\n\n if (clientRectStyleMap) {\n clientRectStyleMap.set(el, nextClientRect);\n }\n return nextClientRect;\n}\n\nexport function getCachedMatrixContainerInfo(\n target: SVGElement | HTMLElement,\n container?: SVGElement | HTMLElement | null,\n) {\n if (matrixContainerInfos) {\n const result = find(matrixContainerInfos, info => info[0][0] == target && info[0][1] == container);\n\n if (result) {\n return result[1];\n }\n }\n const result = getMatrixStackInfo(target, container, true);\n\n if (matrixContainerInfos) {\n matrixContainerInfos.push([[target, container], result]);\n }\n return result;\n}\nexport function getCachedStyle(element: Element): GetStyle {\n let cache = cacheStyleMap?.get(element);\n\n if (!cache) {\n const nextStyle = getWindow(element).getComputedStyle(element);\n\n if (!cacheStyleMap) {\n return (property: string) => {\n return (nextStyle as any)[property];\n };\n }\n cache = {\n style: nextStyle,\n cached: {},\n };\n cacheStyleMap.set(element, cache);\n }\n const cached = cache.cached;\n const style = cache.style;\n\n return (property: string) => {\n if (!(property in cached)) {\n cached[property] = (style as any)[property];\n }\n return cached[property];\n };\n}\n","import { Able, MoveableGroupInterface, MoveableManagerInterface, MoveableManagerState } from \"./types\";\nimport CustomGesto, { setCustomDrag } from \"./gesto/CustomGesto\";\nimport { getAbsolutePosesByState } from \"./utils\";\nimport { calculate, createRotateMatrix } from \"@scena/matrix\";\nimport { getPosByDirection } from \"./gesto/GestoUtils\";\n\nexport function fillChildEvents(\n moveable: MoveableGroupInterface,\n name: string,\n e: any,\n): any[] {\n const datas = e.originalDatas;\n\n datas.groupable = datas.groupable || {};\n\n const groupableDatas = datas.groupable;\n\n groupableDatas.childDatas = groupableDatas.childDatas || [];\n\n const childDatas = groupableDatas.childDatas;\n\n return moveable.moveables.map((_, i) => {\n childDatas[i] = childDatas[i] || {};\n childDatas[i][name] = childDatas[i][name] || {};\n\n return {\n ...e,\n isRequestChild: true,\n datas: childDatas[i][name],\n originalDatas: childDatas[i],\n };\n });\n}\nexport function triggerChildGesto(\n moveable: MoveableGroupInterface,\n able: Able,\n type: string,\n delta: number[],\n e: any,\n isConvert: boolean,\n ableName: string,\n) {\n const isStart = !!type.match(/Start$/g);\n const isEnd = !!type.match(/End$/g);\n const isPinch = e.isPinch;\n const datas = e.datas;\n const events = fillChildEvents(moveable, able.name, e);\n const moveables = moveable.moveables;\n\n const childEvents: any[] = [];\n const eventParams = events.map((ev, i) => {\n const childMoveable = moveables[i];\n const state = childMoveable.state as MoveableManagerState;\n const gestos = state.gestos;\n let childEvent: any = ev;\n\n if (isStart) {\n childEvent = new CustomGesto(ableName).dragStart(delta, ev);\n childEvents.push(childEvent);\n } else {\n if (!gestos[ableName]) {\n gestos[ableName] = datas.childGestos[i];\n }\n if (!gestos[ableName]) {\n return;\n }\n childEvent = setCustomDrag(ev, state, delta, isPinch, isConvert, ableName);\n childEvents.push(childEvent);\n }\n const result = (able as any)[type]!(childMoveable, { ...childEvent, parentFlag: true });\n\n if (isEnd) {\n gestos[ableName] = null;\n }\n return result;\n });\n if (isStart) {\n datas.childGestos = moveables.map(child => child.state.gestos[ableName]);\n }\n return {\n eventParams,\n childEvents,\n };\n}\nexport function triggerChildAbles(\n moveable: MoveableGroupInterface,\n able: T,\n type: keyof T & string,\n e: any,\n eachEvent: (movebale: MoveableManagerInterface, ev: any) => any = (_, ev) => ev,\n callback?: (moveable: MoveableManagerInterface, ev: any, result: any, index: number) => any,\n) {\n const isEnd = !!type.match(/End$/g);\n const events = fillChildEvents(moveable, able.name, e);\n const moveables = moveable.moveables;\n const childs = events.map((ev, i) => {\n const childMoveable = moveables[i];\n let childEvent = ev;\n\n childEvent = eachEvent(childMoveable, ev);\n\n const result = (able as any)[type]!(childMoveable, { ...childEvent, parentFlag: true });\n\n result && callback && callback(childMoveable, ev, result, i);\n\n if (isEnd) {\n childMoveable.state.gestos = {};\n }\n return result;\n });\n\n return childs;\n}\n\n\nexport function startChildDist(\n moveable: MoveableGroupInterface,\n child: MoveableManagerInterface,\n parentDatas: any,\n childEvent: any,\n) {\n const fixedDirection = parentDatas.fixedDirection;\n const fixedPosition = parentDatas.fixedPosition;\n\n const startPositions = childEvent.datas.startPositions || getAbsolutePosesByState(child.state);\n const pos = getPosByDirection(startPositions, fixedDirection);\n const [originalX, originalY] = calculate(\n createRotateMatrix(-moveable.rotation / 180 * Math.PI, 3),\n [pos[0] - fixedPosition[0], pos[1] - fixedPosition[1], 1],\n 3,\n );\n childEvent.datas.originalX = originalX;\n childEvent.datas.originalY = originalY;\n\n return childEvent;\n}\n","import { prefix, getControlTransform, getLineStyle, getProps, sign } from \"./utils\";\nimport {\n Renderer, MoveableManagerInterface,\n RenderDirections,\n} from \"./types\";\nimport { DIRECTION_INDEXES, DIRECTION_ROTATIONS, DIRECTIONS, DIRECTIONS4 } from \"./consts\";\nimport { IObject, throttle, getRad, getKeys } from \"@daybrush/utils\";\nimport { absDegree } from \"./ables/Snappable\";\n\nexport interface DirectionControlInfo {\n data: Record;\n classNames: string[];\n dir: string;\n}\n\n\nexport function renderDirectionControlsByInfos(\n moveable: MoveableManagerInterface>,\n ableName: string,\n renderDirections: DirectionControlInfo[],\n React: Renderer,\n): any[] {\n\n const {\n renderPoses,\n rotation: rotationRad,\n direction,\n } = moveable.getState();\n\n const {\n zoom,\n } = getProps(moveable.props, ableName as any);\n\n const degRotation = absDegree(rotationRad / Math.PI * 180);\n const directionMap: IObject = {};\n const renderState = moveable.renderState;\n if (!renderState.renderDirectionMap) {\n renderState.renderDirectionMap = {};\n }\n const renderDirectionMap = renderState.renderDirectionMap;\n\n renderDirections.forEach(({ dir }) => {\n directionMap[dir] = true;\n });\n\n const directionSign = sign(direction);\n return renderDirections.map(({ data, classNames, dir }) => {\n const indexes = DIRECTION_INDEXES[dir];\n\n if (!indexes || !directionMap[dir]) {\n return null;\n }\n renderDirectionMap[dir] = true;\n const directionRotation = (throttle(degRotation, 15) + directionSign * DIRECTION_ROTATIONS[dir] + 720) % 180;\n\n const dataAttrs: Record = {};\n\n getKeys(data).forEach(name => {\n dataAttrs[`data-${name}`] = data[name];\n });\n return (\n
renderPoses[index]))}>
\n );\n });\n}\nexport function renderDirectionControls(\n moveable: MoveableManagerInterface>,\n defaultDirections: string[],\n ableName: string,\n React: Renderer,\n): any[] {\n const {\n renderDirections: directions = defaultDirections,\n displayAroundControls,\n } = getProps(moveable.props, ableName as any);\n\n if (!directions) {\n return [];\n }\n const renderDirections = directions === true ? DIRECTIONS : directions;\n\n return [\n ...(displayAroundControls ? renderAroundControls(moveable, React, ableName, renderDirections) : []),\n ...renderDirectionControlsByInfos(\n moveable,\n ableName,\n renderDirections.map(dir => {\n return {\n data: {},\n classNames: [],\n dir,\n };\n }),\n React,\n ),\n ];\n}\n\nexport function renderLine(\n React: Renderer,\n direction: string,\n pos1: number[],\n pos2: number[],\n zoom: number,\n key: number | string,\n ...classNames: string[]\n): any {\n const rad = getRad(pos1, pos2);\n const rotation = direction ? (throttle(rad / Math.PI * 180, 15)) % 180 : -1;\n\n return
;\n}\n\nexport function renderEdgeLines(\n React: Renderer,\n ableName: string,\n edge: true | string[],\n poses: number[][],\n zoom: number,\n): any[] {\n const directions = edge === true ? DIRECTIONS4 : edge;\n\n return directions.map((direction, i) => {\n const [index1, index2] = DIRECTION_INDEXES[direction];\n\n if (index2 == null) {\n return;\n }\n return renderLine(React, direction, poses[index1], poses[index2], zoom, `${ableName}Edge${i}`, ableName);\n }).filter(Boolean);\n}\n\nexport function getRenderDirections(ableName: string) {\n return (\n moveable: MoveableManagerInterface>,\n React: Renderer,\n ) => {\n const edge = getProps(moveable.props, ableName as any).edge;\n\n if (edge && (edge === true || edge.length)) {\n return [\n ...renderEdgeLines(\n React,\n ableName,\n edge,\n moveable.getState().renderPoses,\n moveable.props.zoom!,\n ),\n ...renderDiagonalDirections(moveable, ableName, React),\n ];\n }\n return renderAllDirections(moveable, ableName, React);\n };\n}\n\nexport function renderAllDirections(\n moveable: MoveableManagerInterface>,\n ableName: string,\n React: Renderer,\n) {\n return renderDirectionControls(moveable, DIRECTIONS, ableName, React);\n}\n\nexport function renderDiagonalDirections(\n moveable: MoveableManagerInterface>,\n ableName: string,\n React: Renderer,\n): any[] {\n return renderDirectionControls(moveable, [\"nw\", \"ne\", \"sw\", \"se\"], ableName, React);\n}\n\nexport function renderAroundControls(\n moveable: MoveableManagerInterface>,\n React: Renderer,\n ableName?: string,\n renderDirections?: string[],\n): any[] {\n const renderState = moveable.renderState;\n if (!renderState.renderDirectionMap) {\n renderState.renderDirectionMap = {};\n }\n const {\n renderPoses,\n rotation: rotationRad,\n direction,\n } = moveable.getState();\n\n const renderDirectionMap = renderState.renderDirectionMap;\n\n const {\n zoom,\n } = moveable.props;\n const directionSign = sign(direction);\n const degRotation = rotationRad / Math.PI * 180;\n\n return (renderDirections || getKeys(renderDirectionMap)).map(dir => {\n const indexes = DIRECTION_INDEXES[dir];\n\n if (!indexes) {\n return null;\n }\n const directionRotation = (throttle(degRotation, 15) + directionSign * DIRECTION_ROTATIONS[dir] + 720) % 180;\n\n const classNames: string[] = [\"around-control\"];\n\n if (ableName) {\n classNames.push(\"direction\", ableName);\n }\n return (\n renderPoses[index]))}>\n );\n });\n}\n","import { getRad, throttle } from \"@daybrush/utils\";\nimport {\n BoundInfo, SnappableProps, BoundType,\n RotatableProps, MoveableManagerInterface, SnappableState,\n} from \"../../types\";\nimport { rotate, minus } from \"@scena/matrix\";\nimport { abs, getDistSize } from \"../../utils\";\nimport { TINY_NUM } from \"../../consts\";\n\nexport function checkBoundPoses(\n bounds: BoundType | false | undefined,\n verticalPoses: number[],\n horizontalPoses: number[],\n) {\n const {\n position = \"client\",\n left = -Infinity,\n top = -Infinity,\n right = Infinity,\n bottom = Infinity,\n } = bounds || {};\n const nextBounds = {\n position,\n left,\n top,\n right,\n bottom,\n };\n\n return {\n vertical: checkBounds(nextBounds, verticalPoses, true),\n horizontal: checkBounds(nextBounds, horizontalPoses, false),\n };\n}\nexport function getBounds(\n moveable: MoveableManagerInterface,\n externalBounds?: BoundType | false | null,\n) {\n const {\n containerClientRect: {\n clientHeight: containerHeight,\n clientWidth: containerWidth,\n clientLeft,\n clientTop,\n },\n snapOffset: {\n left: snapOffsetLeft,\n top: snapOffsetTop,\n right: snapOffsetRight,\n bottom: snapOffsetBottom,\n },\n } = moveable.state;\n const bounds = externalBounds || moveable.props.bounds || {} as BoundType;\n const position = bounds.position || \"client\";\n const isCSS = position === \"css\";\n const {\n left = -Infinity,\n top = -Infinity,\n } = bounds;\n let {\n right = isCSS ? -Infinity : Infinity,\n bottom = isCSS ? -Infinity : Infinity,\n } = bounds;\n\n if (isCSS) {\n right = containerWidth! + snapOffsetRight - snapOffsetLeft - right;\n bottom = containerHeight! + snapOffsetBottom - snapOffsetTop - bottom;\n }\n\n return {\n left: left + snapOffsetLeft - clientLeft!,\n right: right + snapOffsetLeft - clientLeft!,\n top: top + snapOffsetTop - clientTop!,\n bottom: bottom + snapOffsetTop - clientTop!,\n };\n}\nexport function checkBoundKeepRatio(\n moveable: MoveableManagerInterface,\n startPos: number[],\n endPos: number[],\n) {\n const {\n left,\n top,\n right,\n bottom,\n } = getBounds(moveable);\n\n const [endX, endY] = endPos;\n let [dx, dy] = minus(endPos, startPos);\n\n if (abs(dx) < TINY_NUM) {\n dx = 0;\n }\n if (abs(dy) < TINY_NUM) {\n dy = 0;\n }\n const isBottom = dy > 0;\n const isRight = dx > 0;\n\n const verticalInfo = {\n isBound: false,\n offset: 0,\n pos: 0,\n };\n const horizontalInfo = {\n isBound: false,\n offset: 0,\n pos: 0,\n };\n if (dx === 0 && dy === 0) {\n return {\n vertical: verticalInfo,\n horizontal: horizontalInfo,\n };\n } else if (dx === 0) {\n if (isBottom) {\n if (bottom < endY) {\n horizontalInfo.pos = bottom;\n horizontalInfo.offset = endY - bottom;\n }\n } else {\n if (top > endY) {\n horizontalInfo.pos = top;\n horizontalInfo.offset = endY - top;\n }\n }\n } else if (dy === 0) {\n if (isRight) {\n if (right < endX) {\n verticalInfo.pos = right;\n verticalInfo.offset = endX - right;\n }\n } else {\n if (left > endX) {\n verticalInfo.pos = left;\n verticalInfo.offset = endX - left;\n }\n }\n } else {\n // y - y1 = a * (x - x1)\n const a = dy / dx;\n const b = endPos[1] - a * endX;\n let y = 0;\n let x = 0;\n let isBound = false;\n\n if (isRight && right <= endX) {\n y = a * right + b;\n x = right;\n isBound = true;\n } else if (!isRight && endX <= left) {\n y = a * left + b;\n x = left;\n isBound = true;\n }\n if (isBound) {\n if (y < top || y > bottom) {\n isBound = false;\n }\n }\n if (!isBound) {\n if (isBottom && bottom <= endY) {\n y = bottom;\n x = (y - b) / a;\n isBound = true;\n } else if (!isBottom && endY <= top) {\n y = top;\n x = (y - b) / a;\n isBound = true;\n }\n }\n if (isBound) {\n verticalInfo.isBound = true;\n verticalInfo.pos = x;\n verticalInfo.offset = endX - x;\n\n horizontalInfo.isBound = true;\n horizontalInfo.pos = y;\n horizontalInfo.offset = endY - y;\n }\n }\n\n return {\n vertical: verticalInfo,\n horizontal: horizontalInfo,\n };\n}\nfunction checkBounds(\n bounds: Required,\n poses: number[],\n isVertical: boolean,\n): BoundInfo[] {\n // 0 [100 - 200] 300\n const startBoundPos = bounds[isVertical ? \"left\" : \"top\"];\n const endBoundPos = bounds[isVertical ? \"right\" : \"bottom\"];\n\n // 450\n const minPos = Math.min(...poses);\n const maxPos = Math.max(...poses);\n const boundInfos: BoundInfo[] = [];\n\n if (startBoundPos + 1 > minPos) {\n boundInfos.push({\n direction: \"start\",\n isBound: true,\n offset: minPos - startBoundPos,\n pos: startBoundPos,\n });\n }\n if (endBoundPos - 1 < maxPos) {\n boundInfos.push({\n direction: \"end\",\n isBound: true,\n offset: maxPos - endBoundPos,\n pos: endBoundPos,\n });\n }\n\n if (!boundInfos.length) {\n boundInfos.push({\n isBound: false,\n offset: 0,\n pos: 0,\n });\n }\n\n return boundInfos.sort((a, b) => abs(b.offset) - abs(a.offset));\n}\nexport function isBoundRotate(\n relativePoses: number[][],\n boundRect: { left: number, top: number, right: number, bottom: number },\n rad: number,\n) {\n const nextPoses = rad ? relativePoses.map(pos => rotate(pos, rad)) : relativePoses;\n\n return nextPoses.some(pos => {\n return (pos[0] < boundRect.left && abs(pos[0] - boundRect.left) > 0.1)\n || (pos[0] > boundRect.right && abs(pos[0] - boundRect.right) > 0.1)\n || (pos[1] < boundRect.top && abs(pos[1] - boundRect.top) > 0.1)\n || (pos[1] > boundRect.bottom && abs(pos[1] - boundRect.bottom) > 0.1);\n });\n}\nexport function boundRotate(\n vec: number[],\n boundPos: number,\n index: number,\n) {\n const r = getDistSize(vec);\n const nextPos = Math.sqrt(r * r - boundPos * boundPos) || 0;\n\n return [nextPos, -nextPos].sort((a, b) => {\n return abs(a - vec[index ? 0 : 1]) - abs(b - vec[index ? 0 : 1]);\n }).map(pos => {\n return getRad([0, 0], index ? [pos, boundPos] : [boundPos, pos]);\n });\n}\n\nexport function checkRotateBounds(\n moveable: MoveableManagerInterface,\n prevPoses: number[][],\n nextPoses: number[][],\n origin: number[],\n rotation: number,\n) {\n if (!moveable.props.bounds) {\n return [];\n }\n const rad = rotation * Math.PI / 180;\n\n const {\n left,\n top,\n right,\n bottom,\n } = getBounds(moveable);\n\n const relativeLeft = left - origin[0];\n const relativeRight = right - origin[0];\n const relativeTop = top - origin[1];\n const relativeBottom = bottom - origin[1];\n const boundRect = {\n left: relativeLeft,\n top: relativeTop,\n right: relativeRight,\n bottom: relativeBottom,\n };\n\n if (!isBoundRotate(nextPoses, boundRect, 0)) {\n return [];\n }\n const result: number[] = [];\n [\n [relativeLeft, 0],\n [relativeRight, 0],\n [relativeTop, 1],\n [relativeBottom, 1],\n ].forEach(([boundPos, index]) => {\n nextPoses.forEach(nextPos => {\n const relativeRad1 = getRad([0, 0], nextPos);\n\n result.push(...boundRotate(nextPos, boundPos, index)\n .map(relativeRad2 => rad + relativeRad2 - relativeRad1)\n .filter(nextRad => !isBoundRotate(prevPoses, boundRect, nextRad))\n .map(nextRad => throttle(nextRad * 180 / Math.PI, TINY_NUM)));\n });\n });\n\n return result;\n}\n","import { TINY_NUM } from \"@daybrush/utils\";\nimport { throttle } from \"@daybrush/utils\";\nimport {\n MoveableClientRect, MoveableManagerInterface,\n SnapDirectionPoses,\n SnapDirections, SnappableProps,\n SnappableState,\n} from \"../../types\";\nimport {\n calculatePosition,\n} from \"../../utils\";\nexport const VERTICAL_NAMES = [\"left\", \"right\", \"center\"] as const;\nexport const HORIZONTAL_NAMES = [\"top\", \"bottom\", \"middle\"] as const;\nexport const SNAP_SKIP_NAMES_MAP = {\n \"left\": \"start\",\n \"right\": \"end\",\n \"center\": \"center\",\n \"top\": \"start\",\n \"bottom\": \"end\",\n \"middle\": \"center\",\n};\n\nexport const VERTICAL_NAMES_MAP = {\n start: \"left\",\n end: \"right\",\n center: \"center\",\n} as const;\nexport const HORIZONTAL_NAMES_MAP = {\n start: \"top\",\n end: \"bottom\",\n center: \"middle\",\n} as const;\n\n\n\nexport function getInitialBounds() {\n return {\n left: false,\n top: false,\n right: false,\n bottom: false,\n };\n}\n\n\nexport function hasGuidelines(\n moveable: MoveableManagerInterface,\n ableName: string\n): moveable is MoveableManagerInterface {\n const {\n props: {\n snappable,\n bounds,\n innerBounds,\n verticalGuidelines,\n horizontalGuidelines,\n snapGridWidth,\n snapGridHeight,\n },\n state: { guidelines, enableSnap },\n } = moveable;\n\n if (\n !snappable ||\n !enableSnap ||\n (ableName && snappable !== true && snappable.indexOf(ableName) < 0)\n ) {\n return false;\n }\n if (\n snapGridWidth ||\n snapGridHeight ||\n bounds ||\n innerBounds ||\n (guidelines && guidelines.length) ||\n (verticalGuidelines && verticalGuidelines.length) ||\n (horizontalGuidelines && horizontalGuidelines.length)\n ) {\n return true;\n }\n return false;\n}\n\nexport function getSnapDirections(snapDirections: SnapDirections | boolean | undefined): SnapDirections {\n if (snapDirections === false) {\n return {};\n } else if (snapDirections === true || !snapDirections) {\n return { left: true, right: true, top: true, bottom: true };\n }\n return snapDirections;\n}\n\nexport function mapSnapDirectionPoses(\n snapDirections: SnapDirections | boolean | undefined,\n snapPoses: SnapDirectionPoses,\n) {\n const nextSnapDirections = getSnapDirections(snapDirections);\n const nextSnapPoses: SnapDirectionPoses = {};\n\n for (const name in nextSnapDirections) {\n if (name in snapPoses && (nextSnapDirections as any)[name]) {\n (nextSnapPoses as any)[name] = (snapPoses as any)[name];\n }\n }\n return nextSnapPoses;\n}\n\nexport function splitSnapDirectionPoses(\n snapDirections: SnapDirections | boolean | undefined,\n snapPoses: SnapDirectionPoses,\n) {\n const nextSnapPoses = mapSnapDirectionPoses(snapDirections, snapPoses);\n const horizontalNames = HORIZONTAL_NAMES.filter(name => name in nextSnapPoses);\n const verticalNames = VERTICAL_NAMES.filter(name => name in nextSnapPoses);\n\n return {\n horizontalNames,\n verticalNames,\n horizontal: horizontalNames.map(name => nextSnapPoses[name]!),\n vertical: verticalNames.map(name => nextSnapPoses[name]!),\n };\n}\n\nexport function calculateContainerPos(\n rootMatrix: number[],\n containerRect: MoveableClientRect,\n n: number,\n) {\n const clientPos = calculatePosition(\n rootMatrix, [containerRect.clientLeft!, containerRect.clientTop!], n);\n\n return [\n containerRect.left + clientPos[0],\n containerRect.top + clientPos[1],\n ];\n}\n\nexport function solveLineConstants([point1, point2]: number[][]): [number, number, number] {\n let dx = point2[0] - point1[0];\n let dy = point2[1] - point1[1];\n\n if (Math.abs(dx) < TINY_NUM) {\n dx = 0;\n }\n if (Math.abs(dy) < TINY_NUM) {\n dy = 0;\n }\n\n // b > 0\n // ax + by + c = 0\n let a = 0;\n let b = 0;\n let c = 0;\n\n if (!dx) {\n // -x + 1 = 0\n a = -1;\n c = point1[0];\n } else if (!dy) {\n // y - 1 = 0\n b = 1;\n c = -point1[1];\n } else {\n // y = -a(x - x1) + y1\n // ax + y + a * x1 - y1 = 0\n a = -dy / dx;\n b = 1;\n c = a * point1[0] - point1[1];\n }\n\n return [a, b, c].map(v => throttle(v, TINY_NUM)) as [number, number, number];\n}\n","export const NAME_snapRotationThreshold = \"snapRotationThreshold\";\nexport const NAME_snapRotationDegrees = \"snapRotationDegrees\";\nexport const NAME_snapHorizontalThreshold = \"snapHorizontalThreshold\";\nexport const NAME_snapVerticalThreshold = \"snapVerticalThreshold\";\n","import {\n SnapInfo, SnappableProps, SnappableState,\n SnapGuideline, ResizableProps, ScalableProps,\n SnapOffsetInfo, MoveableManagerInterface, SnapDirectionPoses, SnapDirectionInfo,\n} from \"../../types\";\nimport {\n selectValue, getTinyDist, abs,\n} from \"../../utils\";\nimport { getPosByDirection, getPosesByDirection } from \"../../gesto/GestoUtils\";\nimport { TINY_NUM } from \"../../consts\";\nimport { minus } from \"@scena/matrix\";\nimport { splitSnapDirectionPoses } from \"./utils\";\nimport { NAME_snapHorizontalThreshold, NAME_snapVerticalThreshold } from \"./names\";\n\n\n\nexport function checkMoveableSnapPoses(\n moveable: MoveableManagerInterface,\n posesX: number[],\n posesY: number[],\n dirXs: string[] = [],\n dirYs: string[] = [],\n customSnapVerticalThreshold: number | undefined,\n customSnapHorizontalThreshold: number | undefined,\n) {\n const props = moveable.props;\n const snapThresholdMultiples = moveable.state.snapThresholdInfo?.multiples || [1, 1];\n const snapHorizontalThreshold = selectValue(\n customSnapHorizontalThreshold,\n props[NAME_snapHorizontalThreshold],\n 5,\n );\n const snapVerticalThreshold = selectValue(\n customSnapVerticalThreshold,\n props[NAME_snapVerticalThreshold],\n 5,\n );\n\n return checkSnapPoses(\n moveable.state.guidelines,\n posesX,\n posesY,\n dirXs,\n dirYs,\n snapHorizontalThreshold,\n snapVerticalThreshold,\n snapThresholdMultiples,\n );\n}\n\nexport function checkSnapPoses(\n guidelines: SnapGuideline[],\n posesX: number[],\n posesY: number[],\n dirXs: string[],\n dirYs: string[],\n snapHorizontalThreshold: number,\n snapVerticalThreshold: number,\n multiples: number[],\n) {\n return {\n vertical: checkSnap(guidelines, \"vertical\", posesX, snapVerticalThreshold * multiples[0], dirXs),\n horizontal: checkSnap(guidelines, \"horizontal\", posesY, snapHorizontalThreshold * multiples[1], dirYs),\n };\n}\nexport function checkSnapKeepRatio(\n moveable: MoveableManagerInterface,\n startPos: number[],\n endPos: number[],\n): { vertical: SnapOffsetInfo, horizontal: SnapOffsetInfo } {\n const [endX, endY] = endPos;\n const [startX, startY] = startPos;\n let [dx, dy] = minus(endPos, startPos);\n const isBottom = dy > 0;\n const isRight = dx > 0;\n\n dx = getTinyDist(dx);\n dy = getTinyDist(dy);\n\n const verticalInfo: SnapOffsetInfo = {\n isSnap: false,\n offset: 0,\n pos: 0,\n };\n const horizontalInfo: SnapOffsetInfo = {\n isSnap: false,\n offset: 0,\n pos: 0,\n };\n\n if (dx === 0 && dy === 0) {\n return {\n vertical: verticalInfo,\n horizontal: horizontalInfo,\n };\n }\n const {\n vertical: verticalSnapInfo,\n horizontal: horizontalSnapInfo,\n } = checkMoveableSnapPoses(\n moveable,\n dx ? [endX] : [],\n dy ? [endY] : [],\n [],\n [],\n undefined,\n undefined,\n );\n\n verticalSnapInfo.posInfos.filter(({ pos }) => {\n return isRight ? pos >= startX : pos <= startX;\n });\n horizontalSnapInfo.posInfos.filter(({ pos }) => {\n return isBottom ? pos >= startY : pos <= startY;\n });\n verticalSnapInfo.isSnap = verticalSnapInfo.posInfos.length > 0;\n horizontalSnapInfo.isSnap = horizontalSnapInfo.posInfos.length > 0;\n\n const {\n isSnap: isVerticalSnap,\n guideline: verticalGuideline,\n } = getNearestSnapGuidelineInfo(verticalSnapInfo);\n const {\n isSnap: isHorizontalSnap,\n guideline: horizontalGuideline,\n } = getNearestSnapGuidelineInfo(horizontalSnapInfo);\n const horizontalPos = isHorizontalSnap ? horizontalGuideline!.pos[1] : 0;\n const verticalPos = isVerticalSnap ? verticalGuideline!.pos[0] : 0;\n\n if (dx === 0) {\n if (isHorizontalSnap) {\n horizontalInfo.isSnap = true;\n horizontalInfo.pos = horizontalGuideline!.pos[1];\n horizontalInfo.offset = endY - horizontalInfo.pos;\n }\n } else if (dy === 0) {\n if (isVerticalSnap) {\n verticalInfo.isSnap = true;\n verticalInfo.pos = verticalPos;\n verticalInfo.offset = endX - verticalPos;\n }\n } else {\n // y - y1 = a * (x - x1)\n const a = dy / dx;\n const b = endPos[1] - a * endX;\n let y = 0;\n let x = 0;\n let isSnap = false;\n\n if (isVerticalSnap) {\n x = verticalPos;\n y = a * x + b;\n isSnap = true;\n } else if (isHorizontalSnap) {\n y = horizontalPos;\n x = (y - b) / a;\n isSnap = true;\n }\n if (isSnap) {\n verticalInfo.isSnap = true;\n verticalInfo.pos = x;\n verticalInfo.offset = endX - x;\n\n horizontalInfo.isSnap = true;\n horizontalInfo.pos = y;\n horizontalInfo.offset = endY - y;\n }\n }\n return {\n vertical: verticalInfo,\n horizontal: horizontalInfo,\n };\n}\n\n\nfunction getStringDirection(dir: number | string) {\n let stringDirection = \"\";\n\n if (dir === -1 || dir === \"top\" || dir === \"left\") {\n stringDirection = \"start\";\n } else if (dir === 0 || dir === \"center\" || dir === \"middle\") {\n stringDirection = \"center\";\n } else if (dir === 1 || dir === \"right\" || dir === \"bottom\") {\n stringDirection = \"end\";\n }\n return stringDirection;\n}\n\n\nexport function checkSnaps(\n moveable: MoveableManagerInterface,\n rect: SnapDirectionPoses,\n customSnapVerticalThreshold: number | undefined,\n customSnapHorizontalThreshold: number | undefined,\n): { vertical: SnapDirectionInfo; horizontal: SnapDirectionInfo } {\n const poses = splitSnapDirectionPoses(moveable.props.snapDirections, rect);\n\n const result = checkMoveableSnapPoses(\n moveable,\n poses.vertical,\n poses.horizontal,\n poses.verticalNames.map(name => getStringDirection(name)),\n poses.horizontalNames.map(name => getStringDirection(name)),\n customSnapVerticalThreshold,\n customSnapHorizontalThreshold,\n );\n const horizontalDirection = getStringDirection(poses.horizontalNames[result.horizontal.index]);\n const verticalDirection = getStringDirection(poses.verticalNames[result.vertical.index]);\n\n return {\n vertical: {\n ...result.vertical,\n direction: verticalDirection,\n },\n horizontal: {\n ...result.horizontal,\n direction: horizontalDirection,\n },\n };\n}\n\nexport function getNearestSnapGuidelineInfo(\n snapInfo: SnapInfo,\n) {\n const isSnap = snapInfo.isSnap;\n\n if (!isSnap) {\n return {\n isSnap: false,\n offset: 0,\n dist: -1,\n pos: 0,\n guideline: null,\n };\n }\n const posInfo = snapInfo.posInfos[0];\n const guidelineInfo = posInfo!.guidelineInfos[0];\n const offset = guidelineInfo!.offset;\n const dist = guidelineInfo!.dist;\n const guideline = guidelineInfo!.guideline;\n\n return {\n isSnap,\n offset,\n dist,\n pos: posInfo!.pos,\n guideline,\n };\n}\n\nfunction checkSnap(\n guidelines: SnapGuideline[],\n targetType: \"horizontal\" | \"vertical\",\n targetPoses: number[],\n snapThreshold: number,\n dirs: string[] = [],\n): SnapInfo {\n if (!guidelines || !guidelines.length) {\n return {\n isSnap: false,\n index: -1,\n direction: \"\",\n posInfos: [],\n };\n }\n const isVertical = targetType === \"vertical\";\n const posType = isVertical ? 0 : 1;\n\n const snapPosInfos = targetPoses.map((targetPos, index) => {\n const direction = dirs[index] || \"\";\n\n const guidelineInfos = guidelines.map(guideline => {\n const { pos } = guideline;\n const offset = targetPos - pos[posType];\n\n return {\n offset,\n dist: abs(offset),\n guideline,\n direction,\n };\n }).filter(({ guideline, dist }) => {\n const { type } = guideline;\n if (\n type !== targetType\n || dist > snapThreshold\n ) {\n return false;\n }\n return true;\n }).sort(\n (a, b) => a.dist - b.dist,\n );\n\n\n return {\n pos: targetPos,\n index,\n guidelineInfos,\n direction,\n };\n }).filter(snapPosInfo => {\n return snapPosInfo.guidelineInfos.length > 0;\n }).sort((a, b) => {\n return a.guidelineInfos[0].dist - b.guidelineInfos[0].dist;\n });\n\n const isSnap = snapPosInfos.length > 0;\n return {\n isSnap,\n index: isSnap ? snapPosInfos[0].index : -1,\n direction: snapPosInfos[0]?.direction ?? \"\",\n posInfos: snapPosInfos,\n };\n}\n\nexport function getSnapInfosByDirection(\n moveable: MoveableManagerInterface,\n // pos1 pos2 pos3 pos4\n poses: number[][],\n snapDirection: number[],\n customSnapVerticalThreshold: number | undefined,\n customSnapHorizontalThreshold: number | undefined,\n): { vertical: SnapDirectionInfo; horizontal: SnapDirectionInfo } {\n let dirs: number[][] = [];\n\n if (snapDirection[0] && snapDirection[1]) {\n dirs = [\n snapDirection,\n [-snapDirection[0], snapDirection[1]],\n [snapDirection[0], -snapDirection[1]],\n ];\n } else if (!snapDirection[0] && !snapDirection[1]) {\n [\n [-1, -1],\n [1, -1],\n [1, 1],\n [-1, 1],\n ].forEach((dir, i, arr) => {\n const nextDir = (arr[i + 1] || arr[0]);\n dirs.push(dir);\n dirs.push([\n (dir[0] + nextDir[0]) / 2,\n (dir[1] + nextDir[1]) / 2,\n ]);\n });\n } else {\n if (moveable.props.keepRatio) {\n dirs.push(\n [-1, -1],\n [-1, 1],\n [1, -1],\n [1, 1],\n snapDirection,\n );\n } else {\n dirs.push(...getPosesByDirection([\n [-1, -1],\n [1, -1],\n [-1, -1],\n [1, 1],\n ], snapDirection));\n\n if (dirs.length > 1) {\n dirs.push([\n (dirs[0][0] + dirs[1][0]) / 2,\n (dirs[0][1] + dirs[1][1]) / 2,\n ]);\n }\n }\n }\n const nextPoses = dirs.map(dir => getPosByDirection(poses, dir));\n const xs = nextPoses.map(pos => pos[0]);\n const ys = nextPoses.map(pos => pos[1]);\n const result = checkMoveableSnapPoses(\n moveable,\n xs, ys,\n dirs.map(dir => getStringDirection(dir[0])),\n dirs.map(dir => getStringDirection(dir[1])),\n customSnapVerticalThreshold,\n customSnapHorizontalThreshold,\n );\n const verticalDirection = getStringDirection(dirs.map(dir => dir[0])[result.vertical.index]);\n const horizontalDirection = getStringDirection(dirs.map(dir => dir[1])[result.horizontal.index]);\n\n return {\n vertical: {\n ...result.vertical,\n direction: verticalDirection,\n },\n horizontal: {\n ...result.horizontal,\n direction: horizontalDirection,\n },\n };\n}\n\nexport function checkSnapBoundPriority(\n a: { isBound: boolean, isSnap: boolean, offset: number },\n b: { isBound: boolean, isSnap: boolean, offset: number },\n) {\n const aDist = abs(a.offset);\n const bDist = abs(b.offset);\n\n if (a.isBound && b.isBound) {\n return bDist - aDist;\n } else if (a.isBound) {\n return -1;\n } else if (b.isBound) {\n return 1;\n } else if (a.isSnap && b.isSnap) {\n return bDist - aDist;\n } else if (a.isSnap) {\n return -1;\n } else if (b.isSnap) {\n return 1;\n } else if (aDist < TINY_NUM) {\n return 1;\n } else if (bDist < TINY_NUM) {\n return -1;\n }\n return aDist - bDist;\n}\nexport function getNearOffsetInfo(\n offsets: T[],\n index: number,\n) {\n return offsets.slice().sort((a, b) => {\n const aSign = a.sign[index];\n const bSign = b.sign[index];\n const aOffset = a.offset[index];\n const bOffset = b.offset[index];\n // -1 The positions of a and b do not change.\n // 1 The positions of a and b are reversed.\n if (!aSign) {\n return 1;\n } else if (!bSign) {\n return -1;\n }\n return checkSnapBoundPriority(\n { isBound: a.isBound, isSnap: a.isSnap, offset: aOffset },\n { isBound: b.isBound, isSnap: b.isSnap, offset: bOffset },\n );\n })[0];\n}\n\n\nexport function getCheckSnapDirections(\n direction: number[],\n fixedDirection: number[],\n keepRatio: boolean\n) {\n const directions: number[][][] = [];\n // const fixedDirection = [-direction[0], -direction[1]];\n\n if (keepRatio) {\n if (abs(fixedDirection[0]) !== 1 || abs(fixedDirection[1]) !== 1) {\n directions.push(\n [fixedDirection, [-1, -1]],\n [fixedDirection, [-1, 1]],\n [fixedDirection, [1, -1]],\n [fixedDirection, [1, 1]],\n );\n } else {\n directions.push(\n [fixedDirection, [direction[0], -direction[1]]],\n [fixedDirection, [-direction[0], direction[1]]],\n );\n }\n directions.push([fixedDirection, direction]);\n } else {\n if ((direction[0] && direction[1]) || (!direction[0] && !direction[1])) {\n const endDirection = direction[0] ? direction : [1, 1];\n\n [1, -1].forEach(signX => {\n [1, -1].forEach(signY => {\n const nextDirection = [signX * endDirection[0], signY * endDirection[1]];\n\n if (\n fixedDirection[0] === nextDirection[0]\n && fixedDirection[1] === nextDirection[1]\n ) {\n return;\n }\n directions.push([fixedDirection, nextDirection]);\n });\n });\n } else if (direction[0]) {\n const signs = abs(fixedDirection[0]) === 1 ? [1] : [1, -1];\n\n signs.forEach(sign => {\n directions.push(\n [\n [fixedDirection[0], -1],\n [sign * direction[0], -1],\n ],\n [\n [fixedDirection[0], 0],\n [sign * direction[0], 0],\n ],\n [\n [fixedDirection[0], 1],\n [sign * direction[0], 1],\n ]\n );\n });\n } else if (direction[1]) {\n const signs = abs(fixedDirection[1]) === 1 ? [1] : [1, -1];\n\n signs.forEach(sign => {\n directions.push(\n [\n [-1, fixedDirection[1]],\n [-1, sign * direction[1]],\n ],\n [\n [0, fixedDirection[1]],\n [0, sign * direction[1]],\n ],\n [\n [1, fixedDirection[1]],\n [1, sign * direction[1]],\n ]\n );\n });\n }\n }\n return directions;\n}\n","import { average, getRad, throttle } from \"@daybrush/utils\";\nimport { rotate } from \"@scena/matrix\";\nimport { maxOffset, getDistSize, getTinyDist, calculatePoses, abs } from \"../../utils\";\n\nimport { SnappableProps, DraggableProps, RotatableProps, MoveableManagerInterface } from \"../../types\";\nimport { getDragDist, getPosByDirection, getInverseDragDist } from \"../../gesto/GestoUtils\";\nimport { getNearOffsetInfo } from \"./snap\";\nimport { TINY_NUM } from \"../../consts\";\nimport { getInitialBounds, solveLineConstants } from \"./utils\";\n\nfunction isStartLine(dot: number[], line: number[][]) {\n // l o => true\n // o l => false\n const cx = average([line[0][0], line[1][0]]);\n const cy = average([line[0][1], line[1][1]]);\n\n return {\n vertical: cx <= dot[0],\n horizontal: cy <= dot[1],\n };\n}\nfunction hitTestLine(\n dot: number[],\n [pos1, pos2]: number[][],\n) {\n let dx = pos2[0] - pos1[0];\n let dy = pos2[1] - pos1[1];\n\n if (abs(dx) < TINY_NUM) {\n dx = 0;\n }\n if (abs(dy) < TINY_NUM) {\n dy = 0;\n }\n let test1: number;\n let test2: number;\n if (!dx) {\n test1 = pos1[0];\n test2 = dot[0];\n } else if (!dy) {\n test1 = pos1[1];\n test2 = dot[1];\n } else {\n const a = dy / dx;\n\n // y = a * (x - pos1) + pos1\n test1 = a * (dot[0] - pos1[0]) + pos1[1];\n test2 = dot[1];\n }\n return test1 - test2;\n}\nfunction isSameStartLine(dots: number[][], line: number[][], centerSign: boolean, error: number = TINY_NUM) {\n return dots.every(dot => {\n const value = hitTestLine(dot, line);\n const sign = value <= 0;\n return sign === centerSign || abs(value) <= error;\n });\n}\nfunction checkInnerBoundDot(\n pos: number,\n start: number,\n end: number,\n isStart: boolean,\n threshold = 0,\n) {\n if (\n (isStart && start - threshold <= pos)\n || (!isStart && pos <= end + threshold)\n ) {\n // false 402 565 602 => 37 ([0, 37])\n // true 400 524.9712603540036 600 => 124 ([124, 0])\n // true 400 410 600 => 10 ([10, 0])\n return {\n isBound: true,\n offset: isStart ? start - pos : end - pos,\n };\n }\n return {\n isBound: false,\n offset: 0,\n };\n}\n\nfunction checkInnerBound(\n moveable: MoveableManagerInterface,\n { line, centerSign, verticalSign, horizontalSign, lineConstants }: InnerBoundLineInfo,\n) {\n const bounds = moveable.props.innerBounds;\n\n if (!bounds) {\n return {\n isAllBound: false,\n isBound: false,\n isVerticalBound: false,\n isHorizontalBound: false,\n offset: [0, 0],\n };\n }\n const { left, top, width, height } = bounds;\n const leftLine = [[left, top], [left, top + height]];\n const topLine = [[left, top], [left + width, top]];\n const rightLine = [[left + width, top], [left + width, top + height]];\n const bottomLine = [[left, top + height], [left + width, top + height]];\n\n if (isSameStartLine([\n [left, top],\n [left + width, top],\n [left, top + height],\n [left + width, top + height],\n ], line, centerSign)) {\n return {\n isAllBound: false,\n isBound: false,\n isVerticalBound: false,\n isHorizontalBound: false,\n offset: [0, 0],\n };\n }\n // test vertical\n\n const topBoundInfo = checkLineBoundCollision(line, lineConstants, topLine, verticalSign);\n const bottomBoundInfo = checkLineBoundCollision(line, lineConstants, bottomLine, verticalSign);\n\n // test horizontal\n const leftBoundInfo = checkLineBoundCollision(line, lineConstants, leftLine, horizontalSign);\n const rightBoundInfo = checkLineBoundCollision(line, lineConstants, rightLine, horizontalSign);\n\n const isAllVerticalBound = topBoundInfo.isBound && bottomBoundInfo.isBound;\n const isVerticalBound = topBoundInfo.isBound || bottomBoundInfo.isBound;\n const isAllHorizontalBound = leftBoundInfo.isBound && rightBoundInfo.isBound;\n const isHorizontalBound = leftBoundInfo.isBound || rightBoundInfo.isBound;\n const verticalOffset = maxOffset(topBoundInfo.offset, bottomBoundInfo.offset);\n const horizontalOffset = maxOffset(leftBoundInfo.offset, rightBoundInfo.offset);\n let offset = [0, 0];\n let isBound = false;\n let isAllBound = false;\n\n if (abs(horizontalOffset) < abs(verticalOffset)) {\n offset = [verticalOffset, 0];\n isBound = isVerticalBound;\n isAllBound = isAllVerticalBound;\n } else {\n offset = [0, horizontalOffset];\n isBound = isHorizontalBound;\n isAllBound = isAllHorizontalBound;\n }\n return {\n isAllBound,\n isVerticalBound,\n isHorizontalBound,\n isBound,\n offset,\n };\n}\n\nfunction checkLineBoundCollision(\n line: number[][],\n [a, b]: [number, number, number],\n boundLine: number[][],\n isStart: boolean,\n threshold?: number,\n isRender?: boolean,\n) {\n const dot1 = line[0];\n // const dot2 = line[1];\n const boundDot1 = boundLine[0];\n const boundDot2 = boundLine[1];\n\n // const dy1 = getTinyDist(dot2[1] - dot1[1]);\n // const dx1 = getTinyDist(dot2[0] - dot1[0]);\n const dy2 = getTinyDist(boundDot2[1] - boundDot1[1]);\n const dx2 = getTinyDist(boundDot2[0] - boundDot1[0]);\n\n const hasDx = b;\n const hasDy = a;\n const slope = - a / b;\n // lineConstants\n // ax + by + c = 0\n // dx2 or dy2 is zero\n if (!dx2) {\n // vertical\n // by + c = 0\n if (isRender && !hasDy) {\n // 90deg\n return {\n isBound: false,\n offset: 0,\n };\n } else if (hasDx) {\n // ax + by + c = 0\n // const y = dy1 ? dy1 / dx1 * (boundDot1[0] - dot1[0]) + dot1[1] : dot1[1];\n const y = slope * (boundDot1[0] - dot1[0]) + dot1[1];\n\n // boundDot1[1] <= y <= boundDot2[1]\n return checkInnerBoundDot(y, boundDot1[1], boundDot2[1], isStart, threshold);\n } else {\n // ax + c = 0\n const offset = boundDot1[0] - dot1[0];\n\n const isBound = abs(offset) <= (threshold || 0);\n\n return {\n isBound,\n offset: isBound ? offset : 0,\n };\n }\n } else if (!dy2) {\n // horizontal\n if (isRender && !hasDx) {\n // 90deg\n return {\n isBound: false,\n offset: 0,\n };\n } else if (hasDy) {\n // y = a * (x - x1) + y1\n // x = (y - y1) / a + x1\n // const a = dy1 / dx1;\n // const x = dx1 ? (boundDot1[1] - dot1[1]) / a + dot1[0] : dot1[0];\n const x = (boundDot1[1] - dot1[1]) / slope + dot1[0];\n\n // boundDot1[0] <= x && x <= boundDot2[0]\n return checkInnerBoundDot(x, boundDot1[0], boundDot2[0], isStart, threshold);\n } else {\n const offset = boundDot1[1] - dot1[1];\n\n const isBound = abs(offset) <= (threshold || 0);\n\n return {\n isBound,\n offset: isBound ? offset : 0,\n };\n }\n }\n return {\n isBound: false,\n offset: 0,\n };\n}\nexport function getInnerBoundInfo(\n moveable: MoveableManagerInterface,\n lineInfos: InnerBoundLineInfo[],\n datas: any,\n) {\n return lineInfos.map(info => {\n const {\n isBound,\n offset,\n isVerticalBound,\n isHorizontalBound,\n } = checkInnerBound(moveable, info);\n\n const multiple = info.multiple;\n\n const sizeOffset = getDragDist({\n datas,\n distX: offset[0],\n distY: offset[1],\n }).map((size, i) => size * (multiple[i] ? 2 / multiple[i] : 0));\n\n return {\n sign: multiple,\n isBound,\n isVerticalBound,\n isHorizontalBound,\n isSnap: false,\n offset: sizeOffset,\n };\n });\n}\n\nexport function getInnerBoundDragInfo(\n moveable: MoveableManagerInterface,\n poses: number[][],\n datas: any,\n) {\n const lines = getCheckInnerBoundLineInfos(moveable, poses, [0, 0], false).map(info => {\n return {\n ...info,\n multiple: info.multiple.map(dir => abs(dir) * 2),\n };\n });\n const innerBoundInfo = getInnerBoundInfo(moveable, lines, datas);\n const widthOffsetInfo = getNearOffsetInfo(innerBoundInfo, 0);\n const heightOffsetInfo = getNearOffsetInfo(innerBoundInfo, 1);\n let verticalOffset = 0;\n let horizontalOffset = 0;\n const isVerticalBound = widthOffsetInfo.isVerticalBound || heightOffsetInfo.isVerticalBound;\n const isHorizontalBound = widthOffsetInfo.isHorizontalBound || heightOffsetInfo.isHorizontalBound;\n\n if (isVerticalBound || isHorizontalBound) {\n [verticalOffset, horizontalOffset] = getInverseDragDist({\n datas,\n distX: -widthOffsetInfo.offset[0],\n distY: -heightOffsetInfo.offset[1],\n });\n }\n\n return {\n vertical: {\n isBound: isVerticalBound,\n offset: verticalOffset,\n },\n horizontal: {\n isBound: isHorizontalBound,\n offset: horizontalOffset,\n },\n };\n}\nexport function getCheckSnapLineDirections(\n direction: number[],\n keepRatio: boolean,\n) {\n const lineDirections: number[][][] = [];\n const x = direction[0];\n const y = direction[1];\n if (x && y) {\n lineDirections.push(\n [[0, y * 2], direction, [-x, y]],\n [[x * 2, 0], direction, [x, -y]],\n );\n } else if (x) {\n // vertcal\n lineDirections.push(\n [[x * 2, 0], [x, 1], [x, -1]],\n );\n if (keepRatio) {\n lineDirections.push(\n [[0, -1], [x, -1], [-x, -1]],\n [[0, 1], [x, 1], [-x, 1]],\n );\n }\n } else if (y) {\n // horizontal\n lineDirections.push(\n [[0, y * 2], [1, y], [-1, y]],\n );\n if (keepRatio) {\n lineDirections.push(\n [[-1, 0], [-1, y], [-1, -y]],\n [[1, 0], [1, y], [1, -y]],\n );\n }\n } else {\n // [0, 0] to all direction\n lineDirections.push(\n [[-1, 0], [-1, -1], [-1, 1]],\n [[1, 0], [1, -1], [1, 1]],\n [[0, -1], [-1, -1], [1, -1]],\n [[0, 1], [-1, 1], [1, 1]],\n );\n }\n\n return lineDirections;\n}\nexport interface InnerBoundLineInfo {\n line: number[][];\n multiple: number[];\n horizontalSign: boolean;\n verticalSign: boolean;\n centerSign: boolean;\n lineConstants: [number, number, number];\n}\nexport function getCheckInnerBoundLineInfos(\n moveable: MoveableManagerInterface,\n poses: number[][],\n direction: number[],\n keepRatio: boolean,\n): InnerBoundLineInfo[] {\n const {\n allMatrix,\n is3d,\n } = moveable.state;\n const virtualPoses = calculatePoses(allMatrix, 100, 100, is3d ? 4 : 3);\n const center = getPosByDirection(virtualPoses, [0, 0]);\n\n return getCheckSnapLineDirections(direction, keepRatio).map(([multiple, dir1, dir2]) => {\n const virtualLine = [\n getPosByDirection(virtualPoses, dir1),\n getPosByDirection(virtualPoses, dir2),\n ];\n const lineConstants = solveLineConstants(virtualLine);\n const {\n vertical: verticalSign,\n horizontal: horizontalSign,\n } = isStartLine(center, virtualLine);\n const centerSign = hitTestLine(center, virtualLine) <= 0;\n\n return {\n multiple,\n centerSign,\n verticalSign,\n horizontalSign,\n lineConstants,\n line: [\n getPosByDirection(poses, dir1),\n getPosByDirection(poses, dir2),\n ],\n };\n });\n}\n\nfunction isBoundRotate(\n relativePoses: number[][],\n boundDots: number[][],\n center: number[],\n rad: number,\n) {\n const nextPoses = rad ? relativePoses.map(pos => rotate(pos, rad)) : relativePoses;\n return [\n [nextPoses[0], nextPoses[1]],\n [nextPoses[1], nextPoses[3]],\n [nextPoses[3], nextPoses[2]],\n [nextPoses[2], nextPoses[0]],\n ].some(line => {\n const centerSign = hitTestLine(center, line) <= 0;\n\n return !isSameStartLine(boundDots, line, centerSign);\n });\n}\nfunction getDistPointLine([pos1, pos2]: number[][]) {\n // x = 0, y = 0\n // d = (ax + by + c) / root(a2 + b2)\n\n const dx = pos2[0] - pos1[0];\n const dy = pos2[1] - pos1[1];\n\n if (!dx) {\n return abs(pos1[0]);\n }\n if (!dy) {\n return abs(pos1[1]);\n }\n // y - y1 = a(x - x1)\n // 0 = ax -y + -a * x1 + y1\n\n const a = dy / dx;\n\n return abs((-a * pos1[0] + pos1[1]) / Math.sqrt(Math.pow(a, 2) + 1));\n}\nfunction solveReverseLine([pos1, pos2]: number[][]) {\n const dx = pos2[0] - pos1[0];\n const dy = pos2[1] - pos1[1];\n\n if (!dx) {\n return [pos1[0], 0];\n }\n if (!dy) {\n return [0, pos1[1]];\n }\n const a = dy / dx;\n // y - y1 = a (x - x1)\n // y = ax - a * x1 + y1\n const b = -a * pos1[0] + pos1[1];\n // y = ax + b = -1/a x\n // x = -b / (a + 1 / a)\n // y = b / (1 + 1 / a^2)\n\n return [\n -b / (a + 1 / a),\n b / ((a * a) + 1),\n ];\n}\nexport function checkRotateInnerBounds(\n moveable: MoveableManagerInterface,\n prevPoses: number[][],\n nextPoses: number[][],\n origin: number[],\n rotation: number,\n) {\n const bounds = moveable.props.innerBounds;\n const rad = rotation * Math.PI / 180;\n\n if (!bounds) {\n return [];\n }\n const {\n left,\n top,\n width,\n height,\n } = bounds;\n\n const relativeLeft = left - origin[0];\n const relativeRight = left + width - origin[0];\n const relativeTop = top - origin[1];\n const relativeBottom = top + height - origin[1];\n const dots = [\n [relativeLeft, relativeTop],\n [relativeRight, relativeTop],\n [relativeLeft, relativeBottom],\n [relativeRight, relativeBottom],\n ];\n const center = getPosByDirection(nextPoses, [0, 0]);\n\n if (!isBoundRotate(nextPoses, dots, center, 0)) {\n return [];\n }\n const result: number[] = [];\n const dotInfos = dots.map(dot => [\n getDistSize(dot),\n getRad([0, 0], dot),\n ]);\n [\n [nextPoses[0], nextPoses[1]],\n [nextPoses[1], nextPoses[3]],\n [nextPoses[3], nextPoses[2]],\n [nextPoses[2], nextPoses[0]],\n ].forEach(line => {\n const lineRad = getRad([0, 0], solveReverseLine(line));\n const lineDist = getDistPointLine(line);\n\n result.push(...dotInfos\n .filter(([dotDist]) => {\n return dotDist && lineDist <= dotDist;\n })\n .map(([dotDist, dotRad]) => {\n const distRad = Math.acos(dotDist ? lineDist / dotDist : 0);\n const nextRad1 = dotRad + distRad;\n const nextRad2 = dotRad - distRad;\n\n return [\n rad + nextRad1 - lineRad,\n rad + nextRad2 - lineRad,\n ];\n })\n .reduce((prev, cur) => {\n prev.push(...cur);\n return prev;\n }, [])\n .filter(nextRad => !isBoundRotate(prevPoses, dots, center, nextRad))\n .map(nextRad => throttle(nextRad * 180 / Math.PI, TINY_NUM)));\n });\n return result;\n}\n\nexport function checkInnerBoundPoses(\n moveable: MoveableManagerInterface,\n) {\n const innerBounds = moveable.props.innerBounds;\n const boundMap = getInitialBounds();\n\n if (!innerBounds) {\n return {\n boundMap,\n vertical: [],\n horizontal: [],\n };\n }\n const {\n pos1,\n pos2,\n pos3,\n pos4,\n } = moveable.getRect();\n const poses = [pos1, pos2, pos3, pos4];\n const center = getPosByDirection(poses, [0, 0]);\n const { left, top, width, height } = innerBounds;\n const leftLine = [[left, top], [left, top + height]];\n const topLine = [[left, top], [left + width, top]];\n const rightLine = [[left + width, top], [left + width, top + height]];\n const bottomLine = [[left, top + height], [left + width, top + height]];\n const lineInfos = getCheckInnerBoundLineInfos(moveable, poses, [0, 0], false);\n\n const horizontalPoses: number[] = [];\n const verticalPoses: number[] = [];\n\n\n lineInfos.forEach(lineInfo => {\n const { line, lineConstants } = lineInfo;\n const {\n horizontal: isHorizontalStart,\n vertical: isVerticalStart,\n } = isStartLine(center, line);\n\n // test vertical\n const topBoundInfo = checkLineBoundCollision(line, lineConstants, topLine, isVerticalStart, 1, true);\n const bottomBoundInfo = checkLineBoundCollision(line, lineConstants, bottomLine, isVerticalStart, 1, true);\n\n // test horizontal\n const leftBoundInfo = checkLineBoundCollision(line, lineConstants, leftLine, isHorizontalStart, 1, true);\n const rightBoundInfo = checkLineBoundCollision(line, lineConstants, rightLine, isHorizontalStart, 1, true);\n\n if (topBoundInfo.isBound && !boundMap.top) {\n horizontalPoses.push(top);\n boundMap.top = true;\n }\n if (bottomBoundInfo.isBound && !boundMap.bottom) {\n horizontalPoses.push(top + height);\n boundMap.bottom = true;\n }\n if (leftBoundInfo.isBound && !boundMap.left) {\n verticalPoses.push(left);\n boundMap.left = true;\n }\n if (rightBoundInfo.isBound && !boundMap.right) {\n verticalPoses.push(left + width);\n boundMap.right = true;\n }\n });\n\n return {\n boundMap,\n horizontal: horizontalPoses,\n vertical: verticalPoses,\n };\n}\n","import { getDist, getRad, IObject, TINY_NUM } from \"@daybrush/utils\";\nimport { minus } from \"@scena/matrix\";\nimport { abs, getAbsolutePoses, getDistSize, getRect, maxOffset } from \"../../utils\";\nimport { getDragDist, getPosByDirection } from \"../../gesto/GestoUtils\";\nimport {\n BoundInfo, SnapInfo, MoveableManagerInterface, SnappableProps,\n SnappableState, SnapBoundInfo, SnapGuideline, BoundType, SnapOffsetInfo, DraggableProps,\n} from \"../../types\";\nimport { checkBoundKeepRatio, checkBoundPoses, getBounds } from \"./bounds\";\nimport { getInnerBoundDragInfo } from \"./innerBounds\";\nimport {\n getNearestSnapGuidelineInfo, checkMoveableSnapPoses,\n checkSnapPoses, checkSnapKeepRatio,\n} from \"./snap\";\nimport { hasGuidelines, getSnapDirections, splitSnapDirectionPoses } from \"./utils\";\n\ninterface DirectionSnapType {\n vertical: T;\n horizontal: T;\n}\n\nexport function solveEquation(\n pos1: number[],\n pos2: number[],\n snapOffset: number,\n isVertical: boolean\n) {\n let dx = pos2[0] - pos1[0];\n let dy = pos2[1] - pos1[1];\n\n if (abs(dx) < TINY_NUM) {\n dx = 0;\n }\n if (abs(dy) < TINY_NUM) {\n dy = 0;\n }\n if (!dx) {\n // y = 0 * x + b\n // only horizontal\n if (!isVertical) {\n return [0, snapOffset];\n }\n return [0, 0];\n }\n if (!dy) {\n // only vertical\n if (isVertical) {\n return [snapOffset, 0];\n }\n return [0, 0];\n }\n // y = ax + b\n const a = dy / dx;\n const b = pos1[1] - a * pos1[0];\n\n if (isVertical) {\n // y = a * x + b\n const y = a * (pos2[0] + snapOffset) + b;\n\n return [snapOffset, y - pos2[1]];\n } else {\n // x = (y - b) / a\n const x = (pos2[1] + snapOffset - b) / a;\n\n return [x - pos2[0], snapOffset];\n }\n}\n\n\nfunction solveNextOffset(\n pos1: number[],\n pos2: number[],\n offset: number,\n isVertical: boolean,\n datas: IObject\n) {\n const sizeOffset = solveEquation(pos1, pos2, offset, isVertical);\n\n if (!sizeOffset) {\n return {\n isOutside: false,\n offset: [0, 0],\n };\n }\n const size = getDist(pos1, pos2);\n const dist1 = getDist(sizeOffset, pos1);\n const dist2 = getDist(sizeOffset, pos2);\n\n const isOutside = dist1 > size || dist2 > size;\n const [widthOffset, heightOffset] = getDragDist({\n datas,\n distX: sizeOffset[0],\n distY: sizeOffset[1],\n });\n\n return {\n offset: [widthOffset, heightOffset],\n isOutside,\n };\n}\n\nfunction getSnapBound(boundInfo: BoundInfo, snapInfo: SnapInfo) {\n if (boundInfo.isBound) {\n return boundInfo.offset;\n } else if (snapInfo.isSnap) {\n return getNearestSnapGuidelineInfo(snapInfo).offset;\n }\n return 0;\n}\n\n\nexport function checkThrottleDragRotate(\n throttleDragRotate: number,\n [distX, distY]: number[],\n [isVerticalBound, isHorizontalBound]: boolean[],\n [isVerticalSnap, isHorizontalSnap]: boolean[],\n [verticalOffset, horizontalOffset]: number[]\n) {\n let offsetX = -verticalOffset;\n let offsetY = -horizontalOffset;\n\n if (throttleDragRotate && distX && distY) {\n offsetX = 0;\n offsetY = 0;\n const adjustPoses: number[][] = [];\n if (isVerticalBound && isHorizontalBound) {\n adjustPoses.push([0, horizontalOffset], [verticalOffset, 0]);\n } else if (isVerticalBound) {\n adjustPoses.push([verticalOffset, 0]);\n } else if (isHorizontalBound) {\n adjustPoses.push([0, horizontalOffset]);\n } else if (isVerticalSnap && isHorizontalSnap) {\n adjustPoses.push([0, horizontalOffset], [verticalOffset, 0]);\n } else if (isVerticalSnap) {\n adjustPoses.push([verticalOffset, 0]);\n } else if (isHorizontalSnap) {\n adjustPoses.push([0, horizontalOffset]);\n }\n if (adjustPoses.length) {\n adjustPoses.sort((a, b) => {\n return (\n getDistSize(minus([distX, distY], a)) -\n getDistSize(minus([distX, distY], b))\n );\n });\n const adjustPos = adjustPoses[0];\n\n if (adjustPos[0] && abs(distX) > TINY_NUM) {\n offsetX = -adjustPos[0];\n offsetY =\n (distY * abs(distX + offsetX)) / abs(distX) -\n distY;\n } else if (adjustPos[1] && abs(distY) > TINY_NUM) {\n const prevDistY = distY;\n offsetY = -adjustPos[1];\n offsetX =\n (distX * abs(distY + offsetY)) / abs(prevDistY) -\n distX;\n }\n if (throttleDragRotate && isHorizontalBound && isVerticalBound) {\n if (\n abs(offsetX) > TINY_NUM &&\n abs(offsetX) < abs(verticalOffset)\n ) {\n const scale = abs(verticalOffset) / abs(offsetX);\n\n offsetX *= scale;\n offsetY *= scale;\n } else if (\n abs(offsetY) > TINY_NUM &&\n abs(offsetY) < abs(horizontalOffset)\n ) {\n const scale =\n abs(horizontalOffset) / abs(offsetY);\n\n offsetX *= scale;\n offsetY *= scale;\n } else {\n offsetX = maxOffset(-verticalOffset, offsetX);\n offsetY = maxOffset(-horizontalOffset, offsetY);\n }\n }\n }\n } else {\n offsetX = distX || isVerticalBound ? -verticalOffset : 0;\n offsetY = distY || isHorizontalBound ? -horizontalOffset : 0;\n }\n return [offsetX, offsetY];\n}\n\nexport function checkSnapBoundsDrag(\n moveable: MoveableManagerInterface,\n distX: number,\n distY: number,\n throttleDragRotate: number,\n ignoreSnap: boolean,\n datas: any\n) {\n if (!hasGuidelines(moveable, \"draggable\")) {\n return [\n {\n isSnap: false,\n isBound: false,\n offset: 0,\n },\n {\n isSnap: false,\n isBound: false,\n offset: 0,\n },\n ];\n }\n const poses = getAbsolutePoses(datas.absolutePoses, [distX, distY]);\n const { left, right, top, bottom } = getRect(poses);\n const boundPoses = {\n horizontal: poses.map((pos) => pos[1]),\n vertical: poses.map((pos) => pos[0]),\n };\n const snapDirections = getSnapDirections(moveable.props.snapDirections);\n const snapPoses = splitSnapDirectionPoses(snapDirections, {\n left,\n right,\n top,\n bottom,\n center: (left + right) / 2,\n middle: (top + bottom) / 2,\n });\n const {\n vertical: verticalSnapBoundInfo,\n horizontal: horizontalSnapBoundInfo,\n } = checkMoveableSnapBounds(moveable, ignoreSnap, snapPoses, boundPoses);\n const {\n vertical: verticalInnerBoundInfo,\n horizontal: horizontalInnerBoundInfo,\n } = getInnerBoundDragInfo(moveable, poses, datas);\n\n const isVerticalSnap = verticalSnapBoundInfo.isSnap;\n const isHorizontalSnap = horizontalSnapBoundInfo.isSnap;\n const isVerticalBound =\n verticalSnapBoundInfo.isBound || verticalInnerBoundInfo.isBound;\n const isHorizontalBound =\n horizontalSnapBoundInfo.isBound || horizontalInnerBoundInfo.isBound;\n const verticalOffset = maxOffset(\n verticalSnapBoundInfo.offset,\n verticalInnerBoundInfo.offset\n );\n const horizontalOffset = maxOffset(\n horizontalSnapBoundInfo.offset,\n horizontalInnerBoundInfo.offset\n );\n\n const [offsetX, offsetY] = checkThrottleDragRotate(\n throttleDragRotate,\n [distX, distY],\n [isVerticalBound, isHorizontalBound],\n [isVerticalSnap, isHorizontalSnap],\n [verticalOffset, horizontalOffset]\n );\n\n return [\n {\n isBound: isVerticalBound,\n isSnap: isVerticalSnap,\n offset: offsetX,\n },\n {\n isBound: isHorizontalBound,\n isSnap: isHorizontalSnap,\n offset: offsetY,\n },\n ];\n}\n\nexport function checkMoveableSnapBounds(\n moveable: MoveableManagerInterface,\n ignoreSnap: boolean,\n poses: { vertical: number[]; horizontal: number[]; },\n boundPoses: { vertical: number[]; horizontal: number[]; } = poses,\n): DirectionSnapType> {\n const {\n horizontal: horizontalBoundInfos,\n vertical: verticalBoundInfos,\n } = checkBoundPoses(\n getBounds(moveable),\n boundPoses.vertical,\n boundPoses.horizontal,\n );\n const {\n horizontal: horizontalSnapInfo,\n vertical: verticalSnapInfo,\n } = ignoreSnap ? {\n horizontal: { isSnap: false, index: -1 } as SnapInfo,\n vertical: { isSnap: false, index: -1 } as SnapInfo,\n } : checkMoveableSnapPoses(\n moveable,\n poses.vertical,\n poses.horizontal,\n undefined,\n undefined,\n undefined,\n undefined,\n );\n const horizontalOffset = getSnapBound(\n horizontalBoundInfos[0],\n horizontalSnapInfo\n );\n const verticalOffset = getSnapBound(\n verticalBoundInfos[0],\n verticalSnapInfo\n );\n\n const horizontalDist = abs(horizontalOffset);\n const verticalDist = abs(verticalOffset);\n\n return {\n horizontal: {\n isBound: horizontalBoundInfos[0].isBound,\n isSnap: horizontalSnapInfo.isSnap,\n snapIndex: horizontalSnapInfo.index,\n offset: horizontalOffset,\n dist: horizontalDist,\n bounds: horizontalBoundInfos,\n snap: horizontalSnapInfo,\n },\n vertical: {\n isBound: verticalBoundInfos[0].isBound,\n isSnap: verticalSnapInfo.isSnap,\n snapIndex: verticalSnapInfo.index,\n offset: verticalOffset,\n dist: verticalDist,\n bounds: verticalBoundInfos,\n snap: verticalSnapInfo,\n },\n };\n}\nexport function checkSnapBounds(\n guideines: SnapGuideline[],\n bounds: BoundType | undefined | false,\n posesX: number[],\n posesY: number[],\n snapHorizontalThreshold: number,\n snapVerticalThreshold: number,\n multiples = [1, 1],\n): DirectionSnapType> {\n const {\n horizontal: horizontalBoundInfos,\n vertical: verticalBoundInfos,\n } = checkBoundPoses(bounds, posesX, posesY);\n\n // options.isRequest ? {\n // horizontal: { isSnap: false, index: -1 } as SnapInfo,\n // vertical: { isSnap: false, index: -1 } as SnapInfo,\n // } :\n const {\n horizontal: horizontalSnapInfo,\n vertical: verticalSnapInfo,\n } = checkSnapPoses(\n guideines, posesX, posesY, [], [],\n snapHorizontalThreshold,\n snapVerticalThreshold,\n multiples,\n );\n\n const horizontalOffset = getSnapBound(\n horizontalBoundInfos[0],\n horizontalSnapInfo\n );\n const verticalOffset = getSnapBound(\n verticalBoundInfos[0],\n verticalSnapInfo\n );\n\n const horizontalDist = abs(horizontalOffset);\n const verticalDist = abs(verticalOffset);\n\n return {\n horizontal: {\n isBound: horizontalBoundInfos[0].isBound,\n isSnap: horizontalSnapInfo.isSnap,\n snapIndex: horizontalSnapInfo.index,\n offset: horizontalOffset,\n dist: horizontalDist,\n bounds: horizontalBoundInfos,\n snap: horizontalSnapInfo,\n },\n vertical: {\n isBound: verticalBoundInfos[0].isBound,\n isSnap: verticalSnapInfo.isSnap,\n snapIndex: verticalSnapInfo.index,\n offset: verticalOffset,\n dist: verticalDist,\n bounds: verticalBoundInfos,\n snap: verticalSnapInfo,\n },\n };\n}\n\n\nfunction checkSnapRightLine(\n startPos: number[],\n endPos: number[],\n snapBoundInfo: { vertical: SnapBoundInfo; horizontal: SnapBoundInfo },\n keepRatio: boolean\n) {\n const rad = (getRad(startPos, endPos) / Math.PI) * 180;\n const {\n vertical: {\n isBound: isVerticalBound,\n isSnap: isVerticalSnap,\n dist: verticalDist,\n },\n horizontal: {\n isBound: isHorizontalBound,\n isSnap: isHorizontalSnap,\n dist: horizontalDist,\n },\n } = snapBoundInfo;\n\n const rad180 = rad % 180;\n const isHorizontalLine = rad180 < 3 || rad180 > 177;\n const isVerticalLine = rad180 > 87 && rad180 < 93;\n\n if (horizontalDist < verticalDist) {\n if (\n isVerticalBound ||\n (isVerticalSnap &&\n !isVerticalLine &&\n (!keepRatio || !isHorizontalLine))\n ) {\n return \"vertical\";\n }\n }\n if (\n isHorizontalBound ||\n (isHorizontalSnap &&\n !isHorizontalLine &&\n (!keepRatio || !isVerticalLine))\n ) {\n return \"horizontal\";\n }\n return \"\";\n}\n\n\nexport function getSnapBoundInfo(\n moveable: MoveableManagerInterface,\n poses: number[][],\n directions: number[][][],\n keepRatio: boolean,\n isRequest: boolean,\n datas: any\n) {\n return directions.map(([startDirection, endDirection]) => {\n const otherStartPos = getPosByDirection(poses, startDirection);\n const otherEndPos = getPosByDirection(poses, endDirection);\n const snapBoundInfo = keepRatio\n ? checkSnapBoundsKeepRatio(\n moveable,\n otherStartPos,\n otherEndPos,\n isRequest\n )\n : checkMoveableSnapBounds(moveable, isRequest, {\n vertical: [otherEndPos[0]],\n horizontal: [otherEndPos[1]],\n });\n\n const {\n horizontal: {\n // dist: otherHorizontalDist,\n offset: otherHorizontalOffset,\n isBound: isOtherHorizontalBound,\n isSnap: isOtherHorizontalSnap,\n },\n vertical: {\n // dist: otherVerticalDist,\n offset: otherVerticalOffset,\n isBound: isOtherVerticalBound,\n isSnap: isOtherVerticalSnap,\n },\n } = snapBoundInfo;\n\n const multiple = minus(endDirection, startDirection);\n\n if (!otherVerticalOffset && !otherHorizontalOffset) {\n return {\n isBound: isOtherVerticalBound || isOtherHorizontalBound,\n isSnap: isOtherVerticalSnap || isOtherHorizontalSnap,\n sign: multiple,\n offset: [0, 0],\n };\n }\n const snapLine = checkSnapRightLine(\n otherStartPos,\n otherEndPos,\n snapBoundInfo,\n keepRatio\n );\n\n if (!snapLine) {\n return {\n sign: multiple,\n isBound: false,\n isSnap: false,\n offset: [0, 0],\n };\n }\n\n const isVertical = snapLine === \"vertical\";\n let sizeOffset = [0, 0];\n\n if (\n !keepRatio\n && abs(endDirection[0]) === 1\n && abs(endDirection[1]) === 1\n && startDirection[0] !== endDirection[0]\n && startDirection[1] !== endDirection[1]\n ) {\n sizeOffset = getDragDist({\n datas,\n distX: -otherVerticalOffset,\n distY: -otherHorizontalOffset,\n });\n } else {\n sizeOffset = solveNextOffset(\n otherStartPos,\n otherEndPos,\n -(isVertical ? otherVerticalOffset : otherHorizontalOffset),\n isVertical,\n datas,\n ).offset;\n }\n sizeOffset = sizeOffset.map((size, i) => size * (multiple[i] ? 2 / multiple[i] : 0));\n\n\n return {\n sign: multiple,\n isBound: isVertical ? isOtherVerticalBound : isOtherHorizontalBound,\n isSnap: isVertical ? isOtherVerticalSnap : isOtherHorizontalSnap,\n offset: sizeOffset,\n };\n });\n}\n\n\nfunction getSnapBoundOffset(boundInfo: BoundInfo, snapInfo: SnapOffsetInfo) {\n if (boundInfo.isBound) {\n return boundInfo.offset;\n } else if (snapInfo.isSnap) {\n return snapInfo.offset;\n }\n return 0;\n}\n\nexport function checkSnapBoundsKeepRatio(\n moveable: MoveableManagerInterface,\n startPos: number[],\n endPos: number[],\n isRequest: boolean\n): DirectionSnapType {\n const {\n horizontal: horizontalBoundInfo,\n vertical: verticalBoundInfo,\n } = checkBoundKeepRatio(moveable, startPos, endPos);\n const {\n horizontal: horizontalSnapInfo,\n vertical: verticalSnapInfo,\n } = isRequest ? ({\n horizontal: { isSnap: false },\n vertical: { isSnap: false },\n } as any) : checkSnapKeepRatio(moveable, startPos, endPos);\n\n const horizontalOffset = getSnapBoundOffset(\n horizontalBoundInfo,\n horizontalSnapInfo\n );\n const verticalOffset = getSnapBoundOffset(\n verticalBoundInfo,\n verticalSnapInfo\n );\n\n const horizontalDist = abs(horizontalOffset);\n const verticalDist = abs(verticalOffset);\n\n return {\n horizontal: {\n isBound: horizontalBoundInfo.isBound,\n isSnap: horizontalSnapInfo.isSnap,\n offset: horizontalOffset,\n dist: horizontalDist,\n },\n vertical: {\n isBound: verticalBoundInfo.isBound,\n isSnap: verticalSnapInfo.isSnap,\n offset: verticalOffset,\n dist: verticalDist,\n },\n };\n}\n\nexport function checkMaxBounds(\n moveable: MoveableManagerInterface,\n poses: number[][],\n direction: number[],\n fixedPosition: number[],\n datas: any\n) {\n const fixedDirection = [-direction[0], -direction[1]];\n const { width, height } = moveable.state;\n const bounds = moveable.props.bounds;\n let maxWidth = Infinity;\n let maxHeight = Infinity;\n\n if (bounds) {\n const directions = [\n [direction[0], -direction[1]],\n [-direction[0], direction[1]],\n ];\n const {\n left = -Infinity,\n top = -Infinity,\n right = Infinity,\n bottom = Infinity,\n } = bounds;\n\n directions.forEach((otherDirection) => {\n const isCheckVertical = otherDirection[0] !== fixedDirection[0];\n const isCheckHorizontal = otherDirection[1] !== fixedDirection[1];\n const otherPos = getPosByDirection(poses, otherDirection);\n const deg = (getRad(fixedPosition, otherPos) * 360) / Math.PI;\n\n if (isCheckHorizontal) {\n const nextOtherPos = otherPos.slice();\n\n if (abs(deg - 360) < 2 || abs(deg - 180) < 2) {\n nextOtherPos[1] = fixedPosition[1];\n }\n const {\n offset: [, heightOffset],\n isOutside: isHeightOutside,\n } = solveNextOffset(\n fixedPosition,\n nextOtherPos,\n (fixedPosition[1] < otherPos[1] ? bottom : top) -\n otherPos[1],\n false,\n datas\n );\n if (!isNaN(heightOffset)) {\n maxHeight = height + (isHeightOutside ? 1 : -1) * abs(heightOffset);\n }\n }\n if (isCheckVertical) {\n const nextOtherPos = otherPos.slice();\n\n if (abs(deg - 90) < 2 || abs(deg - 270) < 2) {\n nextOtherPos[0] = fixedPosition[0];\n }\n const {\n offset: [widthOffset],\n isOutside: isWidthOutside,\n } = solveNextOffset(\n fixedPosition,\n nextOtherPos,\n (fixedPosition[0] < otherPos[0] ? right : left) - otherPos[0],\n true,\n datas\n );\n if (!isNaN(widthOffset)) {\n maxWidth = width + (isWidthOutside ? 1 : -1) * abs(widthOffset);\n }\n }\n });\n }\n return {\n maxWidth,\n maxHeight,\n };\n}\n","import {\n setDragStart, getBeforeDragDist, getTransformDist,\n convertTransformFormat, resolveTransformEvent, fillTransformStartEvent,\n setDefaultTransformIndex, fillOriginalTransform,\n} from \"../gesto/GestoUtils\";\nimport {\n triggerEvent, fillParams,\n getDistSize, prefix,\n fillEndParams,\n fillCSSObject,\n} from \"../utils\";\nimport { minus, plus } from \"@scena/matrix\";\nimport {\n DraggableProps, OnDrag, OnDragGroup,\n OnDragGroupStart, OnDragStart, OnDragEnd, DraggableState,\n Renderer, OnDragGroupEnd, MoveableManagerInterface, MoveableGroupInterface,\n} from \"../types\";\nimport { triggerChildGesto } from \"../groupUtils\";\nimport { startCheckSnapDrag } from \"./Snappable\";\nimport { getRad, throttle, throttleArray } from \"@daybrush/utils\";\nimport { checkSnapBoundsDrag } from \"./snappable/snapBounds\";\nimport { TINY_NUM } from \"../consts\";\n\n/**\n * @namespace Draggable\n * @memberof Moveable\n * @description Draggable refers to the ability to drag and move targets.\n */\nexport default {\n name: \"draggable\",\n props: [\n \"draggable\",\n \"throttleDrag\",\n \"throttleDragRotate\",\n \"hideThrottleDragRotateLine\",\n \"startDragRotate\",\n \"edgeDraggable\",\n ] as const,\n events: [\n \"dragStart\",\n \"drag\",\n \"dragEnd\",\n \"dragGroupStart\",\n \"dragGroup\",\n \"dragGroupEnd\",\n ] as const,\n requestStyle(): string[] {\n return [\"left\", \"top\", \"right\", \"bottom\"];\n },\n requestChildStyle(): string[] {\n return [\"left\", \"top\", \"right\", \"bottom\"];\n },\n render(\n moveable: MoveableManagerInterface,\n React: Renderer,\n ): any[] {\n const { hideThrottleDragRotateLine, throttleDragRotate, zoom } = moveable.props;\n const { dragInfo, beforeOrigin } = moveable.getState();\n\n if (hideThrottleDragRotateLine || !throttleDragRotate || !dragInfo) {\n return [];\n }\n const dist = dragInfo.dist;\n\n if (!dist[0] && !dist[1]) {\n return [];\n }\n\n const width = getDistSize(dist);\n const rad = getRad(dist, [0, 0]);\n\n return [
];\n },\n dragStart(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, parentEvent, parentGesto } = e;\n const state = moveable.state;\n const {\n gestos,\n style,\n } = state;\n\n if (gestos.draggable) {\n return false;\n }\n gestos.draggable = parentGesto || moveable.targetGesto;\n\n datas.datas = {};\n datas.left = parseFloat(style.left || \"\") || 0;\n datas.top = parseFloat(style.top || \"\") || 0;\n datas.bottom = parseFloat(style.bottom || \"\") || 0;\n datas.right = parseFloat(style.right || \"\") || 0;\n datas.startValue = [0, 0];\n\n setDragStart(moveable, e);\n setDefaultTransformIndex(moveable, e, \"translate\");\n startCheckSnapDrag(moveable, datas);\n\n datas.prevDist = [0, 0];\n datas.prevBeforeDist = [0, 0];\n datas.isDrag = false;\n datas.deltaOffset = [0, 0];\n\n const params = fillParams(moveable, e, {\n set: (translate: number[]) => {\n datas.startValue = translate;\n },\n ...fillTransformStartEvent(moveable, e),\n });\n const result = parentEvent || triggerEvent(moveable, \"onDragStart\", params);\n\n if (result !== false) {\n datas.isDrag = true;\n moveable.state.dragInfo = {\n startRect: moveable.getRect(),\n dist: [0, 0],\n };\n } else {\n gestos.draggable = null;\n datas.isPinch = false;\n }\n return datas.isDrag ? params : false;\n },\n drag(\n moveable: MoveableManagerInterface,\n e: any,\n ): OnDrag | undefined {\n if (!e) {\n return;\n }\n resolveTransformEvent(moveable, e, \"translate\");\n\n const {\n datas, parentEvent,\n parentFlag, isPinch, deltaOffset,\n useSnap,\n isRequest,\n isGroup,\n parentThrottleDrag,\n } = e;\n let { distX, distY } = e;\n const { isDrag, prevDist, prevBeforeDist, startValue } = datas;\n\n if (!isDrag) {\n return;\n }\n\n if (deltaOffset) {\n distX += deltaOffset[0];\n distY += deltaOffset[1];\n }\n const props = moveable.props;\n\n const parentMoveable = props.parentMoveable;\n const throttleDrag = isGroup ? 0 : (props.throttleDrag || parentThrottleDrag || 0);\n const throttleDragRotate = parentEvent ? 0 : (props.throttleDragRotate || 0);\n\n let dragRotateRad = 0;\n let isVerticalSnap = false;\n let isVerticalBound = false;\n let isHorizontalSnap = false;\n let isHorizontalBound = false;\n\n if (!parentEvent && throttleDragRotate > 0 && (distX || distY)) {\n const startDragRotate = props.startDragRotate || 0;\n const deg\n = throttle(startDragRotate + getRad([0, 0], [distX, distY]) * 180 / Math.PI, throttleDragRotate)\n - startDragRotate;\n const ry = distY * Math.abs(Math.cos((deg - 90) / 180 * Math.PI));\n const rx = distX * Math.abs(Math.cos(deg / 180 * Math.PI));\n const r = getDistSize([rx, ry]);\n dragRotateRad = deg * Math.PI / 180;\n\n distX = r * Math.cos(dragRotateRad);\n distY = r * Math.sin(dragRotateRad);\n }\n\n if (!isPinch && !parentEvent && !parentFlag) {\n const [verticalInfo, horizontalInfo] = checkSnapBoundsDrag(\n moveable, distX, distY,\n throttleDragRotate,\n (!useSnap && isRequest) || deltaOffset,\n datas,\n );\n isVerticalSnap = verticalInfo.isSnap;\n isVerticalBound = verticalInfo.isBound;\n isHorizontalSnap = horizontalInfo.isSnap;\n isHorizontalBound = horizontalInfo.isBound;\n\n const verticalOffset = verticalInfo.offset;\n const horizontalOffset = horizontalInfo.offset;\n\n distX += verticalOffset;\n distY += horizontalOffset;\n }\n\n const beforeTranslate = plus(getBeforeDragDist({ datas, distX, distY }), startValue);\n const translate = plus(getTransformDist({ datas, distX, distY }), startValue);\n\n throttleArray(translate, TINY_NUM);\n throttleArray(beforeTranslate, TINY_NUM);\n\n if (!throttleDragRotate) {\n if (!isVerticalSnap && !isVerticalBound) {\n translate[0] = throttle(translate[0], throttleDrag);\n beforeTranslate[0] = throttle(beforeTranslate[0], throttleDrag);\n }\n if (!isHorizontalSnap && !isHorizontalBound) {\n translate[1] = throttle(translate[1], throttleDrag);\n beforeTranslate[1] = throttle(beforeTranslate[1], throttleDrag);\n }\n }\n\n\n const beforeDist = minus(beforeTranslate, startValue);\n const dist = minus(translate, startValue);\n const delta = minus(dist, prevDist);\n const beforeDelta = minus(beforeDist, prevBeforeDist);\n\n datas.prevDist = dist;\n datas.prevBeforeDist = beforeDist;\n\n\n datas.passDelta = delta; //distX - (datas.passDistX || 0);\n // datas.passDeltaY = distY - (datas.passDistY || 0);\n datas.passDist = dist; //distX;\n // datas.passDistY = distY;\n\n const left = datas.left + beforeDist[0];\n const top = datas.top + beforeDist[1];\n const right = datas.right - beforeDist[0];\n const bottom = datas.bottom - beforeDist[1];\n const nextTransform = convertTransformFormat(datas,\n `translate(${translate[0]}px, ${translate[1]}px)`, `translate(${dist[0]}px, ${dist[1]}px)`);\n\n fillOriginalTransform(e, nextTransform);\n\n moveable.state.dragInfo.dist = parentEvent ? [0, 0] : dist;\n if (!parentEvent && !parentMoveable && delta.every(num => !num) && beforeDelta.some(num => !num)) {\n return;\n }\n\n const {\n width,\n height,\n } = moveable.state;\n const params = fillParams(moveable, e, {\n transform: nextTransform,\n dist,\n delta,\n translate,\n beforeDist,\n beforeDelta,\n beforeTranslate,\n left,\n top,\n right,\n bottom,\n width,\n height,\n isPinch,\n ...fillCSSObject({\n transform: nextTransform,\n }, e),\n });\n\n !parentEvent && triggerEvent(moveable, \"onDrag\", params);\n return params;\n },\n dragAfter(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const datas = e.datas;\n const {\n deltaOffset,\n } = datas;\n\n if (deltaOffset[0] || deltaOffset[1]) {\n datas.deltaOffset = [0, 0];\n return this.drag(moveable, {...e, deltaOffset });\n }\n return false;\n },\n dragEnd(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { parentEvent, datas } = e;\n\n moveable.state.dragInfo = null;\n if (!datas.isDrag) {\n return;\n }\n datas.isDrag = false;\n const param = fillEndParams(moveable, e, {});\n !parentEvent && triggerEvent(moveable, \"onDragEnd\", param);\n return param;\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n const { datas, clientX, clientY } = e;\n\n const params = this.dragStart(moveable, e);\n\n if (!params) {\n return false;\n }\n const {\n childEvents,\n eventParams,\n } = triggerChildGesto(moveable, this, \"dragStart\", [\n clientX || 0,\n clientY || 0,\n ], e, false, \"draggable\");\n\n const nextParams: OnDragGroupStart = {\n ...params,\n targets: moveable.props.targets!,\n events: eventParams,\n };\n const result = triggerEvent(moveable, \"onDragGroupStart\", nextParams);\n\n datas.isDrag = result !== false;\n\n\n // find data.startValue and based on first child moveable\n const startValue = childEvents[0]?.datas.startValue ?? [0, 0];\n\n\n datas.throttleOffset = [startValue[0] % 1, startValue[1] % 1];\n\n return datas.isDrag ? params : false;\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n\n if (!datas.isDrag) {\n return;\n }\n const params = this.drag(moveable, {\n ...e,\n parentThrottleDrag: moveable.props.throttleDrag,\n });\n const { passDelta } = e.datas;\n const {\n eventParams,\n } = triggerChildGesto(moveable, this, \"drag\", passDelta, e, false, \"draggable\");\n\n if (!params) {\n return;\n }\n\n const nextParams: OnDragGroup = {\n targets: moveable.props.targets!,\n events: eventParams,\n ...params,\n };\n\n triggerEvent(moveable, \"onDragGroup\", nextParams);\n return nextParams;\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n const { isDrag, datas } = e;\n\n if (!datas.isDrag) {\n return;\n }\n this.dragEnd(moveable, e);\n const {\n eventParams,\n } = triggerChildGesto(moveable, this, \"dragEnd\", [0, 0], e, false, \"draggable\");\n triggerEvent(moveable, \"onDragGroupEnd\", fillEndParams(moveable, e, {\n targets: moveable.props.targets!,\n events: eventParams,\n }));\n\n return isDrag;\n },\n /**\n * @method Moveable.Draggable#request\n * @param {object} [e] - the draggable's request parameter\n * @param {number} [e.x] - x position\n * @param {number} [e.y] - y position\n * @param {number} [e.deltaX] - X number to move\n * @param {number} [e.deltaY] - Y number to move\n * @return {Moveable.Requester} Moveable Requester\n * @example\n\n * // Instantly Request (requestStart - request - requestEnd)\n * // Use Relative Value\n * moveable.request(\"draggable\", { deltaX: 10, deltaY: 10 }, true);\n * // Use Absolute Value\n * moveable.request(\"draggable\", { x: 200, y: 100 }, true);\n *\n * // requestStart\n * const requester = moveable.request(\"draggable\");\n *\n * // request\n * // Use Relative Value\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * // Use Absolute Value\n * moveable.request(\"draggable\", { x: 200, y: 100 });\n * moveable.request(\"draggable\", { x: 220, y: 100 });\n * moveable.request(\"draggable\", { x: 240, y: 100 });\n *\n * // requestEnd\n * requester.requestEnd();\n */\n request(moveable: MoveableManagerInterface) {\n const datas = {};\n const rect = moveable.getRect();\n let distX = 0;\n let distY = 0;\n let useSnap = false;\n\n return {\n isControl: false,\n requestStart(e: Record) {\n useSnap = e.useSnap;\n return { datas, useSnap };\n },\n request(e: Record) {\n if (\"x\" in e) {\n distX = e.x - rect.left;\n } else if (\"deltaX\" in e) {\n distX += e.deltaX;\n }\n if (\"y\" in e) {\n distY = e.y - rect.top;\n } else if (\"deltaY\" in e) {\n distY += e.deltaY;\n }\n\n return { datas, distX, distY, useSnap };\n },\n requestEnd() {\n return { datas, isDrag: true, useSnap };\n },\n };\n },\n unset(moveable: MoveableManagerInterface>) {\n moveable.state.gestos.draggable = null;\n moveable.state.dragInfo = null;\n },\n};\n\n/**\n * Whether or not target can be dragged. (default: false)\n * @name Moveable.Draggable#draggable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.draggable = true;\n */\n\n/**\n * throttle of x, y when drag.\n * @name Moveable.Draggable#throttleDrag\n * @default 0\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.throttleDrag = 1;\n */\n\n/**\n* throttle of angle of x, y when drag.\n* @name Moveable.Draggable#throttleDragRotate\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body);\n*\n* moveable.throttleDragRotate = 45;\n*/\n\n/**\n* start angle of throttleDragRotate of x, y when drag.\n* @name Moveable.Draggable#startDragRotate\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body);\n*\n* // 45, 135, 225, 315\n* moveable.throttleDragRotate = 90;\n* moveable.startDragRotate = 45;\n*/\n\n/**\n * When the drag starts, the dragStart event is called.\n * @memberof Moveable.Draggable\n * @event dragStart\n * @param {Moveable.Draggable.OnDragStart} - Parameters for the dragStart event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { draggable: true });\n * moveable.on(\"dragStart\", ({ target }) => {\n * console.log(target);\n * });\n */\n/**\n * When dragging, the drag event is called.\n * @memberof Moveable.Draggable\n * @event drag\n * @param {Moveable.Draggable.OnDrag} - Parameters for the drag event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { draggable: true });\n * moveable.on(\"drag\", ({ target, transform }) => {\n * target.style.transform = transform;\n * });\n */\n/**\n * When the drag finishes, the dragEnd event is called.\n * @memberof Moveable.Draggable\n * @event dragEnd\n * @param {Moveable.Draggable.OnDragEnd} - Parameters for the dragEnd event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { draggable: true });\n * moveable.on(\"dragEnd\", ({ target, isDrag }) => {\n * console.log(target, isDrag);\n * });\n */\n\n/**\n* When the group drag starts, the `dragGroupStart` event is called.\n* @memberof Moveable.Draggable\n* @event dragGroupStart\n* @param {Moveable.Draggable.OnDragGroupStart} - Parameters for the `dragGroupStart` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* draggable: true\n* });\n* moveable.on(\"dragGroupStart\", ({ targets }) => {\n* console.log(\"onDragGroupStart\", targets);\n* });\n*/\n\n/**\n* When the group drag, the `dragGroup` event is called.\n* @memberof Moveable.Draggable\n* @event dragGroup\n* @param {Moveable.Draggable.OnDragGroup} - Parameters for the `dragGroup` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* draggable: true\n* });\n* moveable.on(\"dragGroup\", ({ targets, events }) => {\n* console.log(\"onDragGroup\", targets);\n* events.forEach(ev => {\n* // drag event\n* console.log(\"onDrag left, top\", ev.left, ev.top);\n* // ev.target!.style.left = `${ev.left}px`;\n* // ev.target!.style.top = `${ev.top}px`;\n* console.log(\"onDrag translate\", ev.dist);\n* ev.target!.style.transform = ev.transform;)\n* });\n* });\n*/\n\n/**\n * When the group drag finishes, the `dragGroupEnd` event is called.\n * @memberof Moveable.Draggable\n * @event dragGroupEnd\n * @param {Moveable.Draggable.OnDragGroupEnd} - Parameters for the `dragGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * draggable: true\n * });\n * moveable.on(\"dragGroupEnd\", ({ targets, isDrag }) => {\n * console.log(\"onDragGroupEnd\", targets, isDrag);\n * });\n */\n","import {\n Renderer,\n SnappableProps,\n SnappableState,\n SnapGuideline,\n ScalableProps,\n SnapPosInfo,\n RotatableProps,\n RectInfo,\n MoveableManagerInterface,\n SnappableRenderType,\n BoundType,\n MoveableGroupInterface,\n SnapDirectionInfo,\n} from \"../types\";\nimport {\n prefix,\n calculatePoses,\n getRect,\n getAbsolutePosesByState,\n getAbsolutePoses,\n getClientRect,\n getRefTarget,\n getDragDistByState,\n triggerEvent,\n getDirectionCondition,\n abs,\n watchValue,\n} from \"../utils\";\nimport {\n find,\n findIndex, hasClass, throttle,\n} from \"@daybrush/utils\";\nimport {\n getDragDist,\n scaleMatrix,\n getPosByDirection,\n} from \"../gesto/GestoUtils\";\nimport { minus, rotate, plus } from \"@scena/matrix\";\nimport { dragControlCondition as rotatableDragControlCondtion } from \"./Rotatable\";\nimport { FLOAT_POINT_NUM } from \"../consts\";\nimport {\n getInnerBoundInfo,\n getCheckInnerBoundLineInfos,\n checkRotateInnerBounds,\n checkInnerBoundPoses,\n} from \"./snappable/innerBounds\";\nimport {\n checkBoundPoses,\n checkRotateBounds,\n getBounds,\n} from \"./snappable/bounds\";\nimport {\n checkSnaps,\n getSnapInfosByDirection,\n getNearOffsetInfo,\n getCheckSnapDirections,\n} from \"./snappable/snap\";\nimport {\n renderSnapPoses,\n renderGuidelines,\n renderDashedGuidelines,\n renderGapGuidelines,\n} from \"./snappable/render\";\nimport {\n getInitialBounds,\n hasGuidelines,\n} from \"./snappable/utils\";\nimport {\n checkMaxBounds,\n checkMoveableSnapBounds,\n getSnapBoundInfo,\n} from \"./snappable/snapBounds\";\nimport { getTotalGuidelines } from \"./snappable/getTotalGuidelines\";\nimport {\n NAME_snapRotationThreshold, NAME_snapRotationDegrees,\n NAME_snapHorizontalThreshold, NAME_snapVerticalThreshold,\n} from \"./snappable/names\";\n\n\nexport interface SnapPoses {\n vertical: number[];\n horizontal: number[];\n}\n\nexport function checkSnapInfo(\n moveable: MoveableManagerInterface\n) {\n const state = moveable.state;\n const container = state.container;\n const snapContainer = moveable.props.snapContainer || container!;\n\n if (state.snapContainer === snapContainer && state.guidelines && state.guidelines.length) {\n return false;\n }\n\n const containerClientRect = state.containerClientRect;\n const snapOffset = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n };\n\n if (container !== snapContainer) {\n const snapContainerTarget = getRefTarget(snapContainer, true);\n\n if (snapContainerTarget) {\n const snapContainerRect = getClientRect(snapContainerTarget);\n const offset1 = getDragDistByState(state, [\n snapContainerRect.left - containerClientRect.left,\n snapContainerRect.top - containerClientRect.top,\n ]);\n const offset2 = getDragDistByState(state, [\n snapContainerRect.right - containerClientRect.right,\n snapContainerRect.bottom - containerClientRect.bottom,\n ]);\n\n snapOffset.left = throttle(offset1[0], 0.00001);\n snapOffset.top = throttle(offset1[1], 0.00001);\n snapOffset.right = throttle(offset2[0], 0.00001);\n snapOffset.bottom = throttle(offset2[1], 0.00001);\n }\n }\n\n state.snapContainer = snapContainer;\n state.snapOffset = snapOffset;\n state.guidelines = getTotalGuidelines(moveable);\n state.enableSnap = true;\n return true;\n}\n\nfunction getNextFixedPoses(\n matrix: number[],\n width: number,\n height: number,\n fixedDirection: number[],\n fixedPos: number[],\n is3d: boolean\n) {\n const nextPoses = calculatePoses(matrix, width, height, is3d ? 4 : 3);\n const nextFixedPos = getPosByDirection(nextPoses, fixedDirection);\n\n return getAbsolutePoses(nextPoses, minus(fixedPos, nextFixedPos));\n}\n\nexport function normalized(value: number) {\n return value ? value / abs(value) : 0;\n}\n\nexport function getSizeOffsetInfo(\n moveable: MoveableManagerInterface,\n poses: number[][],\n direction: number[],\n keepRatio: boolean,\n isRequest: boolean,\n datas: any\n) {\n const { fixedDirection } = datas;\n const directions = getCheckSnapDirections(direction, fixedDirection, keepRatio);\n const innerBoundLineInfos = getCheckInnerBoundLineInfos(moveable, poses, direction, keepRatio);\n const offsets = [\n ...getSnapBoundInfo(\n moveable,\n poses,\n directions,\n keepRatio,\n isRequest,\n datas\n ),\n ...getInnerBoundInfo(\n moveable,\n innerBoundLineInfos,\n datas\n ),\n ];\n const widthOffsetInfo = getNearOffsetInfo(offsets, 0);\n const heightOffsetInfo = getNearOffsetInfo(offsets, 1);\n\n return {\n width: {\n isBound: widthOffsetInfo.isBound,\n offset: widthOffsetInfo.offset[0],\n },\n height: {\n isBound: heightOffsetInfo.isBound,\n offset: heightOffsetInfo.offset[1],\n },\n };\n}\n\nexport function recheckSizeByTwoDirection(\n moveable: MoveableManagerInterface,\n poses: number[][],\n width: number,\n height: number,\n maxWidth: number,\n maxHeight: number,\n direction: number[],\n isRequest: boolean,\n datas: any\n) {\n const snapPos = getPosByDirection(poses, direction);\n\n const {\n horizontal: { offset: horizontalOffset },\n vertical: { offset: verticalOffset },\n } = checkMoveableSnapBounds(moveable, isRequest, {\n vertical: [snapPos[0]],\n horizontal: [snapPos[1]],\n });\n\n if (throttle(verticalOffset, FLOAT_POINT_NUM) || throttle(horizontalOffset, FLOAT_POINT_NUM)) {\n const [nextWidthOffset, nextHeightOffset] = getDragDist({\n datas,\n distX: -verticalOffset,\n distY: -horizontalOffset,\n });\n const nextWidth = Math.min(\n maxWidth || Infinity,\n width + direction[0] * nextWidthOffset\n );\n const nextHeight = Math.min(\n maxHeight || Infinity,\n height + direction[1] * nextHeightOffset\n );\n\n return [nextWidth - width, nextHeight - height];\n }\n return [0, 0];\n}\n\nexport function checkSizeDist(\n moveable: MoveableManagerInterface,\n getNextPoses: (widthOffset: number, heightOffset: number) => number[][],\n width: number,\n height: number,\n direction: number[],\n fixedPosition: number[],\n isRequest: boolean,\n datas: any\n) {\n const poses = getAbsolutePosesByState(moveable.state);\n const keepRatio = moveable.props.keepRatio;\n\n let widthOffset = 0;\n let heightOffset = 0;\n\n for (let i = 0; i < 2; ++i) {\n const nextPoses = getNextPoses(widthOffset, heightOffset);\n const {\n width: widthOffsetInfo,\n height: heightOffsetInfo,\n } = getSizeOffsetInfo(\n moveable,\n nextPoses,\n direction,\n keepRatio,\n isRequest,\n datas\n );\n\n const isWidthBound = widthOffsetInfo.isBound;\n const isHeightBound = heightOffsetInfo.isBound;\n let nextWidthOffset = widthOffsetInfo.offset;\n let nextHeightOffset = heightOffsetInfo.offset;\n\n\n if (i === 1) {\n if (!isWidthBound) {\n nextWidthOffset = 0;\n }\n if (!isHeightBound) {\n nextHeightOffset = 0;\n }\n }\n if (i === 0 && isRequest && !isWidthBound && !isHeightBound) {\n return [0, 0];\n }\n if (keepRatio) {\n const widthDist =\n abs(nextWidthOffset) * (width ? 1 / width : 1);\n const heightDist =\n abs(nextHeightOffset) * (height ? 1 / height : 1);\n const isGetWidthOffset =\n isWidthBound && isHeightBound\n ? widthDist < heightDist\n : isHeightBound ||\n (!isWidthBound && widthDist < heightDist);\n if (isGetWidthOffset) {\n // width : height = ? : heightOffset\n nextWidthOffset = (width * nextHeightOffset) / height;\n } else {\n // width : height = widthOffset : ?\n nextHeightOffset = (height * nextWidthOffset) / width;\n }\n }\n widthOffset += nextWidthOffset;\n heightOffset += nextHeightOffset;\n }\n\n if (!keepRatio && direction[0] && direction[1]) {\n const { maxWidth, maxHeight } = checkMaxBounds(\n moveable,\n poses,\n direction,\n fixedPosition,\n datas\n );\n\n const [nextWidthOffset, nextHeightOffset] = recheckSizeByTwoDirection(\n moveable,\n getNextPoses(widthOffset, heightOffset).map(pos => pos.map(p => throttle(p, FLOAT_POINT_NUM))),\n width + widthOffset,\n height + heightOffset,\n maxWidth,\n maxHeight,\n direction,\n isRequest,\n datas\n );\n\n widthOffset += nextWidthOffset;\n heightOffset += nextHeightOffset;\n }\n\n return [widthOffset, heightOffset];\n}\n\nexport function absDegree(deg: number) {\n if (deg < 0) {\n deg = deg % 360 + 360;\n }\n deg %= 360;\n return deg;\n}\n\nexport function bumpDegree(baseDeg: number, snapDeg: number) {\n // baseDeg -80\n // snapDeg 270\n // return -90\n snapDeg = absDegree(snapDeg);\n\n const count = Math.floor(baseDeg / 360);\n\n\n const deg1 = count * 360 + 360 - snapDeg;\n const deg2 = count * 360 + snapDeg;\n\n return abs(baseDeg - deg1) < abs(baseDeg - deg2) ? deg1 : deg2;\n}\n\nexport function getMinDegreeDistance(deg1: number, deg2: number) {\n deg1 = absDegree(deg1);\n deg2 = absDegree(deg2);\n\n const deg3 = absDegree(deg1 - deg2);\n\n return Math.min(deg3, 360 - deg3);\n}\n\nexport function checkSnapRotate(\n moveable: MoveableManagerInterface,\n rect: RectInfo,\n dist: number,\n rotation: number,\n) {\n const props = moveable.props;\n const snapRotationThreshold = props[NAME_snapRotationThreshold] ?? 5;\n const snapRotationDegrees = props[NAME_snapRotationDegrees];\n\n if (hasGuidelines(moveable, \"rotatable\")) {\n const { pos1, pos2, pos3, pos4, origin: origin2 } = rect;\n const rad = (dist * Math.PI) / 180;\n const prevPoses = [pos1, pos2, pos3, pos4].map((pos) => minus(pos, origin2));\n const nextPoses = prevPoses.map((pos) => rotate(pos, rad));\n\n // console.log(moveable.state.left, moveable.state.top, moveable.state.origin);\n // console.log(pos1, pos2, pos3, pos4, origin, rad, prevPoses, nextPoses);\n const result = [\n ...checkRotateBounds(moveable, prevPoses, nextPoses, origin2, dist),\n ...checkRotateInnerBounds(\n moveable,\n prevPoses,\n nextPoses,\n origin2,\n dist\n ),\n ];\n result.sort((a, b) => abs(a - dist) - abs(b - dist));\n const isSnap = result.length > 0;\n\n if (isSnap) {\n return {\n isSnap,\n dist: isSnap ? result[0] : dist,\n };\n }\n }\n if (snapRotationDegrees?.length && snapRotationThreshold) {\n\n\n const sorted = snapRotationDegrees.slice().sort((a, b) => {\n return getMinDegreeDistance(a, rotation) - getMinDegreeDistance(b, rotation);\n });\n const firstDegree = sorted[0];\n\n if (getMinDegreeDistance(firstDegree, rotation) <= snapRotationThreshold) {\n\n return {\n isSnap: true,\n dist: dist + bumpDegree(rotation, firstDegree) - rotation,\n };\n }\n }\n return {\n isSnap: false,\n dist,\n };\n\n}\n\nexport function checkSnapResize(\n moveable: MoveableManagerInterface<{}, {}>,\n width: number,\n height: number,\n direction: number[],\n fixedPosition: number[],\n isRequest: boolean,\n datas: any\n) {\n if (!hasGuidelines(moveable, \"resizable\")) {\n return [0, 0];\n }\n const { fixedDirection, nextAllMatrix } = datas;\n const { allMatrix, is3d } = moveable.state;\n\n return checkSizeDist(\n moveable,\n (widthOffset: number, heightOffset: number) => {\n return getNextFixedPoses(\n nextAllMatrix || allMatrix,\n width + widthOffset,\n height + heightOffset,\n fixedDirection,\n fixedPosition,\n is3d\n );\n },\n width,\n height,\n direction,\n fixedPosition,\n isRequest,\n datas\n );\n}\nexport function checkSnapScale(\n moveable: MoveableManagerInterface,\n scale: number[],\n direction: number[],\n isRequest: boolean,\n datas: any\n) {\n if (!hasGuidelines(moveable, \"scalable\")) {\n return [0, 0];\n }\n const { startOffsetWidth, startOffsetHeight, fixedPosition, fixedDirection, is3d } = datas;\n const sizeDist = checkSizeDist(\n moveable,\n (widthOffset: number, heightOffset: number) => {\n return getNextFixedPoses(\n scaleMatrix(\n datas,\n plus(scale, [widthOffset / startOffsetWidth, heightOffset / startOffsetHeight]),\n ),\n startOffsetWidth,\n startOffsetHeight,\n fixedDirection,\n fixedPosition,\n is3d\n );\n },\n startOffsetWidth,\n startOffsetHeight,\n direction,\n fixedPosition,\n isRequest,\n datas\n );\n return [sizeDist[0] / startOffsetWidth, sizeDist[1] / startOffsetHeight];\n}\n\nexport function startCheckSnapDrag(\n moveable: MoveableManagerInterface,\n datas: any\n) {\n datas.absolutePoses = getAbsolutePosesByState(moveable.state);\n}\n\n\n\nfunction getSnapGuidelines(posInfos: SnapPosInfo[]) {\n const guidelines: Array<{ guideline: SnapGuideline, posInfo: SnapPosInfo }> = [];\n\n posInfos.forEach((posInfo) => {\n posInfo.guidelineInfos.forEach(({ guideline }) => {\n if (find(guidelines, info => info.guideline === guideline)) {\n return;\n }\n guideline.direction = \"\";\n guidelines.push({ guideline, posInfo });\n });\n });\n\n return guidelines.map(({ guideline, posInfo }) => {\n return {\n ...guideline,\n direction: posInfo.direction,\n };\n });\n}\n\nfunction addBoundGuidelines(\n moveable: MoveableManagerInterface,\n verticalPoses: number[],\n horizontalPoses: number[],\n verticalSnapPoses: SnappableRenderType[],\n horizontalSnapPoses: SnappableRenderType[],\n externalBounds?: BoundType | false | null\n) {\n const {\n vertical: verticalBoundInfos,\n horizontal: horizontalBoundInfos,\n } = checkBoundPoses(\n getBounds(moveable, externalBounds),\n verticalPoses,\n horizontalPoses\n );\n\n const boundMap = getInitialBounds();\n\n\n verticalBoundInfos.forEach((info) => {\n if (info.isBound) {\n if (info.direction === \"start\") {\n boundMap.left = true;\n }\n if (info.direction === \"end\") {\n boundMap.right = true;\n }\n verticalSnapPoses.push({\n type: \"bounds\",\n pos: info.pos,\n });\n }\n });\n horizontalBoundInfos.forEach((info) => {\n if (info.isBound) {\n if (info.direction === \"start\") {\n boundMap.top = true;\n }\n if (info.direction === \"end\") {\n boundMap.bottom = true;\n }\n horizontalSnapPoses.push({\n type: \"bounds\",\n pos: info.pos,\n });\n }\n });\n const {\n boundMap: innerBoundMap,\n vertical: verticalInnerBoundPoses,\n horizontal: horizontalInnerBoundPoses,\n } = checkInnerBoundPoses(moveable);\n\n verticalInnerBoundPoses.forEach((innerPos) => {\n if (\n findIndex(\n verticalSnapPoses,\n ({ type, pos }) => type === \"bounds\" && pos === innerPos\n ) >= 0\n ) {\n return;\n }\n verticalSnapPoses.push({\n type: \"bounds\",\n pos: innerPos,\n });\n });\n\n horizontalInnerBoundPoses.forEach((innerPos) => {\n if (\n findIndex(\n horizontalSnapPoses,\n ({ type, pos }) => type === \"bounds\" && pos === innerPos\n ) >= 0\n ) {\n return;\n }\n horizontalSnapPoses.push({\n type: \"bounds\",\n pos: innerPos,\n });\n });\n\n return {\n boundMap,\n innerBoundMap,\n };\n}\n\nconst directionCondition = getDirectionCondition(\"\", [\"resizable\", \"scalable\"]);\n\n\n\n/**\n * @namespace Moveable.Snappable\n * @description Whether or not target can be snapped to the guideline. (default: false)\n * @sort 2\n */\nexport default {\n name: \"snappable\",\n dragRelation: \"strong\",\n props: [\n \"snappable\",\n \"snapContainer\",\n \"snapDirections\",\n \"elementSnapDirections\",\n \"snapGap\",\n \"snapGridWidth\",\n \"snapGridHeight\",\n \"isDisplaySnapDigit\",\n \"isDisplayInnerSnapDigit\",\n \"isDisplayGridGuidelines\",\n \"snapDigit\",\n \"snapThreshold\",\n \"snapRenderThreshold\",\n \"snapGridAll\",\n NAME_snapRotationThreshold,\n NAME_snapRotationDegrees,\n NAME_snapHorizontalThreshold,\n NAME_snapVerticalThreshold,\n \"horizontalGuidelines\",\n \"verticalGuidelines\",\n \"elementGuidelines\",\n \"bounds\",\n \"innerBounds\",\n \"snapDistFormat\",\n \"maxSnapElementGuidelineDistance\",\n \"maxSnapElementGapDistance\",\n ] as const,\n events: [\"snap\", \"bound\"] as const,\n css: [\n `:host {\n--bounds-color: #d66;\n}\n.guideline {\npointer-events: none;\nz-index: 2;\n}\n.guideline.bounds {\nbackground: #d66;\nbackground: var(--bounds-color);\n}\n.guideline-group {\nposition: absolute;\ntop: 0;\nleft: 0;\n}\n.guideline-group .size-value {\nposition: absolute;\ncolor: #f55;\nfont-size: 12px;\nfont-size: calc(12px * var(--zoom));\nfont-weight: bold;\n}\n.guideline-group.horizontal .size-value {\ntransform-origin: 50% 100%;\ntransform: translateX(-50%);\nleft: 50%;\nbottom: 5px;\nbottom: calc(2px + 3px * var(--zoom));\n}\n.guideline-group.vertical .size-value {\ntransform-origin: 0% 50%;\ntop: 50%;\ntransform: translateY(-50%);\nleft: 5px;\nleft: calc(2px + 3px * var(--zoom));\n}\n.guideline.gap {\nbackground: #f55;\n}\n.size-value.gap {\ncolor: #f55;\n}\n`,\n ],\n render(\n moveable: MoveableManagerInterface,\n React: Renderer\n ): any[] {\n const state = moveable.state;\n const {\n top: targetTop,\n left: targetLeft,\n pos1,\n pos2,\n pos3,\n pos4,\n snapRenderInfo,\n } = state;\n const {\n snapRenderThreshold = 1,\n } = moveable.props;\n\n if (!snapRenderInfo || !snapRenderInfo.render || !hasGuidelines(moveable, \"\")) {\n // reset store\n watchValue(\n moveable,\n \"boundMap\",\n getInitialBounds(),\n v => JSON.stringify(v),\n );\n watchValue(\n moveable,\n \"innerBoundMap\",\n getInitialBounds(),\n v => JSON.stringify(v),\n );\n return [];\n }\n state.guidelines = getTotalGuidelines(moveable);\n\n\n const minLeft = Math.min(pos1[0], pos2[0], pos3[0], pos4[0]);\n const minTop = Math.min(pos1[1], pos2[1], pos3[1], pos4[1]);\n const externalPoses = snapRenderInfo.externalPoses || [];\n const poses = getAbsolutePosesByState(moveable.state);\n const verticalSnapPoses: SnappableRenderType[] = [];\n const horizontalSnapPoses: SnappableRenderType[] = [];\n const verticalGuidelines: SnapGuideline[] = [];\n const horizontalGuidelines: SnapGuideline[] = [];\n const snapInfos: Array<{\n vertical: SnapDirectionInfo;\n horizontal: SnapDirectionInfo;\n }> = [];\n const { width, height, top, left, bottom, right } = getRect(poses);\n const targetRect = { left, right, top, bottom, center: (left + right) / 2, middle: (top + bottom) / 2 };\n const hasExternalPoses = externalPoses.length > 0;\n const externalRect = hasExternalPoses\n ? getRect(externalPoses)\n : ({} as ReturnType);\n\n if (!snapRenderInfo.request) {\n if (snapRenderInfo.direction) {\n snapInfos.push(\n getSnapInfosByDirection(\n moveable,\n poses,\n snapRenderInfo.direction,\n snapRenderThreshold,\n snapRenderThreshold,\n )\n );\n }\n if (snapRenderInfo.snap) {\n const rect = getRect(poses);\n if (snapRenderInfo.center) {\n (rect as any).middle = (rect.top + rect.bottom) / 2;\n (rect as any).center = (rect.left + rect.right) / 2;\n }\n snapInfos.push(checkSnaps(moveable, rect, snapRenderThreshold, snapRenderThreshold));\n }\n if (hasExternalPoses) {\n if (snapRenderInfo.center) {\n (externalRect as any).middle =\n (externalRect.top + externalRect.bottom) / 2;\n (externalRect as any).center =\n (externalRect.left + externalRect.right) / 2;\n }\n snapInfos.push(checkSnaps(moveable, externalRect, snapRenderThreshold, snapRenderThreshold));\n }\n snapInfos.forEach((snapInfo) => {\n const {\n vertical: { posInfos: verticalPosInfos },\n horizontal: { posInfos: horizontalPosInfos },\n } = snapInfo;\n verticalSnapPoses.push(\n ...verticalPosInfos.filter(({ guidelineInfos }) => {\n return guidelineInfos.some(({ guideline }) => !guideline.hide);\n }).map(\n (posInfo) => ({\n type: \"snap\",\n pos: posInfo.pos,\n } as const)\n )\n );\n horizontalSnapPoses.push(\n ...horizontalPosInfos.filter(({ guidelineInfos }) => {\n return guidelineInfos.some(({ guideline }) => !guideline.hide);\n }).map(\n (posInfo) => ({\n type: \"snap\",\n pos: posInfo.pos,\n } as const)\n )\n );\n\n verticalGuidelines.push(...getSnapGuidelines(verticalPosInfos));\n horizontalGuidelines.push(...getSnapGuidelines(horizontalPosInfos));\n });\n }\n\n const {\n boundMap,\n innerBoundMap,\n } = addBoundGuidelines(\n moveable,\n [left, right],\n [top, bottom],\n verticalSnapPoses,\n horizontalSnapPoses\n );\n if (hasExternalPoses) {\n addBoundGuidelines(\n moveable,\n [externalRect.left, externalRect.right],\n [externalRect.top, externalRect.bottom],\n verticalSnapPoses,\n horizontalSnapPoses,\n snapRenderInfo.externalBounds\n );\n }\n const allGuidelines = [...verticalGuidelines, ...horizontalGuidelines];\n const elementGuidelines = allGuidelines.filter(guideline => guideline.element && !guideline.gapRects);\n const gapGuidelines = allGuidelines.filter(guideline => guideline.gapRects).sort((a, b) => {\n return a.gap! - b.gap!;\n });\n\n triggerEvent(\n moveable,\n \"onSnap\",\n {\n guidelines: allGuidelines.filter(({ element }) => !element),\n elements: elementGuidelines,\n gaps: gapGuidelines,\n },\n true\n );\n\n const nextBoundMap = watchValue(\n moveable,\n \"boundMap\",\n boundMap,\n v => JSON.stringify(v),\n getInitialBounds(),\n );\n const nextInnerBoundMap = watchValue(\n moveable,\n \"innerBoundMap\",\n innerBoundMap,\n v => JSON.stringify(v),\n getInitialBounds(),\n );\n\n if (boundMap === nextBoundMap || innerBoundMap === nextInnerBoundMap) {\n triggerEvent(\n moveable,\n \"onBound\",\n {\n bounds: boundMap,\n innerBounds: innerBoundMap,\n },\n true\n );\n }\n\n\n\n // verticalSnapPoses.\n return [\n ...renderDashedGuidelines(\n moveable,\n elementGuidelines,\n [minLeft, minTop],\n targetRect,\n React,\n ),\n ...renderGapGuidelines(\n moveable,\n gapGuidelines,\n [minLeft, minTop],\n targetRect,\n React,\n ),\n ...renderGuidelines(\n moveable,\n \"horizontal\",\n horizontalGuidelines,\n [targetLeft, targetTop],\n targetRect,\n React\n ),\n ...renderGuidelines(\n moveable,\n \"vertical\",\n verticalGuidelines,\n [targetLeft, targetTop],\n targetRect,\n React\n ),\n ...renderSnapPoses(\n moveable,\n \"horizontal\",\n horizontalSnapPoses,\n minLeft,\n targetTop,\n width,\n 0,\n React\n ),\n ...renderSnapPoses(\n moveable,\n \"vertical\",\n verticalSnapPoses,\n minTop,\n targetLeft,\n height,\n 1,\n React\n ),\n ];\n },\n dragStart(\n moveable: MoveableManagerInterface,\n e: any\n ) {\n moveable.state.snapRenderInfo = {\n request: e.isRequest,\n snap: true,\n center: true,\n };\n checkSnapInfo(moveable);\n },\n drag(\n moveable: MoveableManagerInterface\n ) {\n const state = moveable.state;\n if (!checkSnapInfo(moveable)) {\n state.guidelines = getTotalGuidelines(moveable);\n }\n if (state.snapRenderInfo) {\n state.snapRenderInfo.render = true;\n }\n },\n pinchStart(\n moveable: MoveableManagerInterface\n ) {\n this.unset(moveable);\n },\n dragEnd(\n moveable: MoveableManagerInterface\n ) {\n this.unset(moveable);\n },\n dragControlCondition(moveable: MoveableManagerInterface, e: any) {\n if (directionCondition(moveable, e) || rotatableDragControlCondtion(moveable, e)) {\n return true;\n }\n if (!e.isRequest && e.inputEvent) {\n return hasClass(e.inputEvent.target, prefix(\"snap-control\"));\n }\n },\n dragControlStart(\n moveable: MoveableManagerInterface\n ) {\n moveable.state.snapRenderInfo = null;\n checkSnapInfo(moveable);\n },\n dragControl(\n moveable: MoveableManagerInterface\n ) {\n this.drag(moveable);\n },\n dragControlEnd(\n moveable: MoveableManagerInterface\n ) {\n this.unset(moveable);\n },\n dragGroupStart(moveable: any, e: any) {\n this.dragStart(moveable, e);\n },\n dragGroup(\n moveable: MoveableGroupInterface\n ) {\n this.drag(moveable);\n },\n dragGroupEnd(\n moveable: MoveableGroupInterface\n ) {\n this.unset(moveable);\n },\n dragGroupControlStart(\n moveable: MoveableGroupInterface\n ) {\n moveable.state.snapRenderInfo = null;\n checkSnapInfo(moveable);\n },\n dragGroupControl(\n moveable: MoveableManagerInterface\n ) {\n this.drag(moveable);\n },\n dragGroupControlEnd(\n moveable: MoveableGroupInterface\n ) {\n this.unset(moveable);\n },\n unset(moveable: any) {\n const state = moveable.state;\n\n state.enableSnap = false;\n state.guidelines = [];\n state.snapRenderInfo = null;\n state.elementRects = [];\n },\n};\n\n\n/**\n * Whether or not target can be snapped to the guideline. (default: false)\n * @name Moveable.Snappable#snappable\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.snappable = true;\n */\n/**\n * A snap container that is the basis for snap, bounds, and innerBounds. (default: null = container)\n * @name Moveable.Snappable#snapContainer\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.querySelector(\".container\"));\n *\n * moveable.snapContainer = document.body;\n */\n/**\n * You can specify the directions to snap to the target. (default: { left: true, top: true, right: true, bottom: true })\n * @name Moveable.Snappable#snapDirections\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * snappable: true,\n * snapDirections: true,\n * });\n * // snap center\n * moveable.snapDirections = { left: true, top: true, right: true, bottom: true, center: true, middle: true };\n */\n\n/**\n * You can specify the snap directions of elements. (default: { left: true, ftrue, right: true, bottom: true })\n * @name Moveable.Snappable#elementSnapDirections\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * snappable: true,\n * elementSnapDirections: true,\n * });\n * // snap center\n * moveable.elementSnapDirections = { left: true, top: true, right: true, bottom: true, center: true, middle: true };\n */\n/**\n * When you drag, make the gap snap in the element guidelines. (default: true)\n * @name Moveable.Snappable#snapGap\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * snappable: true,\n * snapElement: true,\n * snapGap: true,\n * });\n *\n * moveable.snapGap = false;\n */\n/**\n * Distance value that can snap to guidelines. (default: 5)\n * @name Moveable.Snappable#snapThreshold\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.snapThreshold = 5;\n */\n\n/**\n * Add guidelines in the horizontal direction. (default: [])\n * @name Moveable.Snappable#horizontalGuidelines\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.horizontalGuidelines = [100, 200, 500];\n */\n\n/**\n * Add guidelines in the vertical direction. (default: [])\n * @name Moveable.Snappable#verticalGuidelines\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.verticalGuidelines = [100, 200, 500];\n */\n/**\n * Add guidelines for the element. (default: [])\n * @name Moveable.Snappable#elementGuidelines\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.elementGuidelines = [\n * document.querySelector(\".element\"),\n * ];\n */\n/**\n * You can set up boundaries.\n * @name Moveable.Snappable#bounds\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @default null\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.bounds = { left: 0, right: 1000, top: 0, bottom: 1000};\n */\n/**\n * You can set up inner boundaries.\n * @name Moveable.Snappable#innerBounds\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @default null\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.innerBounds = { left: 500, top: 500, width: 100, height: 100};\n */\n/**\n * snap distance digits (default: 0)\n * @name Moveable.Snappable#snapDigit\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.snapDigit = 0\n */\n\n/**\n * If width size is greater than 0, you can vertical snap to the grid. (default: 0)\n * @name Moveable.Snappable#snapGridWidth\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.snapGridWidth = 5;\n */\n\n/**\n * If height size is greater than 0, you can horizontal snap to the grid. (default: 0)\n * @name Moveable.Snappable#snapGridHeight\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.snapGridHeight = 5;\n */\n/**\n * Whether to show snap distance (default: true)\n * @name Moveable.Snappable#isDisplaySnapDigit\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.isDisplaySnapDigit = true;\n */\n\n/**\n * Whether to show element inner snap distance (default: false)\n * @name Moveable.Snappable#isDisplayInnerSnapDigit\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.isDisplayInnerSnapDigit = true;\n */\n\n\n/**\n * You can set the text format of the distance shown in the guidelines. (default: self)\n * @name Moveable.Snappable#snapDistFormat\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Snappable.html#.SnappableOptions}\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * snappable: true,\n * snapDistFormat: (v, type) => v,\n * });\n * moveable.snapDistFormat = (v, type) => `${v}px`;\n */\n\n/**\n * When you drag or dragControl, the `snap` event is called.\n * @memberof Moveable.Snappable\n * @event snap\n * @param {Moveable.Snappable.OnSnap} - Parameters for the `snap` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * snappable: true\n * });\n * moveable.on(\"snap\", e => {\n * console.log(\"onSnap\", e);\n * });\n */\n","import { calculatePosition } from \"../utils\";\nimport { getDirectionByPos, getPosByDirection } from \"../gesto/GestoUtils\";\n\n\nexport function getFixedDirectionInfo(\n startPositions: number[][],\n fixedDirection: number[],\n) {\n const fixedPosition = getPosByDirection(startPositions, fixedDirection);\n const fixedOffset = [0, 0];\n\n return {\n fixedPosition,\n fixedDirection,\n fixedOffset,\n };\n}\n\nexport function getOffsetFixedDirectionInfo(\n state: {\n allMatrix: number[];\n is3d: boolean;\n width: number;\n height: number;\n },\n fixedDirection: number[],\n) {\n // for start\n const {\n allMatrix,\n is3d,\n width,\n height,\n } = state;\n const n = is3d ? 4 : 3;\n const nextFixedOffset = [\n width / 2 * (1 + fixedDirection[0]),\n height / 2 * (1 + fixedDirection[1]),\n ];\n const fixedPosition = calculatePosition(allMatrix, nextFixedOffset, n);\n const fixedOffset = [0, 0];\n\n return {\n fixedPosition,\n fixedDirection,\n fixedOffset,\n };\n}\n\n\nexport function getOffsetFixedPositionInfo(\n state: {\n allMatrix: number[];\n is3d: boolean;\n width: number;\n height: number;\n },\n offsetFixedPosition: number[],\n) {\n // for start\n const {\n allMatrix,\n is3d,\n width,\n height,\n } = state;\n const n = is3d ? 4 : 3;\n const fixedDirection = getDirectionByPos(offsetFixedPosition, width, height);\n const nextFixedPosition = calculatePosition(allMatrix, offsetFixedPosition, n);\n const fixedOffset = [\n width ? 0 : offsetFixedPosition[0],\n height ? 0 : offsetFixedPosition[1],\n ];\n\n return {\n fixedPosition: nextFixedPosition,\n fixedDirection,\n fixedOffset,\n };\n}\n","import {\n triggerEvent,\n fillParams,\n fillEndParams,\n getAbsolutePosesByState,\n catchEvent,\n getOffsetSizeDist,\n getProps,\n getDirectionCondition,\n calculatePoses,\n fillAfterTransform,\n getDirectionViewClassName,\n getTotalDirection,\n abs,\n} from \"../utils\";\nimport {\n setDragStart,\n getResizeDist,\n getAbsolutePosition,\n getNextMatrix,\n getNextTransforms,\n} from \"../gesto/GestoUtils\";\nimport {\n ResizableProps, OnResizeGroup, OnResizeGroupEnd,\n OnResizeGroupStart, DraggableProps, OnDrag, OnResizeStart, SnappableState,\n OnResize, OnResizeEnd, MoveableManagerInterface, MoveableGroupInterface, SnappableProps,\n OnBeforeResize, OnBeforeResizeGroup, ResizableRequestParam,\n} from \"../types\";\nimport { getRenderDirections } from \"../renderDirections\";\nimport {\n fillChildEvents,\n startChildDist,\n triggerChildAbles,\n} from \"../groupUtils\";\nimport Draggable from \"./Draggable\";\nimport { calculate, convertDimension, createRotateMatrix, plus } from \"@scena/matrix\";\nimport CustomGesto, { setCustomDrag } from \"../gesto/CustomGesto\";\nimport { checkSnapResize } from \"./Snappable\";\nimport {\n calculateBoundSize,\n isString, convertUnitSize,\n throttle,\n isNumber,\n} from \"@daybrush/utils\";\nimport { TINY_NUM } from \"../consts\";\nimport { parseMat } from \"css-to-mat\";\nimport { getFixedDirectionInfo, getOffsetFixedPositionInfo } from \"../utils/getFixedDirection\";\n\n/**\n * @namespace Resizable\n * @memberof Moveable\n * @description Resizable indicates whether the target's width and height can be increased or decreased.\n */\n\nconst directionCondition = getDirectionCondition(\"resizable\");\n\nexport default {\n name: \"resizable\",\n ableGroup: \"size\",\n canPinch: true,\n props: [\n \"resizable\",\n \"throttleResize\",\n \"renderDirections\",\n \"displayAroundControls\",\n \"keepRatio\",\n \"resizeFormat\",\n \"keepRatioFinally\",\n \"edge\",\n \"checkResizableError\",\n ] as const,\n events: [\n \"resizeStart\",\n \"beforeResize\",\n \"resize\",\n \"resizeEnd\",\n \"resizeGroupStart\",\n \"beforeResizeGroup\",\n \"resizeGroup\",\n \"resizeGroupEnd\",\n ] as const,\n render: getRenderDirections(\"resizable\"),\n dragControlCondition: directionCondition,\n viewClassName: getDirectionViewClassName(\"resizable\"),\n dragControlStart(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const {\n inputEvent,\n isPinch,\n isGroup,\n parentDirection,\n parentGesto,\n datas,\n parentFixedDirection,\n parentEvent,\n } = e;\n\n const direction = getTotalDirection(\n parentDirection,\n isPinch,\n inputEvent,\n datas,\n );\n\n const state = moveable.state;\n const { target, width, height, gestos } = state;\n\n if (!direction || !target) {\n return false;\n }\n if (gestos.resizable) {\n return false;\n }\n gestos.resizable = parentGesto || moveable.controlGesto;\n !isPinch && setDragStart(moveable, e);\n\n datas.datas = {};\n datas.direction = direction;\n datas.startOffsetWidth = width;\n datas.startOffsetHeight = height;\n datas.prevWidth = 0;\n datas.prevHeight = 0;\n\n datas.minSize = [0, 0];\n\n\n datas.startWidth = state.inlineCSSWidth || state.cssWidth;\n datas.startHeight = state.inlineCSSHeight || state.cssHeight;\n datas.maxSize = [Infinity, Infinity];\n\n if (!isGroup) {\n datas.minSize = [\n state.minOffsetWidth,\n state.minOffsetHeight,\n ];\n datas.maxSize = [\n state.maxOffsetWidth,\n state.maxOffsetHeight,\n ];\n }\n const transformOrigin = moveable.props.transformOrigin || \"% %\";\n\n datas.transformOrigin = transformOrigin && isString(transformOrigin)\n ? transformOrigin.split(\" \")\n : transformOrigin;\n\n datas.startOffsetMatrix = state.offsetMatrix;\n datas.startTransformOrigin = state.transformOrigin;\n\n datas.isWidth = e?.parentIsWidth ?? ((!direction[0] && !direction[1]) || direction[0] || !direction[1]);\n\n function setRatio(ratio: number) {\n datas.ratio = ratio && isFinite(ratio) ? ratio : 0;\n }\n\n\n datas.startPositions = getAbsolutePosesByState(moveable.state);\n\n function setFixedDirection(fixedDirection: number[]) {\n const result = getFixedDirectionInfo(datas.startPositions, fixedDirection);\n\n datas.fixedDirection = result.fixedDirection;\n datas.fixedPosition = result.fixedPosition;\n datas.fixedOffset = result.fixedOffset;\n }\n function setFixedPosition(fixedPosition: number[]) {\n const result = getOffsetFixedPositionInfo(moveable.state, fixedPosition);\n\n datas.fixedDirection = result.fixedDirection;\n datas.fixedPosition = result.fixedPosition;\n datas.fixedOffset = result.fixedOffset;\n }\n function setMin(minSize: Array) {\n datas.minSize = [\n convertUnitSize(`${minSize[0]}`, 0) || 0,\n convertUnitSize(`${minSize[1]}`, 0) || 0,\n ];\n }\n function setMax(maxSize: Array) {\n const nextMaxSize = [\n maxSize[0] || Infinity,\n maxSize[1] || Infinity,\n ];\n if (!isNumber(nextMaxSize[0]) || isFinite(nextMaxSize[0])) {\n nextMaxSize[0] = convertUnitSize(`${nextMaxSize[0]}`, 0) || Infinity;\n }\n if (!isNumber(nextMaxSize[1]) || isFinite(nextMaxSize[1])) {\n nextMaxSize[1] = convertUnitSize(`${nextMaxSize[1]}`, 0) || Infinity;\n }\n datas.maxSize = nextMaxSize;\n }\n\n setRatio(width / height);\n setFixedDirection(parentFixedDirection || [-direction[0], -direction[1]]);\n\n datas.setFixedDirection = setFixedDirection;\n datas.setFixedPosition = setFixedPosition;\n datas.setMin = setMin;\n datas.setMax = setMax;\n const params = fillParams(moveable, e, {\n direction,\n startRatio: datas.ratio,\n set: ([startWidth, startHeight]: number[]) => {\n datas.startWidth = startWidth;\n datas.startHeight = startHeight;\n },\n setMin,\n setMax,\n setRatio,\n setFixedDirection,\n setFixedPosition,\n setOrigin: (origin: Array) => {\n datas.transformOrigin = origin;\n },\n dragStart: Draggable.dragStart(\n moveable,\n new CustomGesto().dragStart([0, 0], e),\n ),\n });\n const result = parentEvent || triggerEvent(moveable, \"onResizeStart\", params);\n\n datas.startFixedDirection = datas.fixedDirection;\n datas.startFixedPosition = datas.fixedPosition;\n if (result !== false) {\n datas.isResize = true;\n moveable.state.snapRenderInfo = {\n request: e.isRequest,\n direction,\n };\n }\n return datas.isResize ? params : false;\n },\n dragControl(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const {\n datas,\n parentFlag,\n isPinch,\n parentKeepRatio,\n dragClient,\n parentDist,\n useSnap,\n isRequest,\n isGroup,\n parentEvent,\n resolveMatrix,\n } = e;\n\n const {\n isResize,\n transformOrigin,\n startWidth,\n startHeight,\n prevWidth,\n prevHeight,\n minSize,\n maxSize,\n ratio,\n startOffsetWidth,\n startOffsetHeight,\n isWidth,\n } = datas;\n\n if (!isResize) {\n return;\n }\n if (resolveMatrix) {\n const {\n is3d,\n } = moveable.state;\n const {\n startOffsetMatrix,\n startTransformOrigin,\n } = datas;\n const n = is3d ? 4 : 3;\n let targetMatrix = parseMat(getNextTransforms(e));\n const targetN = Math.sqrt(targetMatrix.length);\n\n if (n !== targetN) {\n targetMatrix = convertDimension(targetMatrix, targetN, n);\n }\n\n const nextAllMatrix = getNextMatrix(\n startOffsetMatrix,\n targetMatrix,\n startTransformOrigin,\n n,\n );\n const poses = calculatePoses(nextAllMatrix, startOffsetWidth, startOffsetHeight, n);\n\n datas.startPositions = poses;\n datas.nextTargetMatrix = targetMatrix;\n datas.nextAllMatrix = nextAllMatrix;\n }\n const props = getProps(moveable.props, \"resizable\");\n const {\n resizeFormat,\n throttleResize = parentFlag ? 0 : 1,\n parentMoveable,\n keepRatioFinally,\n } = props;\n const direction = datas.direction;\n let sizeDirection = direction;\n let distWidth = 0;\n let distHeight = 0;\n\n if (!direction[0] && !direction[1]) {\n sizeDirection = [1, 1];\n }\n const keepRatio = (ratio && (parentKeepRatio != null ? parentKeepRatio : props.keepRatio)) || false;\n\n function getNextBoundingSize() {\n const fixedDirection = datas.fixedDirection;\n const nextSize = getOffsetSizeDist(sizeDirection, keepRatio, datas, e);\n\n distWidth = nextSize.distWidth;\n distHeight = nextSize.distHeight;\n\n let nextWidth = (sizeDirection[0] - fixedDirection[0]) || keepRatio\n ? Math.max(startOffsetWidth + distWidth, TINY_NUM) : startOffsetWidth;\n let nextHeight = (sizeDirection[1] - fixedDirection[1]) || keepRatio\n ? Math.max(startOffsetHeight + distHeight, TINY_NUM) : startOffsetHeight;\n\n if (keepRatio && startOffsetWidth && startOffsetHeight) {\n // startOffsetWidth : startOffsetHeight = nextWidth : nextHeight\n if (isWidth) {\n nextHeight = nextWidth / ratio;\n } else {\n nextWidth = nextHeight * ratio;\n }\n }\n return [nextWidth, nextHeight];\n }\n\n let [boundingWidth, boundingHeight] = getNextBoundingSize();\n\n if (!parentEvent) {\n datas.setFixedDirection(datas.fixedDirection);\n\n triggerEvent(moveable, \"onBeforeResize\", fillParams(moveable, e, {\n startFixedDirection: datas.startFixedDirection,\n startFixedPosition: datas.startFixedPosition,\n setFixedDirection(nextFixedDirection: number[]) {\n datas.setFixedDirection(nextFixedDirection);\n\n [boundingWidth, boundingHeight] = getNextBoundingSize();\n\n return [boundingWidth, boundingHeight];\n },\n setFixedPosition(nextFixedPosition: number[]) {\n datas.setFixedPosition(nextFixedPosition);\n\n [boundingWidth, boundingHeight] = getNextBoundingSize();\n\n return [boundingWidth, boundingHeight];\n },\n boundingWidth,\n boundingHeight,\n setSize(size: number[]) {\n [boundingWidth, boundingHeight] = size;\n },\n }, true));\n }\n\n let fixedPosition = dragClient;\n\n if (!dragClient) {\n if (!parentFlag && isPinch) {\n fixedPosition = getAbsolutePosition(moveable, [0, 0]);\n } else {\n fixedPosition = datas.fixedPosition;\n }\n }\n\n let snapDist = [0, 0];\n\n if (!isPinch) {\n snapDist = checkSnapResize(\n moveable,\n boundingWidth,\n boundingHeight,\n direction,\n fixedPosition,\n !useSnap && isRequest,\n datas,\n );\n }\n if (parentDist) {\n !parentDist[0] && (snapDist[0] = 0);\n !parentDist[1] && (snapDist[1] = 0);\n }\n\n function computeSize() {\n if (resizeFormat) {\n [boundingWidth, boundingHeight] = resizeFormat([boundingWidth, boundingHeight]);\n }\n boundingWidth = throttle(boundingWidth, throttleResize!);\n boundingHeight = throttle(boundingHeight, throttleResize!);\n }\n if (keepRatio) {\n if (sizeDirection[0] && sizeDirection[1] && snapDist[0] && snapDist[1]) {\n if (abs(snapDist[0]) > abs(snapDist[1])) {\n snapDist[1] = 0;\n } else {\n snapDist[0] = 0;\n }\n }\n const isNoSnap = !snapDist[0] && !snapDist[1];\n\n if (isNoSnap) {\n // pre-compute before maintaining the ratio\n computeSize();\n }\n if (\n (sizeDirection[0] && !sizeDirection[1])\n || (snapDist[0] && !snapDist[1])\n || (isNoSnap && isWidth)\n ) {\n boundingWidth += snapDist[0];\n boundingHeight = boundingWidth / ratio;\n } else if (\n (!sizeDirection[0] && sizeDirection[1])\n || (!snapDist[0] && snapDist[1])\n || (isNoSnap && !isWidth)\n ) {\n boundingHeight += snapDist[1];\n boundingWidth = boundingHeight * ratio;\n }\n } else {\n boundingWidth += snapDist[0];\n boundingHeight += snapDist[1];\n\n boundingWidth = Math.max(0, boundingWidth);\n boundingHeight = Math.max(0, boundingHeight);\n }\n\n [boundingWidth, boundingHeight] = calculateBoundSize(\n [boundingWidth, boundingHeight],\n minSize,\n maxSize,\n keepRatio ? ratio : false,\n );\n computeSize();\n\n if (keepRatio && (isGroup || keepRatioFinally)) {\n if (isWidth) {\n boundingHeight = boundingWidth / ratio;\n } else {\n boundingWidth = boundingHeight * ratio;\n }\n }\n distWidth = boundingWidth - startOffsetWidth;\n distHeight = boundingHeight - startOffsetHeight;\n\n const delta = [distWidth - prevWidth, distHeight - prevHeight];\n\n datas.prevWidth = distWidth;\n datas.prevHeight = distHeight;\n\n const inverseDelta = getResizeDist(\n moveable,\n boundingWidth,\n boundingHeight,\n fixedPosition,\n transformOrigin,\n datas,\n );\n\n if (!parentMoveable && delta.every(num => !num) && inverseDelta.every(num => !num)) {\n return;\n }\n const drag = Draggable.drag(\n moveable,\n setCustomDrag(e, moveable.state, inverseDelta, !!isPinch, false, \"draggable\"),\n ) as OnDrag;\n const transform = drag.transform;\n\n const nextWidth = startWidth + distWidth;\n const nextHeight = startHeight + distHeight;\n\n const params = fillParams(moveable, e, {\n width: nextWidth,\n height: nextHeight,\n offsetWidth: Math.round(boundingWidth),\n offsetHeight: Math.round(boundingHeight),\n startRatio: ratio,\n boundingWidth,\n boundingHeight,\n direction,\n dist: [distWidth, distHeight],\n delta,\n isPinch: !!isPinch,\n drag,\n ...fillAfterTransform({\n style: {\n width: `${nextWidth}px`,\n height: `${nextHeight}px`,\n },\n transform,\n }, drag, e),\n });\n !parentEvent && triggerEvent(moveable, \"onResize\", params);\n return params;\n },\n dragControlAfter(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const datas = e.datas;\n const {\n isResize,\n startOffsetWidth,\n startOffsetHeight,\n prevWidth,\n prevHeight,\n } = datas;\n\n if (!isResize || moveable.props.checkResizableError === false) {\n return;\n }\n const {\n width,\n height,\n } = moveable.state;\n const errorWidth = width - (startOffsetWidth + prevWidth);\n const errorHeight = height - (startOffsetHeight + prevHeight);\n const isErrorWidth = abs(errorWidth) > 3;\n const isErrorHeight = abs(errorHeight) > 3;\n\n if (isErrorWidth) {\n datas.startWidth += errorWidth;\n datas.startOffsetWidth += errorWidth;\n datas.prevWidth += errorWidth;\n }\n if (isErrorHeight) {\n datas.startHeight += errorHeight;\n datas.startOffsetHeight += errorHeight;\n datas.prevHeight += errorHeight;\n }\n if (isErrorWidth || isErrorHeight) {\n return this.dragControl(moveable, e);\n }\n },\n dragControlEnd(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, parentEvent } = e;\n if (!datas.isResize) {\n return;\n }\n datas.isResize = false;\n\n const params = fillEndParams(moveable, e, {});\n !parentEvent && triggerEvent(moveable, \"onResizeEnd\", params);\n return params;\n },\n dragGroupControlCondition: directionCondition,\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n const params = this.dragControlStart(moveable, {...e, isGroup: true });\n\n if (!params) {\n return false;\n }\n const originalEvents = fillChildEvents(moveable, \"resizable\", e);\n const {\n startOffsetWidth: parentStartOffsetWidth,\n startOffsetHeight: parentStartOffsetHeight,\n } = datas;\n\n function updateGroupMin() {\n const originalMinSize = datas.minSize;\n originalEvents.forEach(ev => {\n const {\n minSize: childMinSize,\n startOffsetWidth: childStartOffsetWidth,\n startOffsetHeight: childStartOffsetHeight,\n } = ev.datas;\n\n const parentMinWidth = parentStartOffsetWidth\n * (childStartOffsetWidth ? childMinSize[0] / childStartOffsetWidth : 0);\n const parentMinHeight = parentStartOffsetHeight\n * (childStartOffsetHeight ? childMinSize[1] / childStartOffsetHeight : 0);\n\n originalMinSize[0] = Math.max(originalMinSize[0], parentMinWidth);\n originalMinSize[1] = Math.max(originalMinSize[1], parentMinHeight);\n });\n }\n\n function updateGroupMax() {\n const originalMaxSize = datas.maxSize;\n originalEvents.forEach(ev => {\n const {\n maxSize: childMaxSize,\n startOffsetWidth: childStartOffsetWidth,\n startOffsetHeight: childStartOffsetHeight,\n } = ev.datas;\n\n const parentMaxWidth = parentStartOffsetWidth\n * (childStartOffsetWidth ? childMaxSize[0] / childStartOffsetWidth : 0);\n const parentMaxHeight = parentStartOffsetHeight\n * (childStartOffsetHeight ? childMaxSize[1] / childStartOffsetHeight : 0);\n\n originalMaxSize[0] = Math.min(originalMaxSize[0], parentMaxWidth);\n originalMaxSize[1] = Math.min(originalMaxSize[1], parentMaxHeight);\n });\n }\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControlStart\",\n e,\n (child, ev) => {\n return startChildDist(moveable, child, datas, ev);\n },\n );\n\n\n updateGroupMin();\n updateGroupMax();\n\n const setFixedDirection = (fixedDirection: number[]) => {\n params.setFixedDirection(fixedDirection);\n events.forEach((ev, i) => {\n ev.setFixedDirection(fixedDirection);\n startChildDist(moveable, ev.moveable, datas, originalEvents[i]);\n });\n };\n\n datas.setFixedDirection = setFixedDirection;\n\n const nextParams: OnResizeGroupStart = {\n ...params,\n targets: moveable.props.targets!,\n events: events.map(ev => {\n return {\n ...ev,\n setMin: (minSize: Array) => {\n ev.setMin(minSize);\n updateGroupMin();\n },\n setMax: (maxSize: Array) => {\n ev.setMax(maxSize);\n updateGroupMax();\n },\n };\n }),\n setFixedDirection,\n setMin: (minSize: Array) => {\n params.setMin(minSize);\n updateGroupMin();\n },\n setMax: (maxSize: Array) => {\n params.setMax(maxSize);\n updateGroupMax();\n },\n };\n const result = triggerEvent(moveable, \"onResizeGroupStart\", nextParams);\n\n datas.isResize = result !== false;\n return datas.isResize ? params : false;\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n if (!datas.isResize) {\n return;\n }\n const props = getProps(moveable.props, \"resizable\");\n\n catchEvent(moveable, \"onBeforeResize\", parentEvent => {\n triggerEvent(moveable, \"onBeforeResizeGroup\", fillParams(moveable, e, {\n ...parentEvent,\n targets: props.targets!,\n }, true));\n });\n\n\n const params = this.dragControl(moveable, {...e, isGroup: true });\n\n if (!params) {\n return;\n }\n const {\n boundingWidth,\n boundingHeight,\n dist,\n } = params;\n\n const keepRatio = props.keepRatio;\n\n const parentScale = [\n boundingWidth / (boundingWidth - dist[0]),\n boundingHeight / (boundingHeight - dist[1]),\n ];\n const fixedPosition = datas.fixedPosition;\n\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControl\",\n e,\n (_, ev) => {\n const [clientX, clientY] = calculate(\n createRotateMatrix(moveable.rotation / 180 * Math.PI, 3),\n [\n ev.datas.originalX * parentScale[0],\n ev.datas.originalY * parentScale[1],\n 1,\n ],\n 3,\n );\n\n return {\n ...ev,\n parentDist: null,\n parentScale,\n dragClient: plus(fixedPosition, [clientX, clientY]),\n parentKeepRatio: keepRatio,\n };\n },\n );\n const nextParams: OnResizeGroup = {\n targets: props.targets!,\n events,\n ...params,\n };\n\n triggerEvent(moveable, \"onResizeGroup\", nextParams);\n return nextParams;\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n const { isDrag, datas } = e;\n\n if (!datas.isResize) {\n return;\n }\n\n this.dragControlEnd(moveable, e);\n const events = triggerChildAbles(moveable, this, \"dragControlEnd\", e);\n\n const nextParams: OnResizeGroupEnd = fillEndParams(moveable, e, {\n targets: moveable.props.targets!,\n events,\n });\n\n triggerEvent(moveable, \"onResizeGroupEnd\", nextParams);\n return isDrag;\n },\n /**\n * @method Moveable.Resizable#request\n * @param {Moveable.Resizable.ResizableRequestParam} e - the Resizable's request parameter\n * @return {Moveable.Requester} Moveable Requester\n * @example\n\n * // Instantly Request (requestStart - request - requestEnd)\n * // Use Relative Value\n * moveable.request(\"resizable\", { deltaWidth: 10, deltaHeight: 10 }, true);\n *\n * // Use Absolute Value\n * moveable.request(\"resizable\", { offsetWidth: 100, offsetHeight: 100 }, true);\n *\n * // requestStart\n * const requester = moveable.request(\"resizable\");\n *\n * // request\n * // Use Relative Value\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n *\n * // Use Absolute Value\n * moveable.request(\"resizable\", { offsetWidth: 100, offsetHeight: 100 });\n * moveable.request(\"resizable\", { offsetWidth: 110, offsetHeight: 100 });\n * moveable.request(\"resizable\", { offsetWidth: 120, offsetHeight: 100 });\n *\n * // requestEnd\n * requester.requestEnd();\n */\n request(moveable: MoveableManagerInterface) {\n const datas: Record = {};\n let distWidth = 0;\n let distHeight = 0;\n let useSnap = false;\n const rect = moveable.getRect();\n\n return {\n isControl: true,\n requestStart(e: ResizableRequestParam) {\n useSnap = e.useSnap!;\n\n return {\n datas, parentDirection: e.direction || [1, 1],\n parentIsWidth: e?.horizontal ?? true,\n useSnap,\n };\n },\n request(e: ResizableRequestParam) {\n if (\"offsetWidth\" in e) {\n distWidth = e.offsetWidth! - rect.offsetWidth;\n } else if (\"deltaWidth\" in e) {\n distWidth += e.deltaWidth!;\n }\n if (\"offsetHeight\" in e) {\n distHeight = e.offsetHeight! - rect.offsetHeight;\n } else if (\"deltaHeight\" in e) {\n distHeight += e.deltaHeight!;\n }\n\n\n return {\n datas,\n parentDist: [distWidth, distHeight],\n parentKeepRatio: e.keepRatio,\n useSnap,\n };\n },\n requestEnd() {\n return { datas, isDrag: true, useSnap };\n },\n };\n },\n unset(moveable: MoveableManagerInterface) {\n moveable.state.gestos.resizable = null;\n },\n};\n\n/**\n * Whether or not target can be resized.\n * @name Moveable.Resizable#resizable\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * resizable: false,\n * });\n *\n * moveable.resizable = true;\n */\n\n/**\n * throttle of width, height when resize. If throttleResize is set to less than 1, the target may shake.\n * @name Moveable.Resizable#throttleResize\n * @default 1\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * resizable: true,\n * throttleResize: 1,\n * });\n *\n * moveable.throttleResize = 0;\n */\n/**\n * When resize or scale, keeps a ratio of the width, height.\n * @name Moveable.Resizable#keepRatio\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * resizable: true,\n * });\n *\n * moveable.keepRatio = true;\n */\n/**\n * Set directions to show the control box.\n * @name Moveable.Resizable#renderDirections\n * @default [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"]\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * resizable: true,\n * renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\n * });\n *\n * moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\n */\n\n/**\n * Function to convert size for resize\n * @name Moveable.Resizable#resizeFormat\n * @default oneself\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * resizable: true,\n * resizeFormat: v => v,\n * });\n *\n * moveable.resizeFormat = (size: number[]) => ([Math.trunc(size[0]), Math.trunc(size[1])];\n */\n\n/**\n * When the resize starts, the resizeStart event is called.\n * @memberof Moveable.Resizable\n * @event resizeStart\n * @param {Moveable.Resizable.OnResizeStart} - Parameters for the resizeStart event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { resizable: true });\n * moveable.on(\"resizeStart\", ({ target }) => {\n * console.log(target);\n * });\n */\n\n/**\n * When resizing, `beforeResize` is called before `resize` occurs. In `beforeResize`, you can get and set the pre-value before resizing.\n * @memberof Moveable.Resizable\n * @event beforeResize\n * @param {Moveable.Resizable.OnBeforeResize} - Parameters for the `beforeResize` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { resizable: true });\n * moveable.on(\"beforeResize\", ({ setFixedDirection }) => {\n * if (shiftKey) {\n * setFixedDirection([0, 0]);\n * }\n * });\n * moveable.on(\"resize\", ({ target, width, height, drag }) => {\n * target.style.width = `${width}px`;\n * target.style.height = `${height}px`;\n * target.style.transform = drag.transform;\n * });\n */\n\n/**\n * When resizing, the resize event is called.\n * @memberof Moveable.Resizable\n * @event resize\n * @param {Moveable.Resizable.OnResize} - Parameters for the resize event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { resizable: true });\n * moveable.on(\"resize\", ({ target, width, height }) => {\n * target.style.width = `${e.width}px`;\n * target.style.height = `${e.height}px`;\n * });\n */\n/**\n * When the resize finishes, the resizeEnd event is called.\n * @memberof Moveable.Resizable\n * @event resizeEnd\n * @param {Moveable.Resizable.OnResizeEnd} - Parameters for the resizeEnd event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { resizable: true });\n * moveable.on(\"resizeEnd\", ({ target, isDrag }) => {\n * console.log(target, isDrag);\n * });\n */\n\n/**\n* When the group resize starts, the `resizeGroupStart` event is called.\n* @memberof Moveable.Resizable\n* @event resizeGroupStart\n* @param {Moveable.Resizable.OnResizeGroupStart} - Parameters for the `resizeGroupStart` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* resizable: true\n* });\n* moveable.on(\"resizeGroupStart\", ({ targets }) => {\n* console.log(\"onResizeGroupStart\", targets);\n* });\n*/\n\n/**\n* When the group resize, the `resizeGroup` event is called.\n* @memberof Moveable.Resizable\n* @event resizeGroup\n* @param {Moveable.Resizable.onResizeGroup} - Parameters for the `resizeGroup` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* resizable: true\n* });\n* moveable.on(\"resizeGroup\", ({ targets, events }) => {\n* console.log(\"onResizeGroup\", targets);\n* events.forEach(ev => {\n* const offset = [\n* direction[0] < 0 ? -ev.delta[0] : 0,\n* direction[1] < 0 ? -ev.delta[1] : 0,\n* ];\n* // ev.drag is a drag event that occurs when the group resize.\n* const left = offset[0] + ev.drag.beforeDist[0];\n* const top = offset[1] + ev.drag.beforeDist[1];\n* const width = ev.width;\n* const top = ev.top;\n* });\n* });\n*/\n\n/**\n * When the group resize finishes, the `resizeGroupEnd` event is called.\n * @memberof Moveable.Resizable\n * @event resizeGroupEnd\n * @param {Moveable.Resizable.OnResizeGroupEnd} - Parameters for the `resizeGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * resizable: true\n * });\n * moveable.on(\"resizeGroupEnd\", ({ targets, isDrag }) => {\n * console.log(\"onResizeGroupEnd\", targets, isDrag);\n * });\n */\n","import {\n prefix, triggerEvent, fillParams,\n calculatePosition, fillEndParams, getRotationRad, getRefTargets,\n catchEvent, getProps, calculateMoveableClientPositions,\n fillAfterTransform,\n getTotalOrigin,\n} from \"../utils\";\nimport {\n IObject, hasClass, getRad,\n throttle,\n getDist,\n getKeys,\n isArray,\n} from \"@daybrush/utils\";\nimport {\n RotatableProps, OnRotateGroup, OnRotateGroupEnd,\n Renderer, OnRotateGroupStart, OnRotateStart, OnRotate,\n OnRotateEnd, MoveableClientRect, SnappableProps,\n SnappableState, MoveableManagerInterface, MoveableGroupInterface, DraggableProps,\n OnBeforeRotate,\n OnBeforeRotateGroup,\n OnResizeStart,\n OnResize,\n TransformObject,\n OnDragStart,\n} from \"../types\";\nimport { triggerChildAbles } from \"../groupUtils\";\nimport { calculate, convertPositionMatrix, getOrigin, minus, plus, rotate as rotateMatrix } from \"@scena/matrix\";\nimport CustomGesto, { setCustomDrag } from \"../gesto/CustomGesto\";\nimport { checkSnapRotate } from \"./Snappable\";\nimport {\n fillTransformStartEvent,\n convertTransformFormat, getRotateDist,\n fillTransformEvent,\n setDefaultTransformIndex,\n resolveTransformEvent,\n getTransformDirection,\n getPosByDirection,\n getTranslateFixedPosition,\n} from \"../gesto/GestoUtils\";\nimport { DirectionControlInfo, renderAroundControls, renderDirectionControlsByInfos } from \"../renderDirections\";\nimport { DIRECTION_REGION_TO_DIRECTION } from \"../consts\";\nimport Resizable from \"./Resizable\";\nimport Draggable from \"./Draggable\";\nimport { getOffsetFixedDirectionInfo, getOffsetFixedPositionInfo } from \"../utils/getFixedDirection\";\n\n/**\n * @namespace Rotatable\n * @memberof Moveable\n * @description Rotatable indicates whether the target can be rotated.\n */\n\nfunction setRotateStartInfo(\n moveable: MoveableManagerInterface,\n datas: IObject, clientX: number, clientY: number,\n rect: MoveableClientRect,\n) {\n const groupable = moveable.props.groupable;\n const state = moveable.state;\n const n = state.is3d ? 4 : 3;\n const origin = datas.origin;\n const nextOrigin = calculatePosition(\n moveable.state.rootMatrix,\n // TO-DO #710\n minus([origin[0], origin[1]], groupable ? [0, 0] : [state.left, state.top]),\n n,\n );\n const startAbsoluteOrigin = plus([rect.left, rect.top], nextOrigin);\n\n datas.startAbsoluteOrigin = startAbsoluteOrigin;\n datas.prevDeg = getRad(startAbsoluteOrigin, [clientX, clientY]) / Math.PI * 180;\n datas.defaultDeg = datas.prevDeg;\n datas.prevSnapDeg = 0;\n datas.loop = 0;\n datas.startDist = getDist(startAbsoluteOrigin, [clientX, clientY]);\n}\n\nfunction getAbsoluteDist(\n deg: number,\n direction: number,\n datas: IObject,\n) {\n const {\n defaultDeg,\n prevDeg,\n } = datas;\n\n\n let normalizedPrevDeg = prevDeg % 360;\n let loop = Math.floor(prevDeg / 360);\n\n if (normalizedPrevDeg < 0) {\n normalizedPrevDeg += 360;\n }\n\n if (normalizedPrevDeg > deg && normalizedPrevDeg > 270 && deg < 90) {\n // 360 => 0\n ++loop;\n } else if (normalizedPrevDeg < deg && normalizedPrevDeg < 90 && deg > 270) {\n // 0 => 360\n --loop;\n }\n const dist = direction * (loop * 360 + deg - defaultDeg);\n\n datas.prevDeg = defaultDeg + dist;\n\n return dist;\n}\nfunction getAbsoluteDistByClient(\n clientX: number, clientY: number,\n direction: number,\n datas: IObject,\n) {\n return getAbsoluteDist(\n getRad(datas.startAbsoluteOrigin, [clientX, clientY]) / Math.PI * 180,\n direction,\n datas,\n );\n}\nfunction getRotateInfo(\n moveable: MoveableManagerInterface,\n moveableRect: any,\n datas: IObject,\n dist: number,\n startValue: number,\n checkSnap?: boolean,\n) {\n const {\n throttleRotate = 0,\n } = moveable.props;\n const prevSnapDeg = datas.prevSnapDeg;\n let snapRotation = 0;\n let isSnap = false;\n\n if (checkSnap) {\n const result = checkSnapRotate(\n moveable,\n moveableRect,\n dist,\n startValue + dist,\n );\n\n isSnap = result.isSnap;\n snapRotation = startValue + result.dist;\n }\n\n if (!isSnap) {\n snapRotation = throttle(startValue + dist, throttleRotate);\n }\n const snapDeg = snapRotation - startValue;\n\n datas.prevSnapDeg = snapDeg;\n\n return [snapDeg - prevSnapDeg, snapDeg, snapRotation];\n\n\n}\n\nexport function getReversePositionX(dir: string) {\n if (dir === \"left\") {\n return \"right\";\n } else if (dir === \"right\") {\n return \"left\";\n }\n return dir;\n}\nexport function getReversePositionY(dir: string) {\n if (dir === \"top\") {\n return \"bottom\";\n } else if (dir === \"bottom\") {\n return \"top\";\n }\n return dir;\n}\nexport function getRotationPositions(\n rotationPosition: RotatableProps[\"rotationPosition\"],\n [pos1, pos2, pos3, pos4]: number[][],\n direction: number,\n): [number[], number][] {\n if (rotationPosition === \"none\") {\n return [];\n }\n if (isArray(rotationPosition)) {\n return rotationPosition.map(child => getRotationPositions(\n child,\n [pos1, pos2, pos3, pos4],\n direction,\n )[0]);\n }\n const [dir1, dir2] = (rotationPosition || \"top\").split(\"-\");\n let radPoses = [pos1, pos2];\n\n if (dir1 === \"left\") {\n radPoses = [pos3, pos1];\n } else if (dir1 === \"right\") {\n radPoses = [pos2, pos4];\n } else if (dir1 === \"bottom\") {\n radPoses = [pos4, pos3];\n }\n let pos = [\n (radPoses[0][0] + radPoses[1][0]) / 2,\n (radPoses[0][1] + radPoses[1][1]) / 2,\n ];\n const rad = getRotationRad(radPoses, direction);\n if (dir2) {\n const isStart = dir2 === \"top\" || dir2 === \"left\";\n const isReverse = dir1 === \"bottom\" || dir1 === \"left\";\n\n pos = radPoses[(isStart && !isReverse) || (!isStart && isReverse) ? 0 : 1];\n }\n return [[pos, rad]];\n}\n\nexport function dragControlCondition(moveable: MoveableManagerInterface, e: any) {\n if (e.isRequest) {\n return e.requestAble === \"rotatable\";\n }\n const target = e.inputEvent.target as HTMLElement;\n if (\n hasClass(target, prefix(\"rotation-control\"))\n || (moveable.props.rotateAroundControls && hasClass(target, prefix(\"around-control\")))\n || (hasClass(target, prefix(\"control\")) && hasClass(target, prefix(\"rotatable\")))\n ) {\n return true;\n }\n const rotationTarget = moveable.props.rotationTarget;\n\n if (rotationTarget) {\n return getRefTargets(rotationTarget, true).some(element => {\n if (!element) {\n return false;\n }\n return target === element || target.contains(element);\n });\n }\n return false;\n}\n\nconst css = `.rotation {\nposition: absolute;\nheight: 40px;\nwidth: 1px;\ntransform-origin: 50% 100%;\nheight: calc(40px * var(--zoom));\ntop: auto;\nleft: 0;\nbottom: 100%;\nwill-change: transform;\n}\n.rotation .rotation-line {\ndisplay: block;\nwidth: 100%;\nheight: 100%;\ntransform-origin: 50% 50%;\n}\n.rotation .rotation-control {\nborder-color: #4af;\nborder-color: var(--moveable-color);\nbackground:#fff;\ncursor: alias;\n}\n:global .view-rotation-dragging, .rotatable.direction.control {\ncursor: alias;\n}\n.rotatable.direction.control.move {\ncursor: move;\n}\n`;\nexport default {\n name: \"rotatable\",\n canPinch: true,\n props: [\n \"rotatable\",\n \"rotationPosition\",\n \"throttleRotate\",\n \"renderDirections\",\n \"rotationTarget\",\n \"rotateAroundControls\",\n \"edge\",\n \"resolveAblesWithRotatable\",\n \"displayAroundControls\",\n ] as const,\n events: [\n \"rotateStart\",\n \"beforeRotate\",\n \"rotate\",\n \"rotateEnd\",\n \"rotateGroupStart\",\n \"beforeRotateGroup\",\n \"rotateGroup\",\n \"rotateGroupEnd\",\n ] as const,\n css: [css],\n viewClassName(moveable: MoveableManagerInterface) {\n if (!moveable.isDragging(\"rotatable\")) {\n return \"\";\n }\n return prefix(\"view-rotation-dragging\");\n },\n render(moveable: MoveableManagerInterface, React: Renderer): any {\n const {\n rotatable,\n rotationPosition,\n zoom,\n renderDirections,\n rotateAroundControls,\n resolveAblesWithRotatable,\n } = getProps(moveable.props, \"rotatable\");\n const {\n renderPoses,\n direction,\n } = moveable.getState();\n if (!rotatable) {\n return null;\n }\n const positions = getRotationPositions(rotationPosition!, renderPoses, direction);\n const jsxs: any[] = [];\n\n positions.forEach(([pos, rad], i) => {\n jsxs.push(\n
\n
\n
\n
\n );\n });\n if (renderDirections) {\n const ables = getKeys(resolveAblesWithRotatable || {});\n const resolveMap: Record = {};\n\n ables.forEach(name => {\n resolveAblesWithRotatable![name]!.forEach(direction => {\n resolveMap[direction] = name;\n });\n });\n\n let directionControlInfos: DirectionControlInfo[] = [];\n\n if (isArray(renderDirections)) {\n directionControlInfos = renderDirections.map(dir => {\n const able = resolveMap[dir];\n\n return {\n data: able ? { resolve: able } : {},\n classNames: able ? [`move`] : [],\n dir,\n };\n });\n }\n\n jsxs.push(...renderDirectionControlsByInfos(\n moveable,\n \"rotatable\",\n directionControlInfos,\n React,\n ));\n }\n if (rotateAroundControls) {\n jsxs.push(...renderAroundControls(moveable, React));\n }\n\n return jsxs;\n },\n dragControlCondition: dragControlCondition as (moveable: any, e: any) => boolean,\n dragControlStart(\n moveable: MoveableManagerInterface,\n e: any) {\n const {\n datas,\n clientX, clientY,\n parentRotate, parentFlag, isPinch,\n isRequest,\n } = e;\n const state = moveable.state;\n const {\n target, left, top,\n direction, beforeDirection, targetTransform,\n moveableClientRect,\n offsetMatrix,\n targetMatrix,\n allMatrix,\n width,\n height,\n } = state;\n\n if (!isRequest && !target) {\n return false;\n }\n\n const rect = moveable.getRect();\n datas.rect = rect;\n datas.transform = targetTransform;\n datas.left = left;\n datas.top = top;\n let setFixedPosition = (fixedPosition: number[]) => {\n const result = getOffsetFixedPositionInfo(moveable.state, fixedPosition);\n\n datas.fixedDirection = result.fixedDirection;\n datas.fixedOffset = result.fixedOffset;\n datas.fixedPosition = result.fixedPosition;\n\n\n if (resizeStart) {\n resizeStart.setFixedPosition(fixedPosition);\n }\n };\n let setFixedDirection: OnRotateStart[\"setFixedDirection\"] = (fixedDirection: number[]) => {\n const result = getOffsetFixedDirectionInfo(moveable.state, fixedDirection);\n\n datas.fixedDirection = result.fixedDirection;\n datas.fixedOffset = result.fixedOffset;\n datas.fixedPosition = result.fixedPosition;\n\n if (resizeStart) {\n resizeStart.setFixedDirection(fixedDirection);\n }\n };\n let startClientX = clientX;\n let startClientY = clientY;\n\n if (isRequest || isPinch || parentFlag) {\n const externalRotate = parentRotate || 0;\n\n datas.beforeInfo = {\n origin: rect.beforeOrigin,\n prevDeg: externalRotate,\n defaultDeg: externalRotate,\n prevSnapDeg: 0,\n startDist: 0,\n };\n datas.afterInfo = {\n ...datas.beforeInfo,\n origin: rect.origin,\n };\n datas.absoluteInfo = {\n ...datas.beforeInfo,\n origin: rect.origin,\n startValue: externalRotate,\n };\n } else {\n const inputTarget = e.inputEvent?.target;\n\n if (inputTarget) {\n const regionDirection = inputTarget.getAttribute(\"data-direction\") || \"\";\n const controlDirection = DIRECTION_REGION_TO_DIRECTION[regionDirection];\n\n if (controlDirection) {\n datas.isControl = true;\n datas.isAroundControl = hasClass(inputTarget, prefix(\"around-control\"));\n datas.controlDirection = controlDirection;\n const resolve = inputTarget.getAttribute(\"data-resolve\");\n\n if (resolve) {\n datas.resolveAble = resolve;\n }\n\n const clientPoses = calculateMoveableClientPositions(\n state.rootMatrix,\n state.renderPoses,\n moveableClientRect,\n );\n\n\n [startClientX, startClientY] = getPosByDirection(clientPoses, controlDirection);\n }\n }\n datas.beforeInfo = { origin: rect.beforeOrigin };\n datas.afterInfo = { origin: rect.origin };\n datas.absoluteInfo = {\n origin: rect.origin,\n startValue: rect.rotation,\n };\n\n const originalFixedPosition = setFixedPosition;\n\n setFixedPosition = (fixedPosition: number[]) => {\n const n = state.is3d ? 4 : 3;\n const [originX, originY] = plus(getOrigin(targetMatrix, n), fixedPosition);\n const fixedBeforeOrigin = calculate(\n offsetMatrix,\n convertPositionMatrix([originX, originY], n),\n );\n const fixedAfterOrigin = calculate(\n allMatrix,\n convertPositionMatrix([fixedPosition[0], fixedPosition[1]], n),\n );\n originalFixedPosition(fixedPosition);\n const posDelta = state.posDelta;\n\n datas.beforeInfo.origin = minus(fixedBeforeOrigin, posDelta);\n datas.afterInfo.origin = minus(fixedAfterOrigin, posDelta);\n datas.absoluteInfo.origin = minus(fixedAfterOrigin, posDelta);\n\n setRotateStartInfo(moveable, datas.beforeInfo, startClientX, startClientY, moveableClientRect);\n setRotateStartInfo(moveable, datas.afterInfo, startClientX, startClientY, moveableClientRect);\n setRotateStartInfo(moveable, datas.absoluteInfo, startClientX, startClientY, moveableClientRect);\n };\n setFixedDirection = (fixedDirection: number[]) => {\n const fixedPosition = getPosByDirection([\n [0, 0],\n [width, 0],\n [0, height],\n [width, height],\n ], fixedDirection);\n\n setFixedPosition(fixedPosition);\n };\n }\n\n datas.startClientX = startClientX;\n datas.startClientY = startClientY;\n datas.direction = direction;\n datas.beforeDirection = beforeDirection;\n datas.startValue = 0;\n datas.datas = {};\n\n setDefaultTransformIndex(moveable, e, \"rotate\");\n\n let dragStart: OnDragStart | false = false;\n let resizeStart: OnResizeStart | false = false;\n\n if (datas.isControl && datas.resolveAble) {\n const resolveAble = datas.resolveAble;\n\n if (resolveAble === \"resizable\") {\n resizeStart = Resizable.dragControlStart(moveable, {\n ...(new CustomGesto(\"resizable\").dragStart([0, 0], e)),\n parentPosition: datas.controlPosition,\n parentFixedPosition: datas.fixedPosition,\n });\n }\n }\n\n if (!resizeStart) {\n dragStart = Draggable.dragStart!(\n moveable,\n new CustomGesto().dragStart([0, 0], e),\n );\n }\n\n setFixedPosition(getTotalOrigin(moveable));\n const params = fillParams(moveable, e, {\n set: (rotatation: number) => {\n datas.startValue = rotatation * Math.PI / 180;\n },\n setFixedDirection,\n setFixedPosition,\n ...fillTransformStartEvent(moveable, e),\n dragStart,\n resizeStart,\n });\n const result = triggerEvent(moveable, \"onRotateStart\", params);\n datas.isRotate = result !== false;\n state.snapRenderInfo = {\n request: e.isRequest,\n };\n\n return datas.isRotate ? params : false;\n },\n dragControl(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const {\n datas, clientDistX, clientDistY,\n parentRotate, parentFlag, isPinch, groupDelta,\n resolveMatrix,\n } = e;\n const {\n beforeDirection,\n beforeInfo,\n afterInfo,\n absoluteInfo,\n isRotate,\n startValue,\n rect,\n startClientX,\n startClientY,\n } = datas;\n\n if (!isRotate) {\n return;\n }\n\n resolveTransformEvent(moveable, e, \"rotate\");\n\n const targetDirection = getTransformDirection(e);\n const direction = beforeDirection * targetDirection;\n const {\n parentMoveable,\n } = moveable.props;\n\n\n let beforeDelta = 0;\n let beforeDist: number;\n let beforeRotation: number;\n\n let delta = 0;\n let dist: number;\n let rotation: number;\n\n let absoluteDelta = 0;\n let absoluteDist: number;\n let absoluteRotation: number;\n\n const startRotation = 180 / Math.PI * startValue;\n const absoluteStartRotation = absoluteInfo.startValue;\n let isSnap = false;\n const nextClientX = startClientX + clientDistX;\n const nextClientY = startClientY + clientDistY;\n\n if (!parentFlag && \"parentDist\" in e) {\n const parentDist = e.parentDist;\n\n beforeDist = parentDist;\n dist = parentDist;\n absoluteDist = parentDist;\n } else if (isPinch || parentFlag) {\n beforeDist = getAbsoluteDist(parentRotate, beforeDirection, beforeInfo);\n dist = getAbsoluteDist(parentRotate, direction, afterInfo);\n absoluteDist = getAbsoluteDist(parentRotate, direction, absoluteInfo);\n } else {\n beforeDist = getAbsoluteDistByClient(nextClientX, nextClientY, beforeDirection, beforeInfo);\n dist = getAbsoluteDistByClient(nextClientX, nextClientY, direction, afterInfo);\n absoluteDist = getAbsoluteDistByClient(nextClientX, nextClientY, direction, absoluteInfo);\n isSnap = true;\n }\n beforeRotation = startRotation + beforeDist;\n rotation = startRotation + dist;\n absoluteRotation = absoluteStartRotation + absoluteDist;\n\n\n triggerEvent(moveable, \"onBeforeRotate\", fillParams(moveable, e, {\n beforeRotation,\n rotation,\n absoluteRotation,\n setRotation(nextRotation: number) {\n dist = nextRotation - startRotation;\n beforeDist = dist;\n absoluteDist = dist;\n },\n }, true));\n\n [\n beforeDelta,\n beforeDist,\n beforeRotation,\n ] = getRotateInfo(moveable, rect, beforeInfo, beforeDist, startRotation, isSnap);\n\n [\n delta,\n dist,\n rotation,\n ] = getRotateInfo(moveable, rect, afterInfo, dist, startRotation, isSnap);\n\n [\n absoluteDelta,\n absoluteDist,\n absoluteRotation,\n ] = getRotateInfo(moveable, rect, absoluteInfo, absoluteDist, absoluteStartRotation, isSnap);\n\n if (!absoluteDelta && !delta && !beforeDelta && !parentMoveable && !resolveMatrix) {\n return;\n }\n\n const nextTransform = convertTransformFormat(\n datas, `rotate(${rotation}deg)`, `rotate(${dist}deg)`,\n );\n if (resolveMatrix) {\n datas.fixedPosition = getTranslateFixedPosition(\n moveable,\n datas.targetAllTransform,\n datas.fixedDirection,\n datas.fixedOffset,\n datas,\n );\n }\n\n const inverseDist = getRotateDist(moveable, dist, datas);\n const inverseDelta = minus(\n plus(groupDelta || [0, 0], inverseDist),\n datas.prevInverseDist || [0, 0],\n );\n datas.prevInverseDist = inverseDist;\n datas.requestValue = null;\n\n const dragEvent = fillTransformEvent(\n moveable,\n nextTransform,\n inverseDelta,\n isPinch,\n e,\n );\n\n let transformEvent: TransformObject = dragEvent;\n const parentDistance = getDist(\n [nextClientX, nextClientY],\n absoluteInfo.startAbsoluteOrigin,\n ) - absoluteInfo.startDist;\n\n let resize: OnResize | undefined = undefined;\n\n if (datas.resolveAble === \"resizable\") {\n const resizeEvent = Resizable.dragControl(\n moveable,\n {\n ...setCustomDrag(e, moveable.state, [e.deltaX, e.deltaY], !!isPinch, false, \"resizable\"),\n resolveMatrix: true,\n parentDistance,\n },\n );\n\n if (resizeEvent) {\n resize = resizeEvent;\n transformEvent = fillAfterTransform(transformEvent, resizeEvent, e);\n }\n }\n\n const params = fillParams(moveable, e, {\n delta,\n dist,\n rotate: rotation,\n rotation,\n\n beforeDist,\n beforeDelta,\n beforeRotate: beforeRotation,\n beforeRotation,\n\n absoluteDist,\n absoluteDelta,\n absoluteRotate: absoluteRotation,\n absoluteRotation,\n\n isPinch: !!isPinch,\n resize,\n ...dragEvent,\n ...transformEvent,\n });\n triggerEvent(moveable, \"onRotate\", params);\n\n return params;\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n const { datas } = e;\n\n if (!datas.isRotate) {\n return;\n }\n datas.isRotate = false;\n\n const params = fillEndParams(moveable, e, {});\n\n triggerEvent(moveable, \"onRotateEnd\", params);\n return params;\n },\n dragGroupControlCondition: dragControlCondition as (moveable: any, e: any) => boolean,\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n const {\n left: parentLeft,\n top: parentTop,\n beforeOrigin: parentBeforeOrigin,\n } = moveable.state;\n\n const params = this.dragControlStart(moveable, e);\n\n if (!params) {\n return false;\n }\n\n params.set(datas.beforeDirection * moveable.rotation);\n\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControlStart\",\n e,\n (child, ev) => {\n const { left, top, beforeOrigin } = child.state;\n const childClient = plus(\n minus([left, top], [parentLeft, parentTop]),\n minus(beforeOrigin, parentBeforeOrigin),\n );\n\n ev.datas.startGroupClient = childClient;\n ev.datas.groupClient = childClient;\n return { ...ev, parentRotate: 0 };\n },\n );\n\n const nextParams: OnRotateGroupStart = {\n ...params,\n targets: moveable.props.targets!,\n events,\n };\n const result = triggerEvent(moveable, \"onRotateGroupStart\", nextParams);\n\n datas.isRotate = result !== false;\n\n return datas.isRotate ? params : false;\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n\n if (!datas.isRotate) {\n return;\n }\n\n catchEvent(moveable, \"onBeforeRotate\", parentEvent => {\n triggerEvent(moveable, \"onBeforeRotateGroup\", fillParams(moveable, e, {\n ...parentEvent,\n targets: moveable.props.targets!,\n }, true));\n });\n const params = this.dragControl(moveable, e);\n\n if (!params) {\n return;\n }\n const direction = datas.beforeDirection;\n const parentRotate = params.beforeDist;\n const rad = parentRotate / 180 * Math.PI;\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControl\",\n e,\n (_, ev) => {\n const startGroupClient = ev.datas.startGroupClient;\n const [prevClientX, prevClientY] = ev.datas.groupClient;\n const [clientX, clientY] = rotateMatrix(startGroupClient, rad * direction);\n const delta = [clientX - prevClientX, clientY - prevClientY];\n\n ev.datas.groupClient = [clientX, clientY];\n return { ...ev, parentRotate, groupDelta: delta };\n },\n );\n moveable.rotation = direction * params.beforeRotation;\n\n const nextParams: OnRotateGroup = {\n targets: moveable.props.targets!,\n events,\n set(rotation: number) {\n moveable.rotation = rotation;\n },\n setGroupRotation(rotation: number) {\n moveable.rotation = rotation;\n },\n ...params,\n };\n\n triggerEvent(moveable, \"onRotateGroup\", nextParams);\n return nextParams;\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n const { isDrag, datas } = e;\n\n if (!datas.isRotate) {\n return;\n }\n\n this.dragControlEnd(moveable, e);\n const events = triggerChildAbles(moveable, this, \"dragControlEnd\", e);\n\n const nextParams = fillEndParams(moveable, e, {\n targets: moveable.props.targets!,\n events,\n });\n\n triggerEvent(moveable, \"onRotateGroupEnd\", nextParams);\n return isDrag;\n },\n /**\n * @method Moveable.Rotatable#request\n * @param {object} [e] - the Resizable's request parameter\n * @param {number} [e.deltaRotate=0] - delta number of rotation\n * @param {number} [e.rotate=0] - absolute number of moveable's rotation\n * @return {Moveable.Requester} Moveable Requester\n * @example\n\n * // Instantly Request (requestStart - request - requestEnd)\n * moveable.request(\"rotatable\", { deltaRotate: 10 }, true);\n *\n * * moveable.request(\"rotatable\", { rotate: 10 }, true);\n *\n * // requestStart\n * const requester = moveable.request(\"rotatable\");\n *\n * // request\n * requester.request({ deltaRotate: 10 });\n * requester.request({ deltaRotate: 10 });\n * requester.request({ deltaRotate: 10 });\n *\n * requester.request({ rotate: 10 });\n * requester.request({ rotate: 20 });\n * requester.request({ rotate: 30 });\n *\n * // requestEnd\n * requester.requestEnd();\n */\n request(moveable: MoveableManagerInterface) {\n const datas = {};\n let distRotate = 0;\n\n const startRotation = moveable.getRotation();\n return {\n isControl: true,\n requestStart() {\n return { datas };\n },\n request(e: IObject) {\n if (\"deltaRotate\" in e) {\n distRotate += e.deltaRotate;\n } else if (\"rotate\" in e) {\n distRotate = e.rotate - startRotation;\n }\n\n return { datas, parentDist: distRotate };\n },\n requestEnd() {\n return { datas, isDrag: true };\n },\n };\n },\n};\n/**\n * Whether or not target can be rotated. (default: false)\n * @name Moveable.Rotatable#rotatable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.rotatable = true;\n */\n/**\n * You can specify the position of the rotation. (default: \"top\")\n * @name Moveable.Rotatable#rotationPosition\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * rotationPosition: \"top\",\n * });\n *\n * moveable.rotationPosition = \"bottom\"\n */\n\n/**\n * throttle of angle(degree) when rotate.\n * @name Moveable.Rotatable#throttleRotate\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.throttleRotate = 1;\n */\n\n/**\n * When the rotate starts, the rotateStart event is called.\n * @memberof Moveable.Rotatable\n * @event rotateStart\n * @param {Moveable.Rotatable.OnRotateStart} - Parameters for the rotateStart event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { rotatable: true });\n * moveable.on(\"rotateStart\", ({ target }) => {\n * console.log(target);\n * });\n */\n\n/**\n* When rotating, the rotate event is called.\n* @memberof Moveable.Rotatable\n* @event rotate\n* @param {Moveable.Rotatable.OnRotate} - Parameters for the rotate event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, { rotatable: true });\n* moveable.on(\"rotate\", ({ target, transform, dist }) => {\n* target.style.transform = transform;\n* });\n*/\n/**\n * When the rotate finishes, the rotateEnd event is called.\n * @memberof Moveable.Rotatable\n * @event rotateEnd\n * @param {Moveable.Rotatable.OnRotateEnd} - Parameters for the rotateEnd event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { rotatable: true });\n * moveable.on(\"rotateEnd\", ({ target, isDrag }) => {\n * console.log(target, isDrag);\n * });\n */\n\n/**\n * When the group rotate starts, the `rotateGroupStart` event is called.\n * @memberof Moveable.Rotatable\n * @event rotateGroupStart\n * @param {Moveable.Rotatable.OnRotateGroupStart} - Parameters for the `rotateGroupStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * rotatable: true\n * });\n * moveable.on(\"rotateGroupStart\", ({ targets }) => {\n * console.log(\"onRotateGroupStart\", targets);\n * });\n */\n\n/**\n* When the group rotate, the `rotateGroup` event is called.\n* @memberof Moveable.Rotatable\n* @event rotateGroup\n* @param {Moveable.Rotatable.OnRotateGroup} - Parameters for the `rotateGroup` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* rotatable: true\n* });\n* moveable.on(\"rotateGroup\", ({ targets, events }) => {\n* console.log(\"onRotateGroup\", targets);\n* events.forEach(ev => {\n* const target = ev.target;\n* // ev.drag is a drag event that occurs when the group rotate.\n* const left = ev.drag.beforeDist[0];\n* const top = ev.drag.beforeDist[1];\n* const deg = ev.beforeDist;\n* });\n* });\n*/\n\n/**\n * When the group rotate finishes, the `rotateGroupEnd` event is called.\n * @memberof Moveable.Rotatable\n * @event rotateGroupEnd\n * @param {Moveable.Rotatable.OnRotateGroupEnd} - Parameters for the `rotateGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * rotatable: true\n * });\n * moveable.on(\"rotateGroupEnd\", ({ targets, isDrag }) => {\n * console.log(\"onRotateGroupEnd\", targets, isDrag);\n * });\n */\n","import { throttle } from \"@daybrush/utils\";\nimport {\n RenderGuidelineInfo, Renderer, RenderGuidelineInnerInfo,\n MoveableManagerInterface, SnappableProps, SnapGuideline,\n SnappableRenderType, SnappableState,\n SnapDirectionPoses,\n} from \"../../types\";\nimport { prefix, groupBy } from \"../../utils\";\nimport { HORIZONTAL_NAMES_MAP, VERTICAL_NAMES_MAP } from \"./utils\";\n\nexport function renderGuideline(info: RenderGuidelineInfo, React: Renderer): any {\n const { direction, classNames, size, pos, zoom, key } = info;\n const isHorizontal = direction === \"horizontal\";\n const scaleType = isHorizontal ? \"Y\" : \"X\";\n // const scaleType2 = isHorizontal ? \"Y\" : \"X\";\n\n return React.createElement(\"div\", {\n key,\n className: classNames.join(\" \"),\n style: {\n [isHorizontal ? \"width\" : \"height\"]: `${size}`,\n transform: `translate(${pos[0]}, ${pos[1]}) translate${scaleType}(-50%) scale${scaleType}(${zoom})`,\n },\n });\n}\n\nexport function renderInnerGuideline(info: RenderGuidelineInnerInfo, React: Renderer): any {\n return renderGuideline({\n ...info,\n classNames: [\n prefix(\"line\", \"guideline\", info.direction),\n ...info.classNames,\n ].filter(className => className) as string[],\n size: info.size || `${info.sizeValue}px`,\n pos: info.pos || info.posValue.map(v => `${throttle(v, 0.1)}px`),\n }, React);\n}\n\nexport function renderSnapPoses(\n moveable: MoveableManagerInterface,\n direction: string,\n snapPoses: SnappableRenderType[],\n minPos: number,\n targetPos: number,\n size: number,\n index: number,\n React: Renderer\n) {\n const { zoom } = moveable.props;\n return snapPoses.map(({ type, pos }, i) => {\n const renderPos = [0, 0];\n\n renderPos[index] = minPos;\n renderPos[index ? 0 : 1] = -targetPos + pos;\n\n return renderInnerGuideline(\n {\n key: `${direction}TargetGuideline${i}`,\n classNames: [prefix(\"target\", \"bold\", type)],\n posValue: renderPos,\n sizeValue: size,\n zoom: zoom!,\n direction: direction,\n },\n React\n );\n });\n}\nexport function renderGuidelines(\n moveable: MoveableManagerInterface,\n type: \"vertical\" | \"horizontal\",\n guidelines: SnapGuideline[],\n targetPos: number[],\n targetRect: SnapDirectionPoses,\n React: Renderer\n): any[] {\n const { zoom, isDisplayInnerSnapDigit } = moveable.props;\n\n const mainNames = type === \"horizontal\" ? VERTICAL_NAMES_MAP : HORIZONTAL_NAMES_MAP;\n const targetStart = targetRect[mainNames.start]!;\n const targetEnd = targetRect[mainNames.end]!;\n return guidelines.filter(({ hide, elementRect }) => {\n if (hide) {\n return false;\n }\n if (isDisplayInnerSnapDigit && elementRect) {\n // inner\n const rect = elementRect.rect;\n\n if (rect[mainNames.start]! <= targetStart && targetEnd <= rect[mainNames.end]!) {\n return false;\n }\n }\n return true;\n }).map((guideline, i) => {\n const { pos, size, element, className } = guideline;\n\n const renderPos = [\n -targetPos[0] + pos[0],\n -targetPos[1] + pos[1],\n ];\n\n return renderInnerGuideline(\n {\n key: `${type}-default-guideline-${i}`,\n classNames: element ? [prefix(\"bold\"), className] : [prefix(\"normal\"), className],\n direction: type,\n posValue: renderPos,\n sizeValue: size,\n zoom: zoom!,\n },\n React\n );\n });\n}\n\nexport function renderDigitLine(\n moveable: MoveableManagerInterface,\n type: \"vertical\" | \"horizontal\",\n lineType: \"dashed\" | \"gap\",\n index: number,\n gap: number,\n renderPos: number[],\n className: string | undefined,\n React: Renderer,\n): any {\n const {\n snapDigit = 0,\n isDisplaySnapDigit = true,\n snapDistFormat = (v: number, type: \"vertical\" | \"horizontal\") => {\n // Type can be used render different values.\n if (type === 'vertical') {\n return v;\n }\n return v;\n },\n zoom,\n } = moveable.props;\n const scaleType = type === \"horizontal\" ? \"X\" : \"Y\";\n const sizeName = type === \"vertical\" ? \"height\" : \"width\";\n const absGap = Math.abs(gap!);\n const snapSize = isDisplaySnapDigit\n ? parseFloat(absGap.toFixed(snapDigit))\n : 0;\n return \n {renderInnerGuideline(\n {\n direction: type,\n classNames: [prefix(lineType), className],\n size: \"100%\",\n posValue: [0, 0],\n sizeValue: absGap,\n zoom: zoom!,\n },\n React\n )}\n \n {snapSize > 0 ? snapDistFormat(snapSize, type) : \"\"}\n
\n ;\n}\n\nexport function groupByElementGuidelines(\n type: \"vertical\" | \"horizontal\",\n guidelines: SnapGuideline[],\n targetRect: SnapDirectionPoses,\n isDisplayInnerSnapDigit: boolean,\n) {\n const index = type === \"vertical\" ? 0 : 1;\n const otherIndex = type === \"vertical\" ? 1 : 0;\n const names = index ? VERTICAL_NAMES_MAP : HORIZONTAL_NAMES_MAP;\n const targetStart = targetRect[names.start]!;\n const targetEnd = targetRect[names.end]!;\n return groupBy(guidelines, (guideline) => {\n return guideline.pos[index];\n }).map(nextGuidelines => {\n const start: SnapGuideline[] = [];\n const end: SnapGuideline[] = [];\n const inner: SnapGuideline[] = [];\n\n nextGuidelines.forEach(guideline => {\n const element = guideline.element!;\n const rect = guideline.elementRect!.rect;\n if (rect[names.end]! < targetStart) {\n start.push(guideline);\n } else if (targetEnd < rect[names.start]!) {\n end.push(guideline);\n } else if (rect[names.start]! <= targetStart && targetEnd <= rect[names.end]! && isDisplayInnerSnapDigit) {\n const pos = guideline.pos;\n const elementRect1 = { element, rect: { ...rect, [names.end]: rect[names.start]! } };\n const elementRect2 = { element, rect: { ...rect, [names.start]: rect[names.end]! } };\n const nextPos1 = [0, 0];\n const nextPos2 = [0, 0];\n nextPos1[index] = pos[index];\n nextPos1[otherIndex] = pos[otherIndex];\n\n nextPos2[index] = pos[index];\n nextPos2[otherIndex] = pos[otherIndex] + guideline.size;\n\n\n start.push({\n type,\n pos: nextPos1,\n size: 0,\n elementRect: elementRect1,\n direction: \"\",\n elementDirection: \"end\",\n });\n end.push({\n type,\n pos: nextPos2,\n size: 0,\n elementRect: elementRect2,\n direction: \"\",\n elementDirection: \"start\",\n });\n // inner.push(guideline);\n }\n });\n\n start.sort((a, b) => {\n return b.pos[otherIndex] - a.pos[otherIndex];\n });\n end.sort((a, b) => {\n return a.pos[otherIndex] - b.pos[otherIndex];\n });\n return {\n total: nextGuidelines,\n start,\n end,\n inner,\n };\n });\n}\nexport function renderDashedGuidelines(\n moveable: MoveableManagerInterface,\n guidelines: SnapGuideline[],\n targetPos: number[],\n targetRect: SnapDirectionPoses,\n React: Renderer,\n): any[] {\n const {\n isDisplayInnerSnapDigit,\n } = moveable.props;\n const rendered: any[] = [];\n\n ([\"vertical\", \"horizontal\"] as const).forEach(type => {\n const nextGuidelines = guidelines.filter(guideline => guideline.type === type);\n const index = type === \"vertical\" ? 1 : 0;\n const otherIndex = index ? 0 : 1;\n\n const groups = groupByElementGuidelines(type, nextGuidelines, targetRect, isDisplayInnerSnapDigit!);\n const mainNames = index ? HORIZONTAL_NAMES_MAP : VERTICAL_NAMES_MAP;\n const sideNames = index ? VERTICAL_NAMES_MAP : HORIZONTAL_NAMES_MAP;\n const targetStart = targetRect[mainNames.start]!;\n const targetEnd = targetRect[mainNames.end]!;\n\n groups.forEach(({ total, start, end, inner }) => {\n const sidePos = targetPos[otherIndex] + total[0].pos[otherIndex] - targetRect[sideNames.start]!;\n\n let prevRect = targetRect;\n\n start.forEach(guideline => {\n const nextRect = guideline.elementRect!.rect;\n const size = prevRect[mainNames.start]! - nextRect[mainNames.end]!;\n\n if (size > 0) {\n const renderPos = [0, 0];\n\n renderPos[index] = targetPos[index] + prevRect[mainNames.start]! - targetStart - size;\n renderPos[otherIndex] = sidePos;\n\n rendered.push(renderDigitLine(\n moveable,\n type,\n \"dashed\",\n rendered.length,\n size,\n renderPos,\n guideline.className,\n React\n ));\n }\n prevRect = nextRect;\n });\n\n prevRect = targetRect;\n end.forEach(guideline => {\n const nextRect = guideline.elementRect!.rect;\n const size = nextRect[mainNames.start]! - prevRect[mainNames.end]!;\n\n if (size > 0) {\n const renderPos = [0, 0];\n\n renderPos[index] = targetPos[index] + prevRect[mainNames.end]! - targetStart;\n renderPos[otherIndex] = sidePos;\n\n rendered.push(renderDigitLine(\n moveable,\n type,\n \"dashed\",\n rendered.length,\n size,\n renderPos,\n guideline.className,\n React\n ));\n }\n prevRect = nextRect;\n });\n\n inner.forEach(guideline => {\n const nextRect = guideline.elementRect!.rect;\n\n const size1 = targetStart - nextRect[mainNames.start]!;\n const size2 = nextRect[mainNames.end]! - targetEnd;\n const renderPos1 = [0, 0];\n const renderPos2 = [0, 0];\n\n renderPos1[index] = targetPos[index] - size1;\n renderPos1[otherIndex] = sidePos;\n\n renderPos2[index] = targetPos[index] + targetEnd - targetStart;\n renderPos2[otherIndex] = sidePos;\n\n rendered.push(renderDigitLine(\n moveable,\n type,\n \"dashed\",\n rendered.length,\n size1,\n renderPos1,\n guideline.className,\n React\n ));\n rendered.push(renderDigitLine(\n moveable,\n type,\n \"dashed\",\n rendered.length,\n size2,\n renderPos2,\n guideline.className,\n React\n ));\n });\n });\n });\n return rendered;\n}\nexport function renderGapGuidelines(\n moveable: MoveableManagerInterface,\n guidelines: SnapGuideline[],\n targetPos: number[],\n targetRect: SnapDirectionPoses,\n React: any\n): any[] {\n const rendered: any[] = [];\n ([\"horizontal\", \"vertical\"] as const).forEach(type => {\n const nextGuidelines = guidelines.filter(guideline => guideline.type === type).slice(0, 1);\n const index = type === \"vertical\" ? 0 : 1;\n const otherIndex = index ? 0 : 1;\n const mainNames = index ? HORIZONTAL_NAMES_MAP : VERTICAL_NAMES_MAP;\n const sideNames = index ? VERTICAL_NAMES_MAP : HORIZONTAL_NAMES_MAP;\n const targetStart = targetRect[mainNames.start]!;\n const targetEnd = targetRect[mainNames.end]!;\n const targetSideStart = targetRect[sideNames.start]!;\n const targetSideEnd = targetRect[sideNames.end]!;\n\n\n nextGuidelines.forEach(({ gap, gapRects }) => {\n const sideStartPos = Math.max(\n targetSideStart,\n ...gapRects!.map(({ rect }) => rect[sideNames.start]!),\n );\n const sideEndPos = Math.min(\n targetSideEnd,\n ...gapRects!.map(({ rect }) => rect[sideNames.end]!),\n );\n const sideCenterPos = (sideStartPos + sideEndPos) / 2;\n\n if (sideStartPos === sideEndPos || sideCenterPos === (targetSideStart + targetSideEnd)/ 2) {\n return;\n }\n gapRects!.forEach(({ rect, className }) => {\n const renderPos = [targetPos[0], targetPos[1]];\n\n if (rect[mainNames.end]! < targetStart) {\n renderPos[index] += rect[mainNames.end]! - targetStart;\n } else if (targetEnd < rect[mainNames.start]!) {\n renderPos[index] += rect[mainNames.start]! - targetStart - gap!;\n } else {\n return;\n }\n\n renderPos[otherIndex] += sideCenterPos - targetSideStart;\n rendered.push(renderDigitLine(\n moveable,\n index ? \"vertical\" : \"horizontal\",\n \"gap\",\n rendered.length,\n gap!,\n renderPos,\n className,\n React\n ));\n });\n });\n });\n return rendered;\n}\n","import { convertUnitSize, dot, flat, isNumber, isObject, throttle } from \"@daybrush/utils\";\nimport { diff } from \"@egjs/children-differ\";\nimport {\n MoveableManagerInterface, SnappableProps,\n SnappableState, SnapGuideline, SnapDirectionPoses,\n PosGuideline, ElementGuidelineValue,\n SnapElementRect,\n NumericPosGuideline,\n} from \"../../types\";\nimport { getRect, getAbsolutePosesByState, getRefTarget, calculateInversePosition, prefix, abs } from \"../../utils\";\nimport {\n splitSnapDirectionPoses, getSnapDirections,\n HORIZONTAL_NAMES_MAP, VERTICAL_NAMES_MAP, calculateContainerPos, SNAP_SKIP_NAMES_MAP,\n} from \"./utils\";\n\nexport function getTotalGuidelines(\n moveable: MoveableManagerInterface,\n) {\n const state = moveable.state;\n const {\n containerClientRect,\n hasFixed,\n } = state;\n const {\n overflow,\n scrollHeight: containerHeight,\n scrollWidth: containerWidth,\n clientHeight: containerClientHeight,\n clientWidth: containerClientWidth,\n clientLeft,\n clientTop,\n } = containerClientRect;\n const {\n snapGap = true,\n verticalGuidelines,\n horizontalGuidelines,\n snapThreshold = 5,\n maxSnapElementGuidelineDistance = Infinity,\n isDisplayGridGuidelines,\n } = moveable.props;\n const { top, left, bottom, right } = getRect(getAbsolutePosesByState(moveable.state));\n const targetRect = { top, left, bottom, right, center: (left + right) / 2, middle: (top + bottom) / 2 };\n const elementGuidelines = getElementGuidelines(moveable);\n let totalGuidelines: SnapGuideline[] = [...elementGuidelines];\n\n const snapThresholdMultiples = (state.snapThresholdInfo?.multiples ?? [1, 1]).map(n => n * snapThreshold);\n\n if (snapGap) {\n totalGuidelines.push(...getGapGuidelines(\n moveable,\n targetRect,\n snapThresholdMultiples,\n ));\n }\n const snapOffset = {\n ...(state.snapOffset || {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n }),\n };\n\n totalGuidelines.push(...getGridGuidelines(\n moveable,\n overflow ? containerWidth! : containerClientWidth!,\n overflow ? containerHeight! : containerClientHeight!,\n clientLeft,\n clientTop,\n snapOffset,\n isDisplayGridGuidelines,\n ));\n\n\n if (hasFixed) {\n const { left, top } = containerClientRect;\n\n snapOffset.left += left;\n snapOffset.top += top;\n snapOffset.right += left;\n snapOffset.bottom += top;\n }\n\n totalGuidelines.push(...getDefaultGuidelines(\n horizontalGuidelines || false,\n verticalGuidelines || false,\n overflow ? containerWidth! : containerClientWidth!,\n overflow ? containerHeight! : containerClientHeight!,\n clientLeft,\n clientTop,\n snapOffset,\n ));\n\n totalGuidelines = totalGuidelines.filter(({ element, elementRect, type }) => {\n if (!element || !elementRect) {\n return true;\n }\n const rect = elementRect.rect;\n\n return checkBetweenRects(targetRect, rect, type, maxSnapElementGuidelineDistance);\n });\n\n return totalGuidelines;\n}\n\nexport function getGapGuidelines(\n moveable: MoveableManagerInterface,\n targetRect: SnapDirectionPoses,\n snapThresholds: number[],\n) {\n const {\n maxSnapElementGuidelineDistance = Infinity,\n maxSnapElementGapDistance = Infinity,\n } = moveable.props;\n const elementRects = moveable.state.elementRects;\n const gapGuidelines: SnapGuideline[] = [];\n [\n [\"vertical\", VERTICAL_NAMES_MAP, HORIZONTAL_NAMES_MAP] as const,\n [\"horizontal\", HORIZONTAL_NAMES_MAP, VERTICAL_NAMES_MAP] as const,\n ].forEach(([type, mainNames, sideNames]) => {\n const targetStart = targetRect[mainNames.start]!;\n const targetEnd = targetRect[mainNames.end]!;\n const targetCenter = targetRect[mainNames.center]!;\n const targetStart2 = targetRect[sideNames.start]!;\n const targetEnd2 = targetRect[sideNames.end]!;\n\n // element : moveable\n const snapThresholdMap = {\n left: snapThresholds[0],\n top: snapThresholds[1],\n };\n\n function getDist(elementRect: SnapElementRect) {\n const rect = elementRect.rect;\n const snapThreshold = snapThresholdMap[mainNames.start];\n\n if (rect[mainNames.end]! < targetStart + snapThreshold) {\n return targetStart - rect[mainNames.end]!;\n } else if (targetEnd - snapThreshold < rect[mainNames.start]!) {\n return rect[mainNames.start]! - targetEnd;\n } else {\n return -1;\n }\n }\n const nextElementRects = elementRects.filter(elementRect => {\n const rect = elementRect.rect;\n\n if (rect[sideNames.start]! > targetEnd2 || rect[sideNames.end]! < targetStart2) {\n return false;\n }\n\n return getDist(elementRect) > 0;\n }).sort((a, b) => {\n return getDist(a) - getDist(b);\n });\n\n const groups: SnapElementRect[][] = [];\n\n nextElementRects.forEach(snapRect1 => {\n nextElementRects.forEach(snapRect2 => {\n if (snapRect1 === snapRect2) {\n return;\n }\n const { rect: rect1 } = snapRect1;\n const { rect: rect2 } = snapRect2;\n\n const rect1Start = rect1[sideNames.start]!;\n const rect1End = rect1[sideNames.end]!;\n const rect2Start = rect2[sideNames.start]!;\n const rect2End = rect2[sideNames.end]!;\n\n if (rect1Start > rect2End || rect2Start > rect1End) {\n return;\n }\n\n groups.push([snapRect1, snapRect2]);\n });\n });\n\n groups.forEach(([snapRect1, snapRect2]) => {\n const { rect: rect1 } = snapRect1;\n const { rect: rect2 } = snapRect2;\n\n const rect1Start = rect1[mainNames.start]!;\n const rect1End = rect1[mainNames.end]!;\n const rect2Start = rect2[mainNames.start]!;\n const rect2End = rect2[mainNames.end]!;\n const snapThreshold = snapThresholdMap[mainNames.start];\n let gap = 0;\n let pos = 0;\n let isStart = false;\n let isCenter = false;\n let isEnd = false;\n\n if (rect1End <= targetStart && targetEnd <= rect2Start) {\n // (l)element1(r) : (l)target(r) : (l)element2(r)\n isCenter = true;\n gap = ((rect2Start - rect1End) - (targetEnd - targetStart)) / 2;\n pos = rect1End + gap + (targetEnd - targetStart) / 2;\n\n if (abs(pos - targetCenter) > snapThreshold) {\n return;\n }\n } else if (rect1End < rect2Start && rect2End < targetStart + snapThreshold) {\n // (l)element1(r) : (l)element2(r) : (l)target\n isStart = true;\n\n gap = rect2Start - rect1End;\n pos = rect2End + gap;\n\n if (abs(pos - targetStart) > snapThreshold) {\n return;\n }\n } else if (rect1End < rect2Start && targetEnd - snapThreshold < rect1Start) {\n // target(r) : (l)element1(r) : (l)element2(r)\n\n isEnd = true;\n gap = rect2Start - rect1End;\n pos = rect1Start - gap;\n\n if (abs(pos - targetEnd) > snapThreshold) {\n return;\n }\n } else {\n return;\n }\n if (!gap) {\n return;\n }\n if (!checkBetweenRects(targetRect, rect2, type, maxSnapElementGuidelineDistance)) {\n return;\n }\n if (gap > maxSnapElementGapDistance) {\n return;\n }\n gapGuidelines.push({\n type,\n pos: type === \"vertical\" ? [pos, 0] : [0, pos],\n element: snapRect2.element,\n size: 0,\n className: snapRect2.className,\n isStart,\n isCenter,\n isEnd,\n gap,\n hide: true,\n gapRects: [snapRect1, snapRect2],\n direction: \"\",\n elementDirection: \"\",\n });\n });\n });\n return gapGuidelines;\n}\n\nexport function startGridGroupGuidelines(\n moveable: MoveableManagerInterface,\n clientLeft: number,\n clientTop: number,\n snapOffset: { left: number, top: number, right: number, bottom: number },\n) {\n const props = moveable.props;\n const state = moveable.state;\n const {\n snapGridAll,\n } = props;\n const {\n snapGridWidth = 0,\n snapGridHeight = 0,\n } = props;\n const {\n snapRenderInfo,\n } = state;\n const hasDirection = snapRenderInfo && (snapRenderInfo.direction?.[0] || snapRenderInfo.direction?.[1]);\n const moveables = moveable.moveables;\n const ignores = [false, false];\n\n // snap group's all child to grid.\n if (\n snapGridAll\n && moveables\n && hasDirection\n && (snapGridWidth || snapGridHeight)\n ) {\n if (state.snapThresholdInfo) {\n return;\n }\n state.snapThresholdInfo = {\n multiples: [1, 1],\n offset: [0, 0],\n };\n\n const rect = moveable.getRect();\n const children = rect.children;\n const direction = snapRenderInfo.direction!;\n\n\n if (children) {\n const result = direction.map((dir, i) => {\n const {\n snapSize,\n posName,\n sizeName,\n clientOffset,\n } = i === 0 ? {\n snapSize: snapGridWidth,\n posName: \"left\",\n sizeName: \"width\",\n clientOffset: snapOffset.left - clientLeft,\n } as const : {\n snapSize: snapGridHeight,\n posName: \"top\",\n sizeName: \"height\",\n clientOffset: snapOffset.top - clientTop,\n } as const;\n\n if (!snapSize) {\n return {\n dir,\n multiple: 1,\n snapSize,\n snapOffset: 0,\n };\n }\n const rectSize = rect[sizeName];\n const rectPos = rect[posName];\n\n // 사이즈보다 만약 작다면 어떻게 해야되죠?\n const childSizes = flat(children.map(child => {\n return [\n (child[posName] - rectPos),\n (child[sizeName]),\n (rectSize - child[sizeName] - child[posName] + rectPos),\n ];\n })).filter(v => v).sort((a, b) => {\n return a - b;\n });\n\n const firstChildSize = childSizes[0];\n const childSnapSizes = childSizes.map(size => throttle(size / firstChildSize, 0.1) * snapSize);\n let n = 1;\n\n const rectRatio = throttle(rectSize / firstChildSize, 0.1);\n\n for (n = 1; n <= 10; ++n) {\n if (childSnapSizes.every(childSize => {\n return childSize * n % 1 === 0;\n })) {\n break;\n }\n }\n\n // dir 1 (fixed -1)\n // dir 0 (fixed 0)\n // dir -1 (fixed 1)\n\n const ratio = (-dir + 1) / 2;\n const offsetPos = dot(\n rectPos - clientOffset,\n rectPos - clientOffset + rectSize,\n ratio, 1 - ratio,\n );\n\n return {\n multiple: rectRatio * n,\n dir,\n snapSize,\n snapOffset: Math.round(offsetPos / snapSize),\n };\n });\n\n const multiples = result.map(r => r.multiple || 1);\n state.snapThresholdInfo.multiples = multiples;\n state.snapThresholdInfo.offset = result.map(r => r.snapOffset);\n\n result.forEach((r, i) => {\n if (r.snapSize) {\n ignores[i] = true;\n }\n });\n }\n } else {\n state.snapThresholdInfo = null;\n }\n}\n\n\nexport function getGridGuidelines(\n moveable: MoveableManagerInterface,\n containerWidth: number,\n containerHeight: number,\n clientLeft = 0,\n clientTop = 0,\n snapOffset: { left: number, top: number, right: number, bottom: number },\n isDisplayGridGuidelines?: boolean,\n): SnapGuideline[] {\n const props = moveable.props;\n const state = moveable.state;\n let {\n snapGridWidth = 0,\n snapGridHeight = 0,\n } = props;\n const guidelines: SnapGuideline[] = [];\n const {\n left: snapOffsetLeft,\n top: snapOffsetTop,\n } = snapOffset;\n let startOffset = [0, 0];\n\n startGridGroupGuidelines(\n moveable,\n clientLeft,\n clientTop,\n snapOffset,\n );\n\n const snapThresholdInfo = state.snapThresholdInfo;\n const defaultSnapGridWidth = snapGridWidth;\n const defaultSnapGridHeight = snapGridHeight;\n\n if (snapThresholdInfo) {\n snapGridWidth *= snapThresholdInfo.multiples[0] || 1;\n snapGridHeight *= snapThresholdInfo.multiples[1] || 1;\n startOffset = snapThresholdInfo.offset;\n }\n\n if (snapGridHeight) {\n const pushGuideline = (pos: number) => {\n guidelines.push({\n type: \"horizontal\",\n pos: [\n snapOffsetLeft,\n throttle(startOffset[1] * defaultSnapGridHeight + pos - clientTop + snapOffsetTop, 0.1),\n ],\n className: prefix(\"grid-guideline\"),\n size: containerWidth!,\n hide: !isDisplayGridGuidelines,\n direction: \"\",\n grid: true,\n });\n };\n for (let pos = 0; pos <= containerHeight * 2; pos += snapGridHeight) {\n pushGuideline(pos);\n }\n for (let pos = -snapGridHeight; pos >= -containerHeight; pos -= snapGridHeight) {\n pushGuideline(pos);\n }\n }\n\n if (snapGridWidth) {\n const pushGuideline = (pos: number) => {\n guidelines.push({\n type: \"vertical\",\n pos: [\n throttle(startOffset[0] * defaultSnapGridWidth + pos - clientLeft + snapOffsetLeft, 0.1),\n snapOffsetTop,\n ],\n className: prefix(\"grid-guideline\"),\n size: containerHeight!,\n hide: !isDisplayGridGuidelines,\n direction: \"\",\n grid: true,\n });\n };\n for (let pos = 0; pos <= containerWidth * 2; pos += snapGridWidth) {\n pushGuideline(pos);\n }\n for (let pos = -snapGridWidth; pos >= -containerWidth; pos -= snapGridWidth) {\n pushGuideline(pos);\n }\n }\n\n return guidelines;\n}\n\nexport function checkBetweenRects(\n rect1: SnapDirectionPoses,\n rect2: SnapDirectionPoses,\n type: \"horizontal\" | \"vertical\",\n distance: number,\n) {\n if (type === \"horizontal\") {\n return abs(rect1.right! - rect2.left!) <= distance\n || abs(rect1.left! - rect2.right!) <= distance\n || rect1.left! <= rect2.right! && rect2.left! <= rect1.right!;\n } else if (type === \"vertical\") {\n return abs(rect1.bottom! - rect2.top!) <= distance\n || abs(rect1.top! - rect2.bottom!) <= distance\n || rect1.top! <= rect2.bottom! && rect2.top! <= rect1.bottom!;\n }\n return true;\n}\n\n\nexport function getElementGuidelines(\n moveable: MoveableManagerInterface,\n) {\n const state = moveable.state;\n\n const {\n elementGuidelines = [],\n } = moveable.props;\n\n if (!elementGuidelines.length) {\n state.elementRects = [];\n return [];\n }\n\n const prevValues = (state.elementRects || []).filter(snapRect => !snapRect.refresh);\n const nextElementGuidelines = elementGuidelines.map(el => {\n if (isObject(el) && \"element\" in el) {\n return {\n ...el,\n element: getRefTarget(el.element, true)!,\n };\n }\n return {\n element: getRefTarget(el, true)!,\n };\n }).filter(value => {\n return value.element;\n }) as ElementGuidelineValue[];\n\n const {\n maintained,\n added,\n } = diff(prevValues.map(v => v.element), nextElementGuidelines.map(v => v.element));\n\n\n const nextValues: SnapElementRect[] = [];\n maintained.forEach(([prevIndex, nextIndex]) => {\n nextValues[nextIndex] = prevValues[prevIndex];\n });\n\n getSnapElementRects(moveable, added.map(index => nextElementGuidelines[index])).map((rect, i) => {\n nextValues[added[i]] = rect;\n });\n\n\n state.elementRects = nextValues;\n const elementSnapDirections = getSnapDirections(moveable.props.elementSnapDirections);\n const nextGuidelines: SnapGuideline[] = [];\n\n nextValues.forEach(snapRect => {\n const {\n element,\n top: topValue = elementSnapDirections.top,\n left: leftValue = elementSnapDirections.left,\n right: rightValue = elementSnapDirections.right,\n bottom: bottomValue = elementSnapDirections.bottom,\n center: centerValue = elementSnapDirections.center,\n middle: middleValue = elementSnapDirections.middle,\n className,\n rect,\n } = snapRect;\n const {\n horizontal,\n vertical,\n horizontalNames,\n verticalNames,\n } = splitSnapDirectionPoses({\n top: topValue,\n right: rightValue,\n left: leftValue,\n bottom: bottomValue,\n center: centerValue,\n middle: middleValue,\n }, rect);\n const rectTop = rect.top!;\n const rectLeft = rect.left!;\n const width = rect.right! - rectLeft;\n const height = rect.bottom! - rectTop;\n const sizes = [width, height];\n\n vertical.forEach((pos, i) => {\n nextGuidelines.push({\n type: \"vertical\", element, pos: [\n throttle(pos, 0.1),\n rectTop,\n ], size: height,\n sizes,\n className,\n elementRect: snapRect,\n elementDirection: SNAP_SKIP_NAMES_MAP[verticalNames[i]] || verticalNames[i],\n direction: \"\",\n });\n });\n horizontal.forEach((pos, i) => {\n nextGuidelines.push({\n type: \"horizontal\",\n element,\n pos: [\n rectLeft,\n throttle(pos, 0.1),\n ],\n size: width,\n sizes,\n className,\n elementRect: snapRect,\n elementDirection: SNAP_SKIP_NAMES_MAP[horizontalNames[i]] || horizontalNames[i],\n direction: \"\",\n });\n });\n });\n\n return nextGuidelines;\n}\n\n\nfunction getObjectGuidelines(\n guidelines: Array | false,\n containerSize: number,\n): NumericPosGuideline[] {\n return guidelines ? guidelines.map(info => {\n const posGuideline = isObject(info) ? info : { pos: info };\n const pos = posGuideline.pos;\n\n if (isNumber(pos)) {\n return posGuideline as NumericPosGuideline;\n } else {\n return {\n ...posGuideline,\n pos: convertUnitSize(pos, containerSize),\n };\n }\n }) : [];\n}\n\nexport function getDefaultGuidelines(\n horizontalGuidelines: Array | false,\n verticalGuidelines: Array | false,\n width: number,\n height: number,\n clientLeft = 0,\n clientTop = 0,\n snapOffset = { left: 0, top: 0, right: 0, bottom: 0 },\n): SnapGuideline[] {\n const guidelines: SnapGuideline[] = [];\n const {\n left: snapOffsetLeft,\n top: snapOffsetTop,\n bottom: snapOffsetBottom,\n right: snapOffsetRight,\n } = snapOffset;\n const snapWidth = width! + snapOffsetRight - snapOffsetLeft;\n const snapHeight = height! + snapOffsetBottom - snapOffsetTop;\n\n getObjectGuidelines(horizontalGuidelines, snapHeight).forEach(posInfo => {\n guidelines.push({\n type: \"horizontal\",\n pos: [\n snapOffsetLeft,\n throttle(posInfo.pos - clientTop + snapOffsetTop, 0.1),\n ],\n size: snapWidth,\n className: posInfo.className,\n direction: \"\",\n });\n });\n getObjectGuidelines(verticalGuidelines, snapWidth).forEach(posInfo => {\n guidelines.push({\n type: \"vertical\",\n pos: [\n throttle(posInfo.pos - clientLeft + snapOffsetLeft, 0.1),\n snapOffsetTop,\n ],\n size: snapHeight,\n className: posInfo.className,\n direction: \"\",\n });\n });\n return guidelines;\n}\n\n\n\nexport function getSnapElementRects(\n moveable: MoveableManagerInterface,\n values: ElementGuidelineValue[],\n): SnapElementRect[] {\n if (!values.length) {\n return [];\n }\n const groupable = moveable.props.groupable;\n const state = moveable.state;\n const {\n containerClientRect,\n // targetClientRect: {\n // top: clientTop,\n // left: clientLeft,\n // },\n rootMatrix,\n is3d,\n offsetDelta,\n } = state;\n const n = is3d ? 4 : 3;\n const [containerLeft, containerTop] = calculateContainerPos(rootMatrix, containerClientRect, n);\n // const poses = getAbsolutePosesByState(state);\n // const {\n // minX: targetLeft,\n // minY: targetTop,\n // } = getMinMaxs(poses);\n // const [distLeft, distTop] = minus([targetLeft, targetTop], calculateInversePosition(rootMatrix, [\n // clientLeft - containerLeft,\n // clientTop - containerTop,\n // ], n)).map(pos => roundSign(pos));\n\n const offsetLeft = groupable ? 0 : offsetDelta[0];\n const offsetTop = groupable ? 0 : offsetDelta[1];\n\n return values.map(value => {\n const rect = value.element.getBoundingClientRect();\n const left = rect.left - containerLeft - offsetLeft;\n const top = rect.top - containerTop - offsetTop;\n const bottom = top + rect.height;\n const right = left + rect.width;\n const [elementLeft, elementTop] = calculateInversePosition(rootMatrix, [left, top], n);\n const [elementRight, elementBottom] = calculateInversePosition(rootMatrix, [right, bottom], n);\n\n return {\n ...value,\n rect: {\n left: elementLeft,\n right: elementRight,\n top: elementTop,\n bottom: elementBottom,\n center: (elementLeft + elementRight) / 2,\n middle: (elementTop + elementBottom) / 2,\n },\n };\n });\n}\n\n","/*\negjs-children-differ\nCopyright (c) 2019-present NAVER Corp.\nMIT license\n*/\nimport {diff as listdiff} from \"@egjs/list-differ\";\nimport { findKeyCallback } from \"./consts\";\nimport { ChildrenDiffResult } from \"./types\";\n\n\n/**\n *\n * @memberof eg.ChildrenDiffer\n * @static\n * @function\n * @param - Previous List 이전 목록 \n * @param - List to Update 업데이트 할 목록 \n * @return - Returns the diff between `prevList` and `list` `prevList`와 `list`의 다른 점을 반환한다.\n * @example\n * import { diff } from \"@egjs/children-differ\";\n * // script => eg.ChildrenDiffer.diff\n * const result = diff([0, 1, 2, 3, 4, 5], [7, 8, 0, 4, 3, 6, 2, 1]);\n * // List before update\n * // [1, 2, 3, 4, 5]\n * console.log(result.prevList);\n * // Updated list\n * // [4, 3, 6, 2, 1]\n * console.log(result.list);\n * // Index array of values added to `list`\n * // [0, 1, 5]\n * console.log(result.added);\n * // Index array of values removed in `prevList`\n * // [5]\n * console.log(result.removed);\n * // An array of index pairs of `prevList` and `list` with different indexes from `prevList` and `list`\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.changed);\n * // The subset of `changed` and an array of index pairs that moved data directly. Indicate an array of absolute index pairs of `ordered`.(Formatted by: Array<[index of prevList, index of list]>)\n * // [[4, 3], [3, 4], [2, 6]]\n * console.log(result.pureChanged);\n * // An array of index pairs to be `ordered` that can synchronize `list` before adding data. (Formatted by: Array<[prevIndex, nextIndex]>)\n * // [[4, 1], [4, 2], [4, 3]]\n * console.log(result.ordered);\n * // An array of index pairs of `prevList` and `list` that have not been added/removed so data is preserved\n * // [[0, 2], [4, 3], [3, 4], [2, 6], [1, 7]]\n * console.log(result.maintained);\n */\nexport function diff(\n prevList: T[],\n list: T[],\n): ChildrenDiffResult {\n return listdiff(prevList, list, findKeyCallback);\n}\n","import { MoveableManagerInterface } from \"../types\";\n\nexport function getGestoData(moveable: MoveableManagerInterface, ableName: string) {\n const targetGesto = moveable.targetGesto;\n const controlGesto = moveable.controlGesto;\n let data!: Record;\n\n if (targetGesto?.isFlag()) {\n data = targetGesto.getEventData()[ableName];\n }\n\n if (!data && controlGesto?.isFlag()) {\n data = controlGesto.getEventData()[ableName];\n }\n\n return data || {};\n}\n","import { makeAble } from \"./AbleManager\";\nimport { triggerEvent, fillParams, fillEndParams } from \"../utils\";\nimport {\n PinchableProps, Able, SnappableState,\n OnPinchStart, OnPinch, OnPinchEnd, MoveableManagerInterface, MoveableGroupInterface,\n} from \"../types\";\n\n/**\n * @namespace Moveable.Pinchable\n * @description Whether or not target can be pinched with draggable, resizable, scalable, rotatable (default: false)\n */\nexport default makeAble(\"pinchable\", {\n props: [\n \"pinchable\",\n ] as const,\n events: [\n \"pinchStart\",\n \"pinch\",\n \"pinchEnd\",\n \"pinchGroupStart\",\n \"pinchGroup\",\n \"pinchGroupEnd\",\n ] as const,\n dragStart() {\n return true;\n },\n pinchStart(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, targets, angle, originalDatas } = e;\n const { pinchable, ables } = moveable.props;\n\n if (!pinchable) {\n return false;\n }\n const eventName = `onPinch${targets ? \"Group\" : \"\"}Start` as \"onPinchStart\";\n const controlEventName = `drag${targets ? \"Group\" : \"\"}ControlStart` as \"dragControlStart\";\n\n const pinchAbles = (pinchable === true ? moveable.controlAbles : ables!.filter(able => {\n return pinchable.indexOf(able.name as any) > -1;\n })).filter(able => able.canPinch && able[controlEventName]);\n\n const params = fillParams(moveable, e, {}) as any;\n\n if (targets) {\n params.targets = targets;\n }\n const result = triggerEvent(moveable, eventName, params);\n\n datas.isPinch = result !== false;\n datas.ables = pinchAbles;\n\n const isPinch = datas.isPinch;\n\n if (!isPinch) {\n return false;\n }\n pinchAbles.forEach(able => {\n originalDatas[able.name] = originalDatas[able.name] || {};\n\n if (!able[controlEventName]) {\n return;\n }\n const ableEvent: any = {\n ...e,\n datas: originalDatas[able.name],\n parentRotate: angle,\n isPinch: true,\n };\n able[controlEventName]!(moveable, ableEvent);\n });\n\n moveable.state.snapRenderInfo = {\n request: e.isRequest,\n direction: [0, 0],\n };\n return isPinch;\n },\n pinch(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const {\n datas, scale: pinchScale, distance,\n originalDatas,\n inputEvent, targets,\n angle,\n } = e;\n if (!datas.isPinch) {\n return;\n }\n const parentDistance = distance * (1 - 1 / pinchScale);\n const params = fillParams(moveable, e, {}) as any;\n\n if (targets) {\n params.targets = targets;\n }\n const eventName = `onPinch${targets ? \"Group\" : \"\"}` as \"onPinch\";\n triggerEvent(moveable, eventName, params);\n\n const ables: Able[] = datas.ables;\n const controlEventName = `drag${targets ? \"Group\" : \"\"}Control` as \"dragControl\";\n\n ables.forEach(able => {\n if (!able[controlEventName]) {\n return;\n }\n able[controlEventName]!(moveable, {\n ...e,\n datas: originalDatas[able.name],\n inputEvent,\n resolveMatrix: true,\n pinchScale: pinchScale,\n parentDistance,\n parentRotate: angle,\n isPinch: true,\n } as any);\n });\n return params;\n },\n pinchEnd(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, isPinch, inputEvent, targets, originalDatas } = e;\n if (!datas.isPinch) {\n return;\n }\n const eventName = `onPinch${targets ? \"Group\" : \"\"}End` as \"onPinchEnd\";\n\n const params = fillEndParams(moveable, e, { isDrag: isPinch }) as any;\n\n if (targets) {\n params.targets = targets;\n }\n triggerEvent(moveable, eventName, params);\n const ables: Able[] = datas.ables;\n const controlEventName = `drag${targets ? \"Group\" : \"\"}ControlEnd` as \"dragControlEnd\";\n\n ables.forEach(able => {\n if (!able[controlEventName]) {\n return;\n }\n able[controlEventName]!(moveable, {\n ...e,\n isDrag: isPinch,\n datas: originalDatas[able.name],\n inputEvent,\n isPinch: true,\n } as any);\n });\n return isPinch;\n },\n pinchGroupStart(moveable: MoveableGroupInterface, e: any) {\n return this.pinchStart!(moveable, { ...e, targets: moveable.props.targets });\n },\n pinchGroup(moveable: MoveableGroupInterface, e: any) {\n return this.pinch!(moveable, { ...e, targets: moveable.props.targets });\n },\n pinchGroupEnd(moveable: MoveableGroupInterface, e: any) {\n return this.pinchEnd!(moveable, { ...e, targets: moveable.props.targets });\n },\n});\n\n/**\n * Whether or not target can be pinched with draggable, resizable, scalable, rotatable (default: false)\n * @name Moveable.Pinchable#pinchable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.pinchable = true;\n */\n\n/**\n * When the pinch starts, the pinchStart event is called with part of scaleStart, rotateStart, resizeStart\n * @memberof Moveable.Pinchable\n * @event pinchStart\n * @param {Moveable.Pinchable.OnPinchStart} - Parameters for the pinchStart event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * rotatable: true,\n * scalable: true,\n * pinchable: true, // [\"rotatable\", \"scalable\"]\n * });\n * moveable.on(\"pinchStart\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"rotateStart\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"scaleStart\", ({ target }) => {\n * console.log(target);\n * });\n */\n/**\n * When pinching, the pinch event is called with part of scale, rotate, resize\n * @memberof Moveable.Pinchable\n * @event pinch\n * @param {Moveable.Pinchable.OnPinch} - Parameters for the pinch event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * rotatable: true,\n * scalable: true,\n * pinchable: true, // [\"rotatable\", \"scalable\"]\n * });\n * moveable.on(\"pinch\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"rotate\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"scale\", ({ target }) => {\n * console.log(target);\n * });\n */\n/**\n * When the pinch finishes, the pinchEnd event is called.\n * @memberof Moveable.Pinchable\n * @event pinchEnd\n * @param {Moveable.Pinchable.OnPinchEnd} - Parameters for the pinchEnd event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * rotatable: true,\n * scalable: true,\n * pinchable: true, // [\"rotatable\", \"scalable\"]\n * });\n * moveable.on(\"pinchEnd\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"rotateEnd\", ({ target }) => {\n * console.log(target);\n * });\n * moveable.on(\"scaleEnd\", ({ target }) => {\n * console.log(target);\n * });\n */\n\n/**\n * When the group pinch starts, the `pinchGroupStart` event is called.\n * @memberof Moveable.Pinchable\n * @event pinchGroupStart\n * @param {Moveable.Pinchable.OnPinchGroupStart} - Parameters for the `pinchGroupStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * pinchable: true\n * });\n * moveable.on(\"pinchGroupStart\", ({ targets }) => {\n * console.log(\"onPinchGroupStart\", targets);\n * });\n */\n\n/**\n * When the group pinch, the `pinchGroup` event is called.\n * @memberof Moveable.Pinchable\n * @event pinchGroup\n * @param {Moveable.Pinchable.OnPinchGroup} - Parameters for the `pinchGroup` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * pinchable: true\n * });\n * moveable.on(\"pinchGroup\", ({ targets, events }) => {\n * console.log(\"onPinchGroup\", targets);\n * });\n */\n\n/**\n * When the group pinch finishes, the `pinchGroupEnd` event is called.\n * @memberof Moveable.Pinchable\n * @event pinchGroupEnd\n * @param {Moveable.Pinchable.OnPinchGroupEnd} - Parameters for the `pinchGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * pinchable: true\n * });\n * moveable.on(\"pinchGroupEnd\", ({ targets, isDrag }) => {\n * console.log(\"onPinchGroupEnd\", targets, isDrag);\n * });\n */\n","import {\n triggerEvent, multiply2,\n fillParams, fillEndParams, getAbsolutePosesByState,\n catchEvent, getOffsetSizeDist, getDirectionCondition,\n getDirectionViewClassName, getTotalDirection, sign, countEach, abs,\n} from \"../utils\";\nimport { MIN_SCALE } from \"../consts\";\nimport {\n setDragStart, resolveTransformEvent,\n convertTransformFormat,\n getScaleDist,\n fillTransformStartEvent,\n fillTransformEvent,\n setDefaultTransformIndex,\n getTranslateFixedPosition,\n} from \"../gesto/GestoUtils\";\nimport { getRenderDirections } from \"../renderDirections\";\nimport {\n ScalableProps, OnScaleGroup, OnScaleGroupEnd,\n OnScaleGroupStart, DraggableProps, OnDragStart,\n SnappableState, GroupableProps, OnScaleStart,\n OnScale, OnScaleEnd, MoveableManagerInterface, MoveableGroupInterface,\n OnBeforeScaleGroup,\n OnBeforeScale,\n} from \"../types\";\nimport {\n fillChildEvents,\n startChildDist,\n triggerChildAbles,\n} from \"../groupUtils\";\nimport Draggable from \"./Draggable\";\nimport { calculate, createRotateMatrix, plus, minus } from \"@scena/matrix\";\nimport CustomGesto from \"../gesto/CustomGesto\";\nimport { checkSnapScale } from \"./Snappable\";\nimport {\n isArray, IObject, getDist,\n throttle,\n calculateBoundSize,\n} from \"@daybrush/utils\";\nimport { getFixedDirectionInfo } from \"../utils/getFixedDirection\";\n\nconst directionCondition = getDirectionCondition(\"scalable\");\n\n/**\n * @namespace Scalable\n * @memberof Moveable\n * @description Scalable indicates whether the target's x and y can be scale of transform.\n */\nexport default {\n name: \"scalable\",\n ableGroup: \"size\",\n canPinch: true,\n props: [\n \"scalable\",\n \"throttleScale\",\n \"renderDirections\",\n \"keepRatio\",\n \"edge\",\n \"displayAroundControls\",\n ] as const,\n events: [\n \"scaleStart\",\n \"beforeScale\",\n \"scale\",\n \"scaleEnd\",\n \"scaleGroupStart\",\n \"beforeScaleGroup\",\n \"scaleGroup\",\n \"scaleGroupEnd\",\n ] as const,\n render: getRenderDirections(\"scalable\"),\n dragControlCondition: directionCondition,\n viewClassName: getDirectionViewClassName(\"scalable\"),\n dragControlStart(\n moveable: MoveableManagerInterface,\n e: any) {\n const { datas, isPinch, inputEvent, parentDirection } = e;\n\n const direction = getTotalDirection(\n parentDirection,\n isPinch,\n inputEvent,\n datas,\n );\n const {\n width,\n height,\n targetTransform,\n target,\n pos1,\n pos2,\n pos4,\n } = moveable.state;\n\n if (!direction || !target) {\n return false;\n }\n if (!isPinch) {\n setDragStart(moveable, e);\n }\n datas.datas = {};\n datas.transform = targetTransform;\n datas.prevDist = [1, 1];\n datas.direction = direction;\n datas.startOffsetWidth = width;\n datas.startOffsetHeight = height;\n datas.startValue = [1, 1];\n\n // const scaleWidth = getDist(pos1, pos2);\n // const scaleHeight = getDist(pos2, pos4);\n const isWidth = (!direction[0] && !direction[1]) || direction[0] || !direction[1];\n\n // datas.scaleWidth = scaleWidth;\n // datas.scaleHeight = scaleHeight;\n // datas.scaleXRatio = scaleWidth / width;\n // datas.scaleYRatio = scaleHeight / height;\n\n setDefaultTransformIndex(moveable, e, \"scale\");\n\n datas.isWidth = isWidth;\n\n\n function setRatio(ratio: number) {\n datas.ratio = ratio && isFinite(ratio) ? ratio : 0;\n }\n\n datas.startPositions = getAbsolutePosesByState(moveable.state);\n function setFixedDirection(fixedDirection: number[]) {\n const result = getFixedDirectionInfo(datas.startPositions, fixedDirection);\n\n datas.fixedDirection = result.fixedDirection;\n datas.fixedPosition = result.fixedPosition;\n datas.fixedOffset = result.fixedOffset;\n }\n\n datas.setFixedDirection = setFixedDirection;\n setRatio(getDist(pos1, pos2) / getDist(pos2, pos4));\n setFixedDirection([-direction[0], -direction[1]]);\n\n const setMinScaleSize = (min: number[]) => {\n datas.minScaleSize = min;\n };\n const setMaxScaleSize = (max: number[]) => {\n datas.maxScaleSize = max;\n };\n // const setMinScale = (min: number[]) => {\n // };\n // const setMaxScale = (max: number[]) => {\n // };\n\n setMinScaleSize([-Infinity, -Infinity]);\n setMaxScaleSize([Infinity, Infinity]);\n const params = fillParams(moveable, e, {\n direction,\n set: (scale: number[]) => {\n datas.startValue = scale;\n },\n setRatio,\n setFixedDirection,\n setMinScaleSize,\n setMaxScaleSize,\n ...fillTransformStartEvent(moveable, e),\n dragStart: Draggable.dragStart(\n moveable,\n new CustomGesto().dragStart([0, 0], e),\n ) as OnDragStart,\n });\n const result = triggerEvent(moveable, \"onScaleStart\", params);\n\n datas.startFixedDirection = datas.fixedDirection;\n\n if (result !== false) {\n datas.isScale = true;\n moveable.state.snapRenderInfo = {\n request: e.isRequest,\n direction,\n };\n\n }\n return datas.isScale ? params : false;\n },\n dragControl(\n moveable: MoveableManagerInterface,\n e: any) {\n resolveTransformEvent(moveable, e, \"scale\");\n const {\n datas,\n parentKeepRatio,\n parentFlag,\n isPinch,\n dragClient,\n isRequest,\n useSnap,\n resolveMatrix,\n } = e;\n const {\n prevDist,\n direction,\n startOffsetWidth,\n startOffsetHeight,\n isScale,\n startValue,\n isWidth,\n ratio,\n } = datas;\n\n if (!isScale) {\n return false;\n }\n\n const props = moveable.props;\n const {\n throttleScale,\n parentMoveable,\n } = props;\n let sizeDirection = direction;\n\n if (!direction[0] && !direction[1]) {\n sizeDirection = [1, 1];\n }\n const keepRatio = (ratio && (parentKeepRatio != null ? parentKeepRatio : props.keepRatio)) || false;\n const state = moveable.state;\n\n const tempScaleValue = [\n startValue[0],\n startValue[1],\n ];\n\n function getNextScale() {\n const {\n distWidth,\n distHeight,\n } = getOffsetSizeDist(sizeDirection, keepRatio, datas, e);\n\n\n const distX = startOffsetWidth ? (startOffsetWidth + distWidth) / startOffsetWidth : 1;\n const distY = startOffsetHeight ? (startOffsetHeight + distHeight) / startOffsetHeight : 1;\n\n if (!startValue[0]) {\n tempScaleValue[0] = distWidth / startOffsetWidth;\n }\n if (!startValue[1]) {\n tempScaleValue[1] = distHeight / startOffsetHeight;\n }\n let scaleX = (sizeDirection[0] || keepRatio ? distX : 1) * tempScaleValue[0];\n let scaleY = (sizeDirection[1] || keepRatio ? distY : 1) * tempScaleValue[1];\n\n if (scaleX === 0) {\n scaleX = sign(prevDist[0]) * MIN_SCALE;\n }\n if (scaleY === 0) {\n scaleY = sign(prevDist[1]) * MIN_SCALE;\n }\n return [scaleX, scaleY];\n }\n\n\n let scale = getNextScale();\n\n if (!isPinch && moveable.props.groupable) {\n const snapRenderInfo = state.snapRenderInfo || {};\n const stateDirection = snapRenderInfo.direction;\n\n if (isArray(stateDirection) && (stateDirection[0] || stateDirection[1])) {\n state.snapRenderInfo = { direction, request: e.isRequest };\n }\n }\n\n triggerEvent(moveable, \"onBeforeScale\", fillParams(moveable, e, {\n scale,\n setFixedDirection(nextFixedDirection: number[]) {\n datas.setFixedDirection(nextFixedDirection);\n\n scale = getNextScale();\n return scale;\n },\n startFixedDirection: datas.startFixedDirection,\n setScale(nextScale: number[]) {\n scale = nextScale;\n },\n }, true));\n\n let dist = [\n scale[0] / tempScaleValue[0],\n scale[1] / tempScaleValue[1],\n ];\n let fixedPosition = dragClient;\n let snapDist = [0, 0];\n\n const distSign = sign(dist[0] * dist[1]);\n const isSelfPinch = !dragClient && !parentFlag && isPinch;\n\n if (isSelfPinch || resolveMatrix) {\n fixedPosition = getTranslateFixedPosition(\n moveable,\n datas.targetAllTransform,\n [0, 0],\n [0, 0],\n datas,\n );\n } else if (!dragClient) {\n fixedPosition = datas.fixedPosition;\n }\n if (!isPinch) {\n snapDist = checkSnapScale(\n moveable,\n dist,\n direction,\n !useSnap && isRequest,\n datas,\n );\n }\n\n if (keepRatio) {\n if (sizeDirection[0] && sizeDirection[1] && snapDist[0] && snapDist[1]) {\n if (Math.abs(snapDist[0] * startOffsetWidth) > Math.abs(snapDist[1] * startOffsetHeight)) {\n snapDist[1] = 0;\n } else {\n snapDist[0] = 0;\n }\n }\n\n const isNoSnap = !snapDist[0] && !snapDist[1];\n\n if (isNoSnap) {\n\n // throttle scale value (not absolute scale size)\n if (isWidth) {\n dist[0] = throttle(dist[0] * tempScaleValue[0], throttleScale!) / tempScaleValue[0];\n } else {\n dist[1] = throttle(dist[1] * tempScaleValue[1], throttleScale!) / tempScaleValue[1];\n }\n }\n if (\n (sizeDirection[0] && !sizeDirection[1])\n || (snapDist[0] && !snapDist[1])\n || (isNoSnap && isWidth)\n ) {\n dist[0] += snapDist[0];\n const snapHeight = startOffsetWidth * dist[0] * tempScaleValue[0] / ratio;\n\n dist[1] = sign(distSign * dist[0]) * abs(snapHeight / startOffsetHeight / tempScaleValue[1]);\n } else if (\n (!sizeDirection[0] && sizeDirection[1])\n || (!snapDist[0] && snapDist[1])\n || (isNoSnap && !isWidth)\n ) {\n dist[1] += snapDist[1];\n const snapWidth = startOffsetHeight * dist[1] * tempScaleValue[1] * ratio;\n\n dist[0] = sign(distSign * dist[1]) * abs(snapWidth / startOffsetWidth / tempScaleValue[0]);\n }\n } else {\n dist[0] += snapDist[0];\n dist[1] += snapDist[1];\n\n if (!snapDist[0]) {\n dist[0] = throttle(dist[0] * tempScaleValue[0], throttleScale!) / tempScaleValue[0];\n }\n if (!snapDist[1]) {\n dist[1] = throttle(dist[1] * tempScaleValue[1], throttleScale!) / tempScaleValue[1];\n }\n }\n\n if (dist[0] === 0) {\n dist[0] = sign(prevDist[0]) * MIN_SCALE;\n }\n if (dist[1] === 0) {\n dist[1] = sign(prevDist[1]) * MIN_SCALE;\n }\n scale = multiply2(dist, [tempScaleValue[0], tempScaleValue[1]]);\n\n\n const startOffsetSize = [\n startOffsetWidth,\n startOffsetHeight,\n ];\n let scaleSize = [\n startOffsetWidth * scale[0],\n startOffsetHeight * scale[1],\n ];\n\n scaleSize = calculateBoundSize(\n scaleSize,\n datas.minScaleSize,\n datas.maxScaleSize,\n keepRatio ? ratio : false,\n );\n\n // if (keepRatio && (isGroup || keepRatioFinally)) {\n // if (isWidth) {\n // boundingHeight = boundingWidth / ratio;\n // } else {\n // boundingWidth = boundingHeight * ratio;\n // }\n // }\n scale = countEach(2, i => {\n return startOffsetSize[i] ? scaleSize[i] / startOffsetSize[i] : scaleSize[i];\n });\n dist = countEach(2, i => {\n return scale[i] / tempScaleValue[i];\n });\n\n const delta = countEach(2, i => prevDist[i] ? dist[i] / prevDist[i] : dist[i]);\n\n\n const distText = `scale(${dist.join(\", \")})`;\n const scaleText = `scale(${scale.join(\", \")})`;\n const nextTransform = convertTransformFormat(\n datas, scaleText, distText);\n const isZeroScale = !startValue[0] || !startValue[1];\n\n const inverseDist = getScaleDist(\n moveable,\n isZeroScale ? scaleText : distText,\n datas.fixedDirection,\n fixedPosition,\n datas.fixedOffset,\n datas,\n isZeroScale,\n );\n const inverseDelta = isSelfPinch ? inverseDist : minus(inverseDist, datas.prevInverseDist || [0, 0]);\n\n datas.prevDist = dist;\n datas.prevInverseDist = inverseDist;\n if (\n scale[0] === prevDist[0] && scale[1] === prevDist[1]\n && inverseDelta.every(num => !num)\n && !parentMoveable\n && !isSelfPinch\n ) {\n return false;\n }\n\n\n const params = fillParams(moveable, e, {\n offsetWidth: startOffsetWidth,\n offsetHeight: startOffsetHeight,\n direction,\n\n scale,\n dist,\n delta,\n\n isPinch: !!isPinch,\n ...fillTransformEvent(\n moveable,\n nextTransform,\n inverseDelta,\n isPinch,\n e,\n ),\n });\n triggerEvent(moveable, \"onScale\", params);\n\n return params;\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n const { datas } = e;\n if (!datas.isScale) {\n return false;\n }\n\n datas.isScale = false;\n\n const scaleEndParam = fillEndParams(moveable, e, {});\n triggerEvent(moveable, \"onScaleEnd\", scaleEndParam);\n return scaleEndParam;\n },\n dragGroupControlCondition: directionCondition,\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n\n const params = this.dragControlStart(moveable, e);\n\n if (!params) {\n return false;\n }\n const originalEvents = fillChildEvents(moveable, \"resizable\", e);\n\n\n datas.moveableScale = moveable.scale;\n\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControlStart\",\n e,\n (child, ev) => {\n return startChildDist(moveable, child, datas, ev);\n },\n );\n\n const setFixedDirection = (fixedDirection: number[]) => {\n params.setFixedDirection(fixedDirection);\n events.forEach((ev, i) => {\n ev.setFixedDirection(fixedDirection);\n startChildDist(moveable, ev.moveable, datas, originalEvents[i]);\n });\n };\n\n datas.setFixedDirection = setFixedDirection;\n const nextParams: OnScaleGroupStart = {\n ...params,\n targets: moveable.props.targets!,\n events,\n setFixedDirection,\n };\n const result = triggerEvent(moveable, \"onScaleGroupStart\", nextParams);\n\n datas.isScale = result !== false;\n return datas.isScale ? nextParams : false;\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n const { datas } = e;\n if (!datas.isScale) {\n return;\n }\n\n catchEvent(moveable, \"onBeforeScale\", parentEvent => {\n triggerEvent(moveable, \"onBeforeScaleGroup\", fillParams(moveable, e, {\n ...parentEvent,\n targets: moveable.props.targets!,\n }, true));\n });\n\n const params = this.dragControl(moveable, e);\n if (!params) {\n return;\n }\n const { dist } = params;\n const moveableScale = datas.moveableScale;\n moveable.scale = [\n dist[0] * moveableScale[0],\n dist[1] * moveableScale[1],\n ];\n const keepRatio = moveable.props.keepRatio;\n\n\n const fixedPosition = datas.fixedPosition;\n const events = triggerChildAbles(\n moveable,\n this,\n \"dragControl\",\n e,\n (_, ev) => {\n const [clientX, clientY] = calculate(\n createRotateMatrix(moveable.rotation / 180 * Math.PI, 3),\n [\n ev.datas.originalX * dist[0],\n ev.datas.originalY * dist[1],\n 1,\n ],\n 3,\n );\n\n return {\n ...ev,\n parentDist: null,\n parentScale: dist,\n parentKeepRatio: keepRatio,\n // recalculate child fixed position for parent group's dragging.\n dragClient: plus(fixedPosition, [clientX, clientY]),\n };\n },\n );\n const nextParams: OnScaleGroup = {\n targets: moveable.props.targets!,\n events,\n ...params,\n };\n\n triggerEvent(moveable, \"onScaleGroup\", nextParams);\n return nextParams;\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n const { isDrag, datas } = e;\n\n if (!datas.isScale) {\n return;\n }\n this.dragControlEnd(moveable, e);\n const events = triggerChildAbles(moveable, this, \"dragControlEnd\", e);\n\n const nextParams = fillEndParams(moveable, e, {\n targets: moveable.props.targets!,\n events,\n });\n\n triggerEvent(moveable, \"onScaleGroupEnd\", nextParams);\n return isDrag;\n },\n /**\n * @method Moveable.Scalable#request\n * @param {Moveable.Scalable.ScalableRequestParam} e - the Scalable's request parameter\n * @return {Moveable.Requester} Moveable Requester\n * @example\n\n * // Instantly Request (requestStart - request - requestEnd)\n * moveable.request(\"scalable\", { deltaWidth: 10, deltaHeight: 10 }, true);\n *\n * // requestStart\n * const requester = moveable.request(\"scalable\");\n *\n * // request\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n * requester.request({ deltaWidth: 10, deltaHeight: 10 });\n *\n * // requestEnd\n * requester.requestEnd();\n */\n request() {\n const datas = {};\n let distWidth = 0;\n let distHeight = 0;\n let useSnap = false;\n\n return {\n isControl: true,\n requestStart(e: IObject) {\n useSnap = e.useSnap;\n\n return {\n datas,\n parentDirection: e.direction || [1, 1],\n useSnap,\n };\n },\n request(e: IObject) {\n distWidth += e.deltaWidth;\n distHeight += e.deltaHeight;\n\n return {\n datas,\n parentDist: [distWidth, distHeight],\n parentKeepRatio: e.keepRatio,\n useSnap,\n };\n },\n requestEnd() {\n return { datas, isDrag: true, useSnap };\n },\n };\n },\n};\n\n/**\n * Whether or not target can scaled.\n *\n * @name Moveable.Scalable#scalable\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.scalable = true;\n */\n\n/**\n * throttle of scaleX, scaleY when scale.\n * @name Moveable.Scalable#throttleScale\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.throttleScale = 0.1;\n */\n/**\n * Set directions to show the control box. (default: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"])\n * @name Moveable.Scalable#renderDirections\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * scalable: true,\n * renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\n * });\n *\n * moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\n */\n/**\n * When resize or scale, keeps a ratio of the width, height. (default: false)\n * @name Moveable.Scalable#keepRatio\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * scalable: true,\n * });\n *\n * moveable.keepRatio = true;\n */\n/**\n * When the scale starts, the scaleStart event is called.\n * @memberof Moveable.Scalable\n * @event scaleStart\n * @param {Moveable.Scalable.OnScaleStart} - Parameters for the scaleStart event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { scalable: true });\n * moveable.on(\"scaleStart\", ({ target }) => {\n * console.log(target);\n * });\n */\n/**\n * When scaling, `beforeScale` is called before `scale` occurs. In `beforeScale`, you can get and set the pre-value before scaling.\n * @memberof Moveable.Scalable\n * @event beforeScale\n * @param {Moveable.Scalable.OnBeforeScale} - Parameters for the `beforeScale` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { scalable: true });\n * moveable.on(\"beforeScale\", ({ setFixedDirection }) => {\n * if (shiftKey) {\n * setFixedDirection([0, 0]);\n * }\n * });\n * moveable.on(\"scale\", ({ target, transform, dist }) => {\n * target.style.transform = transform;\n * });\n */\n\n/**\n * When scaling, the `scale` event is called.\n * @memberof Moveable.Scalable\n * @event scale\n * @param {Moveable.Scalable.OnScale} - Parameters for the `scale` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { scalable: true });\n * moveable.on(\"scale\", ({ target, transform, dist }) => {\n * target.style.transform = transform;\n * });\n */\n/**\n * When the scale finishes, the `scaleEnd` event is called.\n * @memberof Moveable.Scalable\n * @event scaleEnd\n * @param {Moveable.Scalable.OnScaleEnd} - Parameters for the `scaleEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { scalable: true });\n * moveable.on(\"scaleEnd\", ({ target, isDrag }) => {\n * console.log(target, isDrag);\n * });\n */\n\n/**\n* When the group scale starts, the `scaleGroupStart` event is called.\n* @memberof Moveable.Scalable\n* @event scaleGroupStart\n* @param {Moveable.Scalable.OnScaleGroupStart} - Parameters for the `scaleGroupStart` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* scalable: true\n* });\n* moveable.on(\"scaleGroupStart\", ({ targets }) => {\n* console.log(\"onScaleGroupStart\", targets);\n* });\n*/\n\n/**\n* When the group scale, the `scaleGroup` event is called.\n* @memberof Moveable.Scalable\n* @event scaleGroup\n* @param {Moveable.Scalable.OnScaleGroup} - Parameters for the `scaleGroup` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* target: [].slice.call(document.querySelectorAll(\".target\")),\n* scalable: true\n* });\n* moveable.on(\"scaleGroup\", ({ targets, events }) => {\n* console.log(\"onScaleGroup\", targets);\n* events.forEach(ev => {\n* const target = ev.target;\n* // ev.drag is a drag event that occurs when the group scale.\n* const left = ev.drag.beforeDist[0];\n* const top = ev.drag.beforeDist[1];\n* const scaleX = ev.scale[0];\n* const scaleY = ev.scale[1];\n* });\n* });\n*/\n\n/**\n * When the group scale finishes, the `scaleGroupEnd` event is called.\n * @memberof Moveable.Scalable\n * @event scaleGroupEnd\n * @param {Moveable.Scalable.OnScaleGroupEnd} - Parameters for the `scaleGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * scalable: true\n * });\n * moveable.on(\"scaleGroupEnd\", ({ targets, isDrag }) => {\n * console.log(\"onScaleGroupEnd\", targets, isDrag);\n * });\n */\n","import {\n prefix, getLineStyle, getDirection, getAbsolutePosesByState,\n triggerEvent, fillParams, fillEndParams, getDirectionViewClassName, fillCSSObject,\n} from \"../utils\";\nimport {\n convertDimension, invert, multiply,\n calculate,\n createIdentityMatrix,\n ignoreDimension,\n minus,\n createWarpMatrix,\n plus,\n} from \"@scena/matrix\";\nimport { NEARBY_POS } from \"../consts\";\nimport {\n setDragStart, getDragDist, getPosIndexesByDirection, setDefaultTransformIndex,\n fillTransformStartEvent, resolveTransformEvent,\n convertTransformFormat, fillOriginalTransform, getTransfromMatrix,\n} from \"../gesto/GestoUtils\";\nimport {\n WarpableProps, ScalableProps, ResizableProps,\n Renderer, SnappableProps, SnappableState,\n OnWarpStart, OnWarp, OnWarpEnd, MoveableManagerInterface,\n} from \"../types\";\nimport { hasClass, dot, getRad } from \"@daybrush/utils\";\nimport { renderAllDirections } from \"../renderDirections\";\nimport { hasGuidelines } from \"./snappable/utils\";\nimport { checkMoveableSnapBounds } from \"./snappable/snapBounds\";\n\nfunction getMiddleLinePos(pos1: number[], pos2: number[]) {\n return pos1.map((pos, i) => dot(pos, pos2[i], 1, 2));\n}\n\nfunction getTriangleRad(pos1: number[], pos2: number[], pos3: number[]) {\n // pos1 Rad\n const rad1 = getRad(pos1, pos2);\n const rad2 = getRad(pos1, pos3);\n\n const rad = rad2 - rad1;\n\n return rad >= 0 ? rad : rad + 2 * Math.PI;\n}\n\nfunction isValidPos(poses1: number[][], poses2: number[][]) {\n const rad1 = getTriangleRad(poses1[0], poses1[1], poses1[2]);\n const rad2 = getTriangleRad(poses2[0], poses2[1], poses2[2]);\n const pi = Math.PI;\n\n if ((rad1 >= pi && rad2 <= pi) || (rad1 <= pi && rad2 >= pi)) {\n return false;\n }\n return true;\n}\n\n/**\n * @namespace Moveable.Warpable\n * @description Warpable indicates whether the target can be warped(distorted, bented).\n */\nexport default {\n name: \"warpable\",\n ableGroup: \"size\",\n props: [\n \"warpable\",\n \"renderDirections\",\n \"edge\",\n \"displayAroundControls\",\n ] as const,\n events: [\n \"warpStart\",\n \"warp\",\n \"warpEnd\",\n ] as const,\n viewClassName: getDirectionViewClassName(\"warpable\"),\n render(moveable: MoveableManagerInterface, React: Renderer): any[] {\n const { resizable, scalable, warpable, zoom } = moveable.props;\n\n if (resizable || scalable || !warpable) {\n return [];\n }\n const { pos1, pos2, pos3, pos4 } = moveable.state;\n\n const linePosFrom1 = getMiddleLinePos(pos1, pos2);\n const linePosFrom2 = getMiddleLinePos(pos2, pos1);\n const linePosFrom3 = getMiddleLinePos(pos1, pos3);\n const linePosFrom4 = getMiddleLinePos(pos3, pos1);\n const linePosTo1 = getMiddleLinePos(pos3, pos4);\n const linePosTo2 = getMiddleLinePos(pos4, pos3);\n const linePosTo3 = getMiddleLinePos(pos2, pos4);\n const linePosTo4 = getMiddleLinePos(pos4, pos2);\n\n return [\n
,\n
,\n
,\n
,\n ...renderAllDirections(moveable, \"warpable\", React),\n ];\n },\n dragControlCondition(moveable: any, e: any) {\n if (e.isRequest) {\n return false;\n }\n const target = e.inputEvent.target;\n\n return hasClass(target, prefix(\"direction\")) && hasClass(target, prefix(\"warpable\"));\n },\n dragControlStart(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, inputEvent } = e;\n const { target } = moveable.props;\n const { target: inputTarget } = inputEvent;\n const direction = getDirection(inputTarget, datas);\n\n if (!direction || !target) {\n return false;\n }\n const state = moveable.state;\n const {\n transformOrigin, is3d,\n targetTransform, targetMatrix,\n width, height,\n left, top,\n } = state;\n\n datas.datas = {};\n datas.targetTransform = targetTransform;\n datas.warpTargetMatrix = is3d ? targetMatrix : convertDimension(targetMatrix, 3, 4);\n datas.targetInverseMatrix = ignoreDimension(invert(datas.warpTargetMatrix, 4), 3, 4);\n datas.direction = direction;\n datas.left = left;\n datas.top = top;\n datas.poses = [\n [0, 0],\n [width, 0],\n [0, height],\n [width, height],\n ].map(p => minus(p, transformOrigin));\n\n datas.nextPoses = datas.poses.map(([x, y]: number[]) => calculate(datas.warpTargetMatrix, [x, y, 0, 1], 4));\n datas.startValue = createIdentityMatrix(4);\n datas.prevMatrix = createIdentityMatrix(4);\n datas.absolutePoses = getAbsolutePosesByState(state);\n datas.posIndexes = getPosIndexesByDirection(direction);\n\n setDragStart(moveable, e);\n setDefaultTransformIndex(moveable, e, \"matrix3d\");\n\n state.snapRenderInfo = {\n request: e.isRequest,\n direction,\n };\n\n const params = fillParams(moveable, e, {\n set: (matrix: number[]) => {\n datas.startValue = matrix;\n },\n ...fillTransformStartEvent(moveable, e),\n });\n const result = triggerEvent(moveable, \"onWarpStart\", params);\n if (result !== false) {\n datas.isWarp = true;\n }\n return datas.isWarp;\n },\n dragControl(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, isRequest } = e;\n let { distX, distY } = e;\n const {\n targetInverseMatrix, prevMatrix, isWarp, startValue,\n poses,\n posIndexes,\n absolutePoses,\n } = datas;\n\n if (!isWarp) {\n return false;\n }\n resolveTransformEvent(moveable, e, \"matrix3d\");\n if (hasGuidelines(moveable, \"warpable\")) {\n const selectedPoses: number[][] = posIndexes.map((index: number) => absolutePoses[index]);\n\n if (selectedPoses.length > 1) {\n selectedPoses.push([\n (selectedPoses[0][0] + selectedPoses[1][0]) / 2,\n (selectedPoses[0][1] + selectedPoses[1][1]) / 2,\n ]);\n }\n\n const {\n horizontal: horizontalSnapInfo,\n vertical: verticalSnapInfo,\n } = checkMoveableSnapBounds(\n moveable,\n isRequest,\n {\n horizontal: selectedPoses.map(pos => pos[1] + distY),\n vertical: selectedPoses.map(pos => pos[0] + distX),\n },\n );\n\n distY -= horizontalSnapInfo.offset;\n distX -= verticalSnapInfo.offset;\n }\n\n const dist = getDragDist({ datas, distX, distY }, true);\n const nextPoses = datas.nextPoses.slice();\n\n posIndexes.forEach((index: number) => {\n nextPoses[index] = plus(nextPoses[index], dist);\n });\n\n if (!NEARBY_POS.every(\n nearByPoses => isValidPos(nearByPoses.map(i => poses[i]), nearByPoses.map(i => nextPoses[i])),\n )) {\n return false;\n }\n const h = createWarpMatrix(\n poses[0],\n poses[2],\n poses[1],\n poses[3],\n nextPoses[0],\n nextPoses[2],\n nextPoses[1],\n nextPoses[3],\n );\n\n if (!h.length) {\n return false;\n }\n // B * A * M\n const afterMatrix = multiply(targetInverseMatrix, h, 4);\n\n // B * M * A\n const matrix = getTransfromMatrix(datas, afterMatrix, true);\n\n const delta = multiply(invert(prevMatrix, 4), matrix, 4);\n\n datas.prevMatrix = matrix;\n const totalMatrix = multiply(startValue, matrix, 4);\n const nextTransform = convertTransformFormat(\n datas, `matrix3d(${totalMatrix.join(\", \")})`, `matrix3d(${matrix.join(\", \")})`);\n\n fillOriginalTransform(e, nextTransform);\n triggerEvent(moveable, \"onWarp\", fillParams(moveable, e, {\n delta,\n matrix: totalMatrix,\n dist: matrix,\n multiply,\n transform: nextTransform,\n ...fillCSSObject({\n transform: nextTransform,\n }, e),\n }));\n return true;\n },\n dragControlEnd(\n moveable: MoveableManagerInterface,\n e: any,\n ) {\n const { datas, isDrag } = e;\n if (!datas.isWarp) {\n return false;\n }\n datas.isWarp = false;\n\n triggerEvent(moveable, \"onWarpEnd\", fillEndParams(moveable, e, {}));\n return isDrag;\n },\n};\n\n/**\n * Whether or not target can be warped. (default: false)\n * @name Moveable.Warpable#warpable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.warpable = true;\n */\n\n/**\n* Set directions to show the control box. (default: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"])\n* @name Moveable.Warpable#renderDirections\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* warpable: true,\n* renderDirections: [\"n\", \"nw\", \"ne\", \"s\", \"se\", \"sw\", \"e\", \"w\"],\n* });\n*\n* moveable.renderDirections = [\"nw\", \"ne\", \"sw\", \"se\"];\n*/\n/**\n* When the warp starts, the warpStart event is called.\n* @memberof Moveable.Warpable\n* @event warpStart\n* @param {Moveable.Warpable.OnWarpStart} - Parameters for the warpStart event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, { warpable: true });\n* moveable.on(\"warpStart\", ({ target }) => {\n* console.log(target);\n* });\n*/\n/**\n * When warping, the warp event is called.\n * @memberof Moveable.Warpable\n * @event warp\n * @param {Moveable.Warpable.OnWarp} - Parameters for the warp event\n * @example\n * import Moveable from \"moveable\";\n * let matrix = [\n * 1, 0, 0, 0,\n * 0, 1, 0, 0,\n * 0, 0, 1, 0,\n * 0, 0, 0, 1,\n * ];\n * const moveable = new Moveable(document.body, { warpable: true });\n * moveable.on(\"warp\", ({ target, transform, delta, multiply }) => {\n * // target.style.transform = transform;\n * matrix = multiply(matrix, delta);\n * target.style.transform = `matrix3d(${matrix.join(\",\")})`;\n * });\n */\n/**\n * When the warp finishes, the warpEnd event is called.\n * @memberof Moveable.Warpable\n * @event warpEnd\n * @param {Moveable.Warpable.OnWarpEnd} - Parameters for the warpEnd event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, { warpable: true });\n * moveable.on(\"warpEnd\", ({ target, isDrag }) => {\n * console.log(target, isDrag);\n * });\n */\n","import { prefix } from \"./utils\";\n\nexport const AREA_PIECES = /*#__PURE__*/prefix(\"area-pieces\");\nexport const AREA_PIECE = /*#__PURE__*/prefix(\"area-piece\");\nexport const AVOID = /*#__PURE__*/prefix(\"avoid\");\nexport const VIEW_DRAGGING = prefix(\"view-dragging\");\n","import {\n createWarpMatrix,\n} from \"@scena/matrix\";\nimport { ref } from \"framework-utils\";\nimport { getRect, calculateInversePosition, makeMatrixCSS, prefix } from \"../utils\";\nimport {\n Renderer, GroupableProps, DragAreaProps, MoveableManagerInterface, MoveableGroupInterface,\n} from \"../types\";\nimport { AREA_PIECE, AVOID, AREA_PIECES } from \"../classNames\";\nimport { addClass, removeClass, requestAnimationFrame } from \"@daybrush/utils\";\n\nfunction restoreStyle(moveable: MoveableManagerInterface) {\n const el = moveable.areaElement;\n\n if (!el) {\n return;\n }\n const { width, height } = moveable.state;\n\n removeClass(el, AVOID);\n\n el.style.cssText += `left: 0px; top: 0px; width: ${width}px; height: ${height}px`;\n}\n\nfunction renderPieces(React: Renderer): any {\n return (
\n
\n
\n
\n
\n
);\n}\nexport default {\n name: \"dragArea\",\n props: [\n \"dragArea\",\n \"passDragArea\",\n ] as const,\n events: [\n \"click\",\n \"clickGroup\",\n ] as const,\n render(moveable: MoveableManagerInterface, React: Renderer): any[] {\n const { target, dragArea, groupable, passDragArea } = moveable.props;\n const { width, height, renderPoses } = moveable.getState();\n\n const className = passDragArea ? prefix(\"area\", \"pass\") : prefix(\"area\");\n if (groupable) {\n return [\n
,\n renderPieces(React),\n ];\n }\n if (!target || !dragArea) {\n return [];\n }\n const h = createWarpMatrix(\n [0, 0],\n [width, 0],\n [0, height],\n [width, height],\n renderPoses[0],\n renderPoses[1],\n renderPoses[2],\n renderPoses[3],\n );\n const transform = h.length ? makeMatrixCSS(h, true) : \"none\";\n\n return [\n
,\n renderPieces(React),\n ];\n },\n dragStart(moveable: MoveableManagerInterface, { datas, clientX, clientY, inputEvent }: any) {\n if (!inputEvent) {\n return false;\n }\n datas.isDragArea = false;\n const areaElement = moveable.areaElement;\n const state = moveable.state;\n const {\n moveableClientRect,\n renderPoses,\n rootMatrix,\n is3d,\n } = state;\n const { left, top } = moveableClientRect;\n const {\n left: relativeLeft,\n top: relativeTop,\n width,\n height,\n } = getRect(renderPoses);\n const n = is3d ? 4 : 3;\n let [posX, posY] = calculateInversePosition(rootMatrix, [clientX - left, clientY - top], n);\n\n posX -= relativeLeft;\n posY -= relativeTop;\n const rects = [\n { left: relativeLeft, top: relativeTop, width, height: posY - 10 },\n { left: relativeLeft, top: relativeTop, width: posX - 10, height },\n { left: relativeLeft, top: relativeTop + posY + 10, width, height: height - posY - 10 },\n { left: relativeLeft + posX + 10, top: relativeTop, width: width - posX - 10, height },\n ];\n\n const children = [].slice.call(areaElement.nextElementSibling!.children) as HTMLElement[];\n rects.forEach((rect, i) => {\n children[i].style.cssText\n = `left: ${rect.left}px;top: ${rect.top}px; width: ${rect.width}px; height: ${rect.height}px;`;\n });\n addClass(areaElement, AVOID);\n state.disableNativeEvent = true;\n return;\n },\n drag(moveable: MoveableManagerInterface, { datas, inputEvent }: any) {\n this.enableNativeEvent(moveable);\n if (!inputEvent) {\n return false;\n }\n if (!datas.isDragArea) {\n datas.isDragArea = true;\n restoreStyle(moveable);\n }\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n this.enableNativeEvent(moveable);\n const { inputEvent, datas } = e;\n if (!inputEvent) {\n return false;\n }\n if (!datas.isDragArea) {\n restoreStyle(moveable);\n }\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n return this.dragStart(moveable, e);\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n return this.drag(moveable, e);\n },\n dragGroupEnd(\n moveable: MoveableGroupInterface,\n e: any,\n ) {\n return this.dragEnd(moveable, e);\n },\n unset(moveable: MoveableManagerInterface) {\n restoreStyle(moveable);\n moveable.state.disableNativeEvent = false;\n },\n enableNativeEvent(moveable: MoveableManagerInterface) {\n const state = moveable.state;\n if (state.disableNativeEvent) {\n requestAnimationFrame(() => {\n state.disableNativeEvent = false;\n });\n }\n },\n};\n\n/**\n * Add an event to the moveable area instead of the target for stopPropagation. (default: false, true in group)\n * @name Moveable#dragArea\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * dragArea: false,\n * });\n */\n/**\n * Set `pointerEvents: none;` css to pass events in dragArea. (default: false)\n * @name Moveable#passDragArea\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * dragArea: false,\n * });\n */\n","import { prefix, getControlTransform, calculatePosition, convertTransformOriginArray } from \"../utils\";\nimport { Renderer, OriginOptions, MoveableManagerInterface } from \"../types\";\nimport { makeAble } from \"./AbleManager\";\nimport { minus } from \"@scena/matrix\";\n\nexport default makeAble(\"origin\", {\n props: [\"origin\", \"svgOrigin\"] as const,\n render(moveable: MoveableManagerInterface, React: Renderer): any[] {\n const { zoom, svgOrigin, groupable } = moveable.props;\n const {\n beforeOrigin, rotation, svg, allMatrix, is3d,\n left, top, offsetWidth, offsetHeight,\n } = moveable.getState();\n\n let originStyle!: Record;\n\n if (!groupable && svg && svgOrigin) {\n const [originX, originY] = convertTransformOriginArray(svgOrigin, offsetWidth, offsetHeight);\n const n = is3d ? 4 : 3;\n const result = calculatePosition(\n allMatrix,\n [originX, originY],\n n,\n );\n originStyle = getControlTransform(rotation, zoom!, minus(result, [left, top]));\n } else {\n originStyle = getControlTransform(rotation, zoom!, beforeOrigin);\n }\n return [\n
,\n ];\n },\n});\n\n/**\n * Whether or not the origin controlbox will be visible or not (default: true)\n * @name Moveable#origin\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.origin = true;\n */\n","\nimport {\n ScrollableProps, OnScroll, MoveableManagerInterface,\n MoveableGroupInterface, MoveableRefType,\n} from \"../types\";\nimport { triggerEvent, fillParams, getRefTarget } from \"../utils\";\nimport DragScroll from \"@scena/dragscroll\";\n\nfunction getDefaultScrollPosition(e: { scrollContainer: HTMLElement, direction: number[] }) {\n const scrollContainer = e.scrollContainer;\n\n return [\n scrollContainer.scrollLeft,\n scrollContainer.scrollTop,\n ];\n}\n/**\n * @namespace Moveable.Scrollable\n * @description Whether or not target can be scrolled to the scroll container (default: false)\n */\nexport default {\n name: \"scrollable\",\n canPinch: true,\n props: [\n \"scrollable\",\n \"scrollContainer\",\n \"scrollThreshold\",\n \"scrollThrottleTime\",\n \"getScrollPosition\",\n \"scrollOptions\",\n ] as const,\n events: [\n \"scroll\",\n \"scrollGroup\",\n ] as const,\n dragRelation: \"strong\",\n dragStart(moveable: MoveableManagerInterface>, e: any) {\n const props = moveable.props;\n const {\n scrollContainer = moveable.getContainer() as HTMLElement,\n scrollOptions,\n } = props;\n\n const dragScroll = new DragScroll();\n const scrollContainerElement = getRefTarget(scrollContainer, true);\n\n e.datas.dragScroll = dragScroll;\n moveable.state.dragScroll = dragScroll;\n\n const gestoName = e.isControl ? \"controlGesto\" : \"targetGesto\";\n const targets = e.targets;\n\n dragScroll.on(\"scroll\", ({ container, direction }) => {\n const params = fillParams(moveable, e, {\n scrollContainer: container,\n direction,\n }) as any;\n\n const eventName = targets ? \"onScrollGroup\" : \"onScroll\" as any;\n if (targets) {\n params.targets = targets;\n }\n triggerEvent(moveable, eventName, params);\n }).on(\"move\", ({ offsetX, offsetY, inputEvent }) => {\n moveable[gestoName].scrollBy(offsetX, offsetY, inputEvent.inputEvent, false);\n }).on(\"scrollDrag\", ({ next }) => {\n next(moveable[gestoName].getCurrentEvent());\n });\n dragScroll.dragStart(e, {\n container: scrollContainerElement!,\n ...scrollOptions,\n });\n },\n checkScroll(moveable: MoveableManagerInterface, e: any) {\n const dragScroll = e.datas.dragScroll as DragScroll;\n\n if (!dragScroll) {\n return;\n }\n const {\n scrollContainer = moveable.getContainer() as MoveableRefType,\n scrollThreshold = 0,\n scrollThrottleTime = 0,\n getScrollPosition = getDefaultScrollPosition,\n scrollOptions,\n } = moveable.props;\n\n dragScroll.drag(e, {\n container: scrollContainer!,\n threshold: scrollThreshold,\n throttleTime: scrollThrottleTime,\n getScrollPosition: (ev: any) => {\n return getScrollPosition({ scrollContainer: ev.container, direction: ev.direction });\n },\n ...scrollOptions,\n });\n\n return true;\n },\n drag(moveable: MoveableManagerInterface, e: any) {\n return this.checkScroll(moveable, e);\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n e.datas.dragScroll.dragEnd();\n e.datas.dragScroll = null;\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n return this.dragStart(moveable, { ...e, isControl: true });\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n return this.drag(moveable, e);\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n return this.dragEnd(moveable, e);\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n return this.dragStart(moveable, { ...e, targets: moveable.props.targets });\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n return this.drag(moveable, { ...e, targets: moveable.props.targets });\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n return this.dragEnd(moveable, { ...e, targets: moveable.props.targets });\n },\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n return this.dragStart(moveable, { ...e, targets: moveable.props.targets, isControl: true });\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n return this.drag(moveable, { ...e, targets: moveable.props.targets });\n },\n dragGroupControEnd(moveable: MoveableGroupInterface, e: any) {\n return this.dragEnd(moveable, { ...e, targets: moveable.props.targets });\n },\n unset(moveable: MoveableManagerInterface>) {\n const state = moveable.state;\n\n state.dragScroll?.dragEnd();\n state.dragScroll = null;\n },\n};\n\n/**\n * When the drag cursor leaves the scrollContainer, the `scroll` event occur to scroll.\n * @memberof Moveable.Scrollable\n * @event scroll\n * @param {Moveable.Scrollable.OnScroll} - Parameters for the `scroll` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * });\n * moveable.on(\"scroll\", ({ scrollContainer, direction }) => {\n * scrollContainer.scrollLeft += direction[0] * 10;\n * scrollContainer.scrollTop += direction[1] * 10;\n * });\n */\n\n/**\n * When the drag cursor leaves the scrollContainer, the `scrollGroup` event occur to scroll in group.\n * @memberof Moveable.Scrollable\n * @event scrollGroup\n * @param {Moveable.Scrollable.OnScrollGroup} - Parameters for the `scrollGroup` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * });\n * moveable.on(\"scroll\", ({ scrollContainer, direction }) => {\n * scrollContainer.scrollLeft += direction[0] * 10;\n * scrollContainer.scrollTop += direction[1] * 10;\n * });\n */\n","export default {\n name: \"\",\n props: [\n \"target\",\n \"dragTargetSelf\",\n \"dragTarget\",\n \"dragContainer\",\n \"container\",\n \"warpSelf\",\n \"rootContainer\",\n \"useResizeObserver\",\n \"useMutationObserver\",\n \"zoom\",\n \"dragFocusedInput\",\n \"transformOrigin\",\n \"ables\",\n \"className\",\n \"pinchThreshold\",\n \"pinchOutside\",\n \"triggerAblesSimultaneously\",\n \"checkInput\",\n \"cspNonce\",\n \"translateZ\",\n \"hideDefaultLines\",\n \"props\",\n \"flushSync\",\n \"stopPropagation\",\n \"preventClickEventOnDrag\",\n \"preventClickDefault\",\n \"viewContainer\",\n \"persistData\",\n \"useAccuratePosition\",\n \"firstRenderState\",\n \"linePadding\",\n \"controlPadding\",\n \"preventDefault\",\n \"preventRightClick\",\n \"preventWheelClick\",\n \"requestStyles\",\n ] as const,\n events: [\n \"changeTargets\",\n ] as const,\n};\n","import { prefix, makeMatrixCSS, getPaddingBox } from \"../utils\";\nimport { Renderer, MoveableManagerInterface } from \"../types\";\nimport { createWarpMatrix } from \"@scena/matrix\";\nimport { makeAble } from \"./AbleManager\";\n\nexport default makeAble(\"padding\", {\n props: [\"padding\"] as const,\n render(moveable: MoveableManagerInterface, React: Renderer): any[] {\n const props = moveable.props;\n if (props.dragArea) {\n return [];\n }\n const {\n left,\n top,\n right,\n bottom,\n } = getPaddingBox(props.padding || {});\n const {\n renderPoses,\n pos1,\n pos2,\n pos3,\n pos4,\n } = moveable.getState();\n\n const poses = [pos1, pos2, pos3, pos4];\n const paddingDirections: number[][] = [];\n\n if (left > 0) {\n paddingDirections.push([0, 2]);\n }\n if (top > 0) {\n paddingDirections.push([0, 1]);\n }\n if (right > 0) {\n paddingDirections.push([1, 3]);\n }\n if (bottom > 0) {\n paddingDirections.push([2, 3]);\n }\n return paddingDirections.map(([dir1, dir2], i) => {\n const paddingPos1 = poses[dir1];\n const paddingPos2 = poses[dir2];\n const paddingPos3 = renderPoses[dir1];\n const paddingPos4 = renderPoses[dir2];\n\n const h = createWarpMatrix(\n [0, 0],\n [100, 0],\n [0, 100],\n [100, 100],\n paddingPos1,\n paddingPos2,\n paddingPos3,\n paddingPos4,\n );\n if (!h.length) {\n return undefined;\n }\n return (
);\n });\n },\n});\n\n/**\n * Add padding around the target to increase the drag area.\n * @name Moveable#padding\n * @default null\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * padding: { left: 0, top: 0, right: 0, bottom: 0 },\n * });\n * moveable.padding = { left: 10, top: 10, right: 10, bottom: 10 },\n * moveable.updateRect();\n */\n","import { convertCSSSize } from \"../../utils\";\nimport { ControlPose } from \"../../types\";\nimport { convertUnitSize } from \"@daybrush/utils\";\n\nconst RADIUS_DIRECTIONS = [\"nw\", \"ne\", \"se\", \"sw\"] as const;\n\nfunction calculateRatio(values: number[], size: number) {\n const sumSize = values[0] + values[1];\n const sumRatio = sumSize > size ? size / sumSize : 1;\n\n values[0] *= sumRatio;\n values[1] = size - values[1] * sumRatio;\n\n return values;\n}\nexport const HORIZONTAL_RADIUS_ORDER = [1, 2, 5, 6];\nexport const VERTICAL_RADIUS_ORDER = [0, 3, 4, 7];\nexport const HORIZONTAL_RADIUS_DIRECTIONS = [1, -1, -1, 1] as const;\nexport const VERTICAL_RADIUS_DIRECTIONS = [1, 1, -1, -1] as const;\n\nexport function getRadiusStyles(\n nextPoses: ControlPose[],\n isRelative: boolean,\n width: number,\n height: number,\n left = 0,\n top = 0,\n right: number = width,\n bottom: number = height,\n) {\n const clipStyles: string[] = [];\n let isVertical = false;\n\n const radiusPoses = nextPoses.filter(pos => !pos.virtual);\n const raws = radiusPoses.map(posInfo => {\n const { horizontal, vertical, pos } = posInfo;\n\n if (vertical && !isVertical) {\n isVertical = true;\n clipStyles.push(\"/\");\n }\n\n if (isVertical) {\n const rawPos = Math.max(0, vertical === 1 ? pos[1] - top : bottom - pos[1]);\n clipStyles.push(convertCSSSize(rawPos, height, isRelative));\n\n return rawPos;\n } else {\n const rawPos = Math.max(0, horizontal === 1 ? pos[0] - left : right - pos[0]);\n clipStyles.push(convertCSSSize(rawPos, width, isRelative));\n\n return rawPos;\n }\n });\n\n return {\n radiusPoses,\n styles: clipStyles,\n raws,\n };\n}\nexport function getRadiusRange(controlPoses: ControlPose[]) {\n // [start, length]\n const horizontalRange = [0, 0];\n const verticalRange = [0, 0];\n const length = controlPoses.length;\n\n for (let i = 0; i < length; ++i) {\n const clipPose = controlPoses[i];\n\n if (!clipPose.sub) {\n continue;\n }\n if (clipPose.horizontal) {\n if (horizontalRange[1] === 0) {\n horizontalRange[0] = i;\n }\n horizontalRange[1] = i - horizontalRange[0] + 1;\n verticalRange[0] = i + 1;\n }\n if (clipPose.vertical) {\n if (verticalRange[1] === 0) {\n verticalRange[0] = i;\n }\n verticalRange[1] = i - verticalRange[0] + 1;\n }\n }\n\n return {\n horizontalRange,\n verticalRange,\n };\n}\nexport function getRadiusValues(\n values: string[],\n width: number,\n height: number,\n left: number,\n top: number,\n minCounts: number[] = [0, 0],\n full = false,\n): ControlPose[] {\n const splitIndex = values.indexOf(\"/\");\n const splitLength = (splitIndex > -1 ? values.slice(0, splitIndex) : values).length;\n const horizontalValues = values.slice(0, splitLength);\n const verticalValues = values.slice(splitLength + 1);\n const horizontalValuesLength = horizontalValues.length;\n const verticalValuesLength = verticalValues.length;\n const hasVerticalValues = verticalValuesLength > 0;\n const [\n nwValue = \"0px\",\n neValue = nwValue,\n seValue = nwValue,\n swValue = neValue,\n ] = horizontalValues;\n const [\n wnValue = nwValue,\n enValue = hasVerticalValues ? wnValue : neValue,\n esValue = hasVerticalValues ? wnValue : seValue,\n wsValue = hasVerticalValues ? enValue : swValue,\n ] = verticalValues;\n\n const horizontalRawPoses = [nwValue, neValue, seValue, swValue].map(pos => convertUnitSize(pos, width));\n const verticalRawPoses = [wnValue, enValue, esValue, wsValue].map(pos => convertUnitSize(pos, height));\n const horizontalPoses = horizontalRawPoses.slice();\n const verticalPoses = verticalRawPoses.slice();\n\n [horizontalPoses[0], horizontalPoses[1]] = calculateRatio(\n [horizontalPoses[0], horizontalPoses[1]],\n width,\n );\n [horizontalPoses[3], horizontalPoses[2]] = calculateRatio(\n [horizontalPoses[3], horizontalPoses[2]],\n width,\n );\n [verticalPoses[0], verticalPoses[3]] = calculateRatio(\n [verticalPoses[0], verticalPoses[3]], height,\n );\n [verticalPoses[1], verticalPoses[2]] = calculateRatio(\n [verticalPoses[1], verticalPoses[2]], height,\n );\n\n const nextHorizontalPoses = full\n ? horizontalPoses\n : horizontalPoses.slice(0, Math.max(minCounts[0], horizontalValuesLength));\n const nextVerticalPoses = full\n ? verticalPoses\n : verticalPoses.slice(0, Math.max(minCounts[1], verticalValuesLength));\n\n return [\n ...nextHorizontalPoses.map((pos, i) => {\n const direction = RADIUS_DIRECTIONS[i];\n\n return {\n virtual: i >= horizontalValuesLength,\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[i],\n vertical: 0,\n pos: [left + pos, top + (VERTICAL_RADIUS_DIRECTIONS[i] === -1 ? height : 0)],\n sub: true,\n raw: horizontalRawPoses[i],\n direction,\n };\n }),\n ...nextVerticalPoses.map((pos, i) => {\n const direction = RADIUS_DIRECTIONS[i];\n\n return {\n virtual: i >= verticalValuesLength,\n horizontal: 0,\n vertical: VERTICAL_RADIUS_DIRECTIONS[i],\n pos: [left + (HORIZONTAL_RADIUS_DIRECTIONS[i] === -1 ? width : 0), top + pos],\n sub: true,\n raw: verticalRawPoses[i],\n direction,\n };\n }),\n ];\n}\nexport function removeRadiusPos(\n controlPoses: ControlPose[],\n poses: number[][],\n index: number,\n startIndex: number,\n length: number = poses.length,\n) {\n const {\n horizontalRange,\n verticalRange,\n } = getRadiusRange(controlPoses.slice(startIndex));\n const radiuslIndex = index - startIndex;\n let deleteCount = 0;\n\n if (radiuslIndex === 0) {\n deleteCount = length;\n } else if (radiuslIndex > 0 && radiuslIndex < horizontalRange[1]) {\n deleteCount = horizontalRange[1] - radiuslIndex;\n } else if (radiuslIndex >= verticalRange[0]) {\n deleteCount = verticalRange[0] + verticalRange[1] - radiuslIndex;\n } else {\n return;\n }\n controlPoses.splice(index, deleteCount);\n poses.splice(index, deleteCount);\n}\nexport function addRadiusPos(\n controlPoses: ControlPose[],\n poses: number[][],\n startIndex: number,\n horizontalIndex: number,\n verticalIndex: number,\n distX: number,\n distY: number,\n right: number,\n bottom: number,\n left = 0,\n top = 0,\n) {\n const {\n horizontalRange,\n verticalRange,\n } = getRadiusRange(controlPoses.slice(startIndex));\n if (horizontalIndex > -1) {\n const radiusX = HORIZONTAL_RADIUS_DIRECTIONS[horizontalIndex] === 1\n ? distX - left\n : right - distX;\n for (let i = horizontalRange[1]; i <= horizontalIndex; ++i) {\n const y = VERTICAL_RADIUS_DIRECTIONS[i] === 1 ? top : bottom;\n let x = 0;\n if (horizontalIndex === i) {\n x = distX;\n } else if (i === 0) {\n x = left + radiusX;\n } else if (HORIZONTAL_RADIUS_DIRECTIONS[i] === -1) {\n x = right - (poses[startIndex][0] - left);\n }\n controlPoses.splice(startIndex + i, 0, {\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[i],\n vertical: 0,\n pos: [x, y],\n });\n poses.splice(startIndex + i, 0, [x, y]);\n\n if (i === 0) {\n break;\n }\n }\n } else if (verticalIndex > - 1) {\n const radiusY = VERTICAL_RADIUS_DIRECTIONS[verticalIndex] === 1\n ? distY - top\n : bottom - distY;\n if (horizontalRange[1] === 0 && verticalRange[1] === 0) {\n const pos = [\n left + radiusY,\n top,\n ];\n controlPoses.push({\n horizontal: HORIZONTAL_RADIUS_DIRECTIONS[0],\n vertical: 0,\n pos,\n });\n poses.push(pos);\n }\n\n const startVerticalIndex = verticalRange[0];\n for (let i = verticalRange[1]; i <= verticalIndex; ++i) {\n const x = HORIZONTAL_RADIUS_DIRECTIONS[i] === 1 ? left : right;\n let y = 0;\n if (verticalIndex === i) {\n y = distY;\n } else if (i === 0) {\n y = top + radiusY;\n } else if (VERTICAL_RADIUS_DIRECTIONS[i] === 1) {\n y = poses[startIndex + startVerticalIndex][1];\n } else if (VERTICAL_RADIUS_DIRECTIONS[i] === -1) {\n y = bottom - (poses[startIndex + startVerticalIndex][1] - top);\n }\n controlPoses.push({\n horizontal: 0,\n vertical: VERTICAL_RADIUS_DIRECTIONS[i],\n pos: [x, y],\n });\n poses.push([x, y]);\n if (i === 0) {\n break;\n }\n }\n }\n}\nexport function splitRadiusPoses(\n controlPoses: ControlPose[],\n raws: number[] = controlPoses.map(pos => pos.raw!),\n) {\n const horizontals = controlPoses\n .map((pos, i) => pos.horizontal ? raws[i] : null).filter(pos => pos != null) as number[];\n const verticals = controlPoses\n .map((pos, i) => pos.vertical ? raws[i] : null).filter(pos => pos != null) as number[];\n\n return {\n horizontals,\n verticals,\n };\n}\n","import { splitBracket, splitComma, convertUnitSize, splitSpace, splitUnit } from \"@daybrush/utils\";\nimport { minus } from \"@scena/matrix\";\nimport { abs, convertCSSSize } from \"../../utils\";\nimport { getRadiusStyles, getRadiusValues } from \"../roundable/borderRadius\";\nimport { MoveableManagerInterface, ClippableProps, ControlPose } from \"../../types\";\nimport { getMinMaxs } from \"overlap-area\";\nimport { getCachedStyle } from \"../../store/Store\";\n\n\nexport const CLIP_DIRECTIONS = [\n [0, -1, \"n\"],\n [1, 0, \"e\"],\n] as const;\n\nexport const CLIP_RECT_DIRECTIONS = [\n [-1, -1, \"nw\"],\n [0, -1, \"n\"],\n [1, -1, \"ne\"],\n [1, 0, \"e\"],\n [1, 1, \"se\"],\n [0, 1, \"s\"],\n [-1, 1, \"sw\"],\n [-1, 0, \"w\"],\n] as const;\n\n// 1 2 5 6 0 3 4 7\n// 0 1 2 3 4 5 6 7\n\nexport function getClipStyles(\n moveable: MoveableManagerInterface,\n clipPath: ReturnType,\n poses: number[][],\n) {\n const {\n clipRelative,\n } = moveable.props;\n const {\n width,\n height,\n } = moveable.state;\n const {\n type: clipType,\n poses: clipPoses,\n } = clipPath!;\n\n const isRect = clipType === \"rect\";\n const isCircle = clipType === \"circle\";\n if (clipType === \"polygon\") {\n return poses.map(pos => `${convertCSSSize(pos[0], width, clipRelative)} ${convertCSSSize(pos[1], height, clipRelative)}`);\n } else if (isRect || clipType === \"inset\") {\n const top = poses[1][1];\n const right = poses[3][0];\n const left = poses[7][0];\n const bottom = poses[5][1];\n\n if (isRect) {\n return [\n top,\n right,\n bottom,\n left,\n ].map(pos => `${pos}px`);\n }\n const clipStyles\n = [top, width - right, height - bottom, left]\n .map((pos, i) => convertCSSSize(pos, i % 2 ? width : height, clipRelative));\n\n if (poses.length > 8) {\n const [subWidth, subHeight] = minus(poses[4], poses[0]);\n\n clipStyles.push(\"round\", ...getRadiusStyles(\n clipPoses.slice(8).map((info, i) => {\n return {\n ...info,\n pos: poses[i],\n };\n }),\n clipRelative!,\n subWidth,\n subHeight,\n left, top, right, bottom,\n ).styles);\n }\n return clipStyles;\n } else if (isCircle || clipType === \"ellipse\") {\n const center = poses[0];\n const ry = convertCSSSize(\n abs(poses[1][1] - center[1]),\n isCircle ? Math.sqrt((width * width + height * height) / 2) : height,\n clipRelative,\n );\n\n const clipStyles = isCircle ? [ry]\n : [convertCSSSize(abs(poses[2][0] - center[0]), width, clipRelative), ry];\n\n clipStyles.push(\n \"at\", convertCSSSize(center[0], width, clipRelative),\n convertCSSSize(center[1], height, clipRelative));\n\n return clipStyles;\n }\n}\n\nexport function getRectPoses(top: number, right: number, bottom: number, left: number): ControlPose[] {\n const xs = [left, (left + right) / 2, right];\n const ys = [top, (top + bottom) / 2, bottom];\n\n return CLIP_RECT_DIRECTIONS.map(([dirx, diry, dir]) => {\n const x = xs[dirx + 1];\n const y = ys[diry + 1];\n return {\n vertical: abs(diry),\n horizontal: abs(dirx),\n direction: dir,\n pos: [x, y],\n };\n });\n}\n\nexport function getControlSize(\n controlPoses: ControlPose[],\n) {\n const xRange = [Infinity, -Infinity];\n const yRange = [Infinity, -Infinity];\n\n controlPoses.forEach(({ pos }) => {\n xRange[0] = Math.min(xRange[0], pos[0]);\n xRange[1] = Math.max(xRange[1], pos[0]);\n yRange[0] = Math.min(yRange[0], pos[1]);\n yRange[1] = Math.max(yRange[1], pos[1]);\n });\n\n return [\n abs(xRange[1] - xRange[0]),\n abs(yRange[1] - yRange[0]),\n ];\n}\n\n\nexport function getClipPath(\n target: HTMLElement | SVGElement | undefined | null,\n width: number,\n height: number,\n defaultClip?: string,\n customClip?: string,\n) {\n if (!target) {\n return;\n }\n let clipText: string | undefined = customClip;\n\n if (!clipText) {\n const getStyle = getCachedStyle(target!);\n const clipPath = getStyle(\"clipPath\");\n\n clipText = clipPath !== \"none\" ? clipPath : getStyle(\"clip\");\n }\n if (!clipText || clipText === \"none\" || clipText === \"auto\") {\n clipText = defaultClip;\n\n if (!clipText) {\n return;\n }\n }\n const {\n prefix: clipPrefix = clipText,\n value = \"\",\n } = splitBracket(clipText);\n const isCircle = clipPrefix === \"circle\";\n let splitter = \" \";\n\n if (clipPrefix === \"polygon\") {\n const values = splitComma(value! || `0% 0%, 100% 0%, 100% 100%, 0% 100%`);\n splitter = \",\";\n\n const poses: ControlPose[] = values.map(pos => {\n const [xPos, yPos] = pos.split(\" \");\n\n return {\n vertical: 1,\n horizontal: 1,\n pos: [\n convertUnitSize(xPos, width),\n convertUnitSize(yPos, height),\n ],\n };\n });\n const minMaxs = getMinMaxs(poses.map(pos => pos.pos));\n\n return {\n type: clipPrefix,\n clipText,\n poses,\n splitter,\n left: minMaxs.minX,\n right: minMaxs.maxX,\n top: minMaxs.minY,\n bottom: minMaxs.maxY,\n } as const;\n } else if (isCircle || clipPrefix === \"ellipse\") {\n let xPos = \"\";\n let yPos = \"\";\n let radiusX = 0;\n let radiusY = 0;\n const values = splitSpace(value!);\n\n if (isCircle) {\n let radius = \"\";\n [radius = \"50%\", , xPos = \"50%\", yPos = \"50%\"] = values;\n\n radiusX = convertUnitSize(radius, Math.sqrt((width * width + height * height) / 2));\n radiusY = radiusX;\n } else {\n let xRadius = \"\";\n let yRadius = \"\";\n [xRadius = \"50%\", yRadius = \"50%\", , xPos = \"50%\", yPos = \"50%\"] = values;\n\n radiusX = convertUnitSize(xRadius, width);\n radiusY = convertUnitSize(yRadius, height);\n }\n const centerPos = [\n convertUnitSize(xPos, width),\n convertUnitSize(yPos, height),\n ];\n const poses: ControlPose[] = [\n {\n vertical: 1,\n horizontal: 1,\n pos: centerPos,\n direction: \"nesw\",\n },\n ...CLIP_DIRECTIONS.slice(0, isCircle ? 1 : 2).map(dir => ({\n vertical: abs(dir[1]),\n horizontal: dir[0],\n direction: dir[2],\n sub: true,\n pos: [\n centerPos[0] + dir[0] * radiusX,\n centerPos[1] + dir[1] * radiusY,\n ],\n })),\n ];\n return {\n type: clipPrefix as \"circle\" | \"ellipse\",\n clipText,\n radiusX,\n radiusY,\n left: centerPos[0] - radiusX,\n top: centerPos[1] - radiusY,\n right: centerPos[0] + radiusX,\n bottom: centerPos[1] + radiusY,\n poses,\n splitter,\n } as const;\n } else if (clipPrefix === \"inset\") {\n const values = splitSpace(value! || \"0 0 0 0\");\n const roundIndex = values.indexOf(\"round\");\n\n const rectLength = (roundIndex > -1 ? values.slice(0, roundIndex) : values).length;\n const radiusValues = values.slice(rectLength + 1);\n const [\n topValue,\n rightValue = topValue,\n bottomValue = topValue,\n leftValue = rightValue,\n ] = values.slice(0, rectLength);\n const [top, bottom] = [topValue, bottomValue].map(pos => convertUnitSize(pos, height));\n const [left, right] = [leftValue, rightValue].map(pos => convertUnitSize(pos, width));\n const nextRight = width - right;\n const nextBottom = height - bottom;\n const radiusPoses = getRadiusValues(\n radiusValues,\n nextRight - left,\n nextBottom - top,\n left,\n top,\n );\n const poses: ControlPose[] = [\n ...getRectPoses(top, nextRight, nextBottom, left),\n ...radiusPoses,\n ];\n\n return {\n type: \"inset\",\n clipText,\n poses,\n top,\n left,\n right: nextRight,\n bottom: nextBottom,\n radius: radiusValues,\n splitter,\n } as const;\n } else if (clipPrefix === \"rect\") {\n // top right bottom left\n const values = splitComma(value! || `0px, ${width}px, ${height}px, 0px`);\n\n splitter = \",\";\n const [top, right, bottom, left] = values.map(pos => {\n const { value: posValue } = splitUnit(pos);\n\n return posValue;\n });\n const poses = getRectPoses(top, right, bottom, left);\n\n return {\n type: \"rect\",\n clipText,\n poses,\n top,\n right,\n bottom,\n left,\n values,\n splitter,\n } as const;\n }\n return;\n}\n","import {\n Renderer, ClippableProps, OnClip,\n ClippableState, OnClipEnd, OnClipStart,\n ControlPose, MoveableManagerInterface, DraggableProps,\n} from \"../types\";\nimport { convertUnitSize, getRad } from \"@daybrush/utils\";\nimport {\n prefix, calculatePosition, getDiagonalSize,\n fillParams, triggerEvent,\n makeMatrixCSS, getRect, fillEndParams,\n getSizeDistByDist,\n getProps,\n fillCSSObject,\n abs,\n sign,\n} from \"../utils\";\nimport { plus, minus, multiply } from \"@scena/matrix\";\nimport { getDragDist, calculatePointerDist, setDragStart } from \"../gesto/GestoUtils\";\nimport {\n HORIZONTAL_RADIUS_ORDER, VERTICAL_RADIUS_ORDER, addRadiusPos, removeRadiusPos,\n} from \"./roundable/borderRadius\";\nimport { renderLine } from \"../renderDirections\";\nimport { checkSnapBoundPriority } from \"./snappable/snap\";\nimport { checkSnapBounds } from \"./snappable/snapBounds\";\nimport { getDefaultGuidelines } from \"./snappable/getTotalGuidelines\";\nimport {\n getControlSize, getClipPath,\n getClipStyles, getRectPoses,\n} from \"./clippable/utils\";\n\nexport function moveControlPos(\n controlPoses: ControlPose[],\n index: number,\n dist: number[],\n isRect?: boolean,\n keepRatio?: boolean,\n) {\n const { direction, sub } = controlPoses[index];\n const dists = controlPoses.map(() => [0, 0]);\n const directions = direction ? direction.split(\"\") : [];\n\n if (isRect && index < 8) {\n const verticalDirections = directions.filter(dir => dir === \"w\" || dir === \"e\");\n const horizontalDirections = directions.filter(dir => dir === \"n\" || dir === \"s\");\n\n const verticalDirection = verticalDirections[0];\n const horizontalDirection = horizontalDirections[0];\n\n dists[index] = dist;\n const [width, height] = getControlSize(controlPoses);\n const ratio = width && height ? width / height : 0;\n\n if (ratio && keepRatio) {\n // 0 1 2\n // 7 3\n // 6 5 4\n const fixedIndex = (index + 4) % 8;\n const fixedPosition = controlPoses[fixedIndex].pos;\n const sizeDirection = [0, 0];\n\n if (direction!.indexOf(\"w\") > -1) {\n sizeDirection[0] = -1;\n } else if (direction!.indexOf(\"e\") > -1) {\n sizeDirection[0] = 1;\n }\n if (direction!.indexOf(\"n\") > -1) {\n sizeDirection[1] = -1;\n } else if (direction!.indexOf(\"s\") > -1) {\n sizeDirection[1] = 1;\n }\n\n\n const nextDist = getSizeDistByDist(\n [width, height],\n dist,\n ratio,\n sizeDirection,\n true,\n );\n const nextWidth = width + nextDist[0];\n const nextHeight = height + nextDist[1];\n let top = fixedPosition[1];\n let bottom = fixedPosition[1];\n let left = fixedPosition[0];\n let right = fixedPosition[0];\n\n if (sizeDirection[0] === -1) {\n left = right - nextWidth;\n } else if (sizeDirection[0] === 1) {\n right = left + nextWidth;\n } else {\n left = left - nextWidth / 2;\n right = right + nextWidth / 2;\n }\n if (sizeDirection[1] === -1) {\n top = bottom - nextHeight;\n } else if (sizeDirection[1] === 1) {\n bottom = top + nextHeight;\n } else {\n top = bottom - nextHeight / 2;\n bottom = top + nextHeight;\n }\n\n const nextControlPoses = getRectPoses(top, right, bottom, left);\n\n controlPoses.forEach((controlPose, i) => {\n dists[i][0] = nextControlPoses[i].pos[0] - controlPose.pos[0];\n dists[i][1] = nextControlPoses[i].pos[1] - controlPose.pos[1];\n });\n } else {\n controlPoses.forEach((controlPose, i) => {\n const {\n direction: controlDir,\n } = controlPose;\n\n if (!controlDir) {\n return;\n }\n if (controlDir.indexOf(verticalDirection) > -1) {\n dists[i][0] = dist[0];\n }\n if (controlDir.indexOf(horizontalDirection) > -1) {\n dists[i][1] = dist[1];\n }\n });\n if (verticalDirection) {\n dists[1][0] = dist[0] / 2;\n dists[5][0] = dist[0] / 2;\n }\n if (horizontalDirection) {\n dists[3][1] = dist[1] / 2;\n dists[7][1] = dist[1] / 2;\n }\n }\n } else if (direction && !sub) {\n directions.forEach(dir => {\n const isVertical = dir === \"n\" || dir === \"s\";\n\n controlPoses.forEach((controlPose, i) => {\n const {\n direction: dirDir,\n horizontal: dirHorizontal,\n vertical: dirVertical,\n } = controlPose;\n\n if (!dirDir || dirDir.indexOf(dir) === -1) {\n return;\n }\n dists[i] = [\n isVertical || !dirHorizontal ? 0 : dist[0],\n !isVertical || !dirVertical ? 0 : dist[1],\n ];\n });\n });\n } else {\n dists[index] = dist;\n }\n\n return dists;\n}\n\n\nfunction addClipPath(moveable: MoveableManagerInterface, e: any) {\n const [distX, distY] = calculatePointerDist(moveable, e);\n const { clipPath, clipIndex } = e.datas;\n const {\n type: clipType,\n poses: clipPoses,\n splitter,\n } = (clipPath as ReturnType)!;\n const poses = clipPoses.map(pos => pos.pos);\n if (clipType === \"polygon\") {\n poses.splice(clipIndex, 0, [distX, distY]);\n } else if (clipType === \"inset\") {\n const horizontalIndex = HORIZONTAL_RADIUS_ORDER.indexOf(clipIndex);\n const verticalIndex = VERTICAL_RADIUS_ORDER.indexOf(clipIndex);\n const length = clipPoses.length;\n\n addRadiusPos(\n clipPoses,\n poses,\n 8,\n horizontalIndex,\n verticalIndex,\n distX,\n distY,\n poses[4][0],\n poses[4][1],\n poses[0][0],\n poses[0][1],\n );\n\n if (length === clipPoses.length) {\n return;\n }\n } else {\n return;\n }\n const clipStyles = getClipStyles(moveable, clipPath, poses)!;\n const clipStyle = `${clipType}(${clipStyles.join(splitter)})`;\n\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\n clipEventType: \"added\",\n clipType,\n poses,\n clipStyles,\n clipStyle,\n distX: 0,\n distY: 0,\n ...fillCSSObject({\n clipPath: clipStyle,\n }, e),\n }));\n}\nfunction removeClipPath(moveable: MoveableManagerInterface, e: any) {\n const { clipPath, clipIndex } = e.datas;\n const {\n type: clipType,\n poses: clipPoses,\n splitter,\n } = (clipPath as ReturnType)!;\n const poses = clipPoses.map(pos => pos.pos);\n const length = poses.length;\n if (clipType === \"polygon\") {\n clipPoses.splice(clipIndex, 1);\n poses.splice(clipIndex, 1);\n } else if (clipType === \"inset\") {\n if (clipIndex < 8) {\n return;\n }\n removeRadiusPos(clipPoses, poses, clipIndex, 8, length);\n\n if (length === clipPoses.length) {\n return;\n }\n } else {\n return;\n }\n const clipStyles = getClipStyles(moveable, clipPath, poses)!;\n const clipStyle = `${clipType}(${clipStyles.join(splitter)})`;\n\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\n clipEventType: \"removed\",\n clipType,\n poses,\n clipStyles,\n clipStyle,\n distX: 0,\n distY: 0,\n ...fillCSSObject({\n clipPath: clipStyle,\n }, e),\n }));\n}\n/**\n * @namespace Moveable.Clippable\n * @description Whether to clip the target.\n */\n\nexport default {\n name: \"clippable\",\n props: [\n \"clippable\",\n \"defaultClipPath\",\n \"customClipPath\",\n \"keepRatio\",\n \"clipRelative\",\n \"clipArea\",\n \"dragWithClip\",\n \"clipTargetBounds\",\n \"clipVerticalGuidelines\",\n \"clipHorizontalGuidelines\",\n \"clipSnapThreshold\",\n ] as const,\n events: [\n \"clipStart\",\n \"clip\",\n \"clipEnd\",\n ] as const,\n css: [\n `.control.clip-control {\nbackground: #6d6;\ncursor: pointer;\n}\n.control.clip-control.clip-radius {\nbackground: #d66;\n}\n.line.clip-line {\nbackground: #6e6;\ncursor: move;\nz-index: 1;\n}\n.clip-area {\nposition: absolute;\ntop: 0;\nleft: 0;\n}\n.clip-ellipse {\nposition: absolute;\ncursor: move;\nborder: 1px solid #6d6;\nborder: var(--zoompx) solid #6d6;\nborder-radius: 50%;\ntransform-origin: 0px 0px;\n}`,\n `:host {\n--bounds-color: #d66;\n}`,\n `.guideline {\npointer-events: none;\nz-index: 2;\n}`,\n `.line.guideline.bounds {\nbackground: #d66;\nbackground: var(--bounds-color);\n}`,\n ],\n render(moveable: MoveableManagerInterface, React: Renderer): any[] {\n const {\n customClipPath,\n defaultClipPath,\n clipArea, zoom,\n groupable,\n } = moveable.props;\n const {\n target, width, height, allMatrix, is3d, left, top,\n pos1, pos2, pos3, pos4,\n clipPathState,\n snapBoundInfos,\n rotation: rotationRad,\n } = moveable.getState();\n\n if (!target || groupable) {\n return [];\n }\n\n const clipPath = getClipPath(\n target, width, height, defaultClipPath || \"inset\", clipPathState || customClipPath);\n\n if (!clipPath) {\n return [];\n }\n const n = is3d ? 4 : 3;\n const type = clipPath.type;\n const clipPoses = clipPath.poses;\n const poses = clipPoses.map(pos => {\n // return [x, y];\n const calculatedPos = calculatePosition(allMatrix, pos.pos, n);\n\n return [\n calculatedPos[0] - left,\n calculatedPos[1] - top,\n ];\n });\n\n let controls: any[] = [];\n let lines: any[] = [];\n\n const isRect = type === \"rect\";\n const isInset = type === \"inset\";\n const isPolygon = type === \"polygon\";\n\n if (isRect || isInset || isPolygon) {\n const linePoses = isInset ? poses.slice(0, 8) : poses;\n\n lines = linePoses.map((to, i) => {\n const from = i === 0 ? linePoses[linePoses.length - 1] : linePoses[i - 1];\n\n const rad = getRad(from, to);\n const dist = getDiagonalSize(from, to);\n return
;\n });\n }\n controls = poses.map((pos, i) => {\n return
;\n });\n\n if (isInset) {\n controls.push(...poses.slice(8).map((pos, i) => {\n return
;\n }));\n }\n if (type === \"circle\" || type === \"ellipse\") {\n const {\n left: clipLeft,\n top: clipTop,\n radiusX,\n radiusY,\n } = clipPath;\n\n const [distLeft, distTop] = minus(\n calculatePosition(allMatrix, [clipLeft!, clipTop!], n),\n calculatePosition(allMatrix, [0, 0], n),\n );\n let ellipseClipPath = \"none\";\n\n if (!clipArea) {\n const piece = Math.max(10, radiusX! / 5, radiusY! / 5);\n const areaPoses: number[][] = [];\n\n for (let i = 0; i <= piece; ++i) {\n const rad = Math.PI * 2 / piece * i;\n areaPoses.push([\n radiusX! + (radiusX! - zoom!) * Math.cos(rad),\n radiusY! + (radiusY! - zoom!) * Math.sin(rad),\n ]);\n }\n areaPoses.push([radiusX!, -2]);\n areaPoses.push([-2, -2]);\n areaPoses.push([-2, radiusY! * 2 + 2]);\n areaPoses.push([radiusX! * 2 + 2, radiusY! * 2 + 2]);\n areaPoses.push([radiusX! * 2 + 2, -2]);\n areaPoses.push([radiusX!, -2]);\n\n ellipseClipPath = `polygon(${areaPoses.map(pos => `${pos[0]}px ${pos[1]}px`).join(\", \")})`;\n }\n controls.push(
);\n }\n if (clipArea) {\n const {\n width: allWidth,\n height: allHeight,\n left: allLeft,\n top: allTop,\n } = getRect([pos1, pos2, pos3, pos4, ...poses]);\n if (isPolygon || isRect || isInset) {\n const areaPoses = isInset ? poses.slice(0, 8) : poses;\n controls.push(
`${pos[0] - allLeft}px ${pos[1] - allTop}px`).join(\", \")})`,\n }}>
);\n }\n }\n if (snapBoundInfos) {\n ([\"vertical\", \"horizontal\"] as const).forEach(directionType => {\n const info = snapBoundInfos[directionType];\n const isHorizontal = directionType === \"horizontal\";\n\n if (info.isSnap) {\n lines.push(...info.snap.posInfos.map(({ pos }, i) => {\n const snapPos1 = minus(calculatePosition(\n allMatrix, isHorizontal ? [0, pos] : [pos, 0], n), [left, top]);\n const snapPos2 = minus(calculatePosition(\n allMatrix, isHorizontal ? [width, pos] : [pos, height], n), [left, top]);\n\n return renderLine(\n React, \"\", snapPos1, snapPos2, zoom!,\n `clip${directionType}snap${i}`, \"guideline\");\n }));\n }\n if (info.isBound) {\n lines.push(...info.bounds.map(({ pos }, i) => {\n const snapPos1 = minus(calculatePosition(\n allMatrix, isHorizontal ? [0, pos] : [pos, 0], n), [left, top]);\n const snapPos2 = minus(calculatePosition(\n allMatrix, isHorizontal ? [width, pos] : [pos, height], n), [left, top]);\n\n return renderLine(\n React, \"\", snapPos1, snapPos2, zoom!,\n `clip${directionType}bounds${i}`, \"guideline\", \"bounds\", \"bold\");\n }));\n }\n });\n }\n return [\n ...controls,\n ...lines,\n ];\n },\n dragControlCondition(moveable: any, e: any) {\n return e.inputEvent && (e.inputEvent.target.getAttribute(\"class\") || \"\").indexOf(\"clip\") > -1;\n },\n dragStart(moveable: MoveableManagerInterface, e: any) {\n const props = moveable.props;\n const {\n dragWithClip = true,\n } = props;\n\n if (dragWithClip) {\n return false;\n }\n\n return this.dragControlStart(moveable, e);\n },\n drag(moveable: MoveableManagerInterface, e: any) {\n return this.dragControl(moveable, { ...e, isDragTarget: true });\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n return this.dragControlEnd(moveable, e);\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n const state = moveable.state;\n const { defaultClipPath, customClipPath } = moveable.props;\n const { target, width, height } = state;\n const inputTarget = e.inputEvent ? e.inputEvent.target : null;\n const className = (inputTarget && inputTarget.getAttribute(\"class\")) || \"\";\n const datas = e.datas;\n const clipPath = getClipPath(target!, width, height, defaultClipPath || \"inset\", customClipPath);\n\n if (!clipPath) {\n return false;\n }\n const { clipText, type, poses } = clipPath;\n const result = triggerEvent(moveable, \"onClipStart\", fillParams(moveable, e, {\n clipType: type,\n clipStyle: clipText,\n poses: poses.map(pos => pos.pos),\n }));\n\n if (result === false) {\n datas.isClipStart = false;\n return false;\n }\n datas.isControl = className && className.indexOf(\"clip-control\") > -1;\n datas.isLine = className.indexOf(\"clip-line\") > -1;\n datas.isArea = className.indexOf(\"clip-area\") > -1 || className.indexOf(\"clip-ellipse\") > -1;\n datas.clipIndex = inputTarget ? parseInt(inputTarget.getAttribute(\"data-clip-index\"), 10) : -1;\n datas.clipPath = clipPath;\n datas.isClipStart = true;\n state.clipPathState = clipText;\n setDragStart(moveable, e);\n\n return true;\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n const { datas, originalDatas, isDragTarget } = e;\n\n if (!datas.isClipStart) {\n return false;\n }\n const { isControl, isLine, isArea, clipIndex, clipPath } = datas as {\n clipPath: ReturnType,\n [key: string]: any,\n };\n if (!clipPath) {\n return false;\n }\n const props = getProps(moveable.props, \"clippable\");\n\n const { keepRatio } = props;\n let distX = 0;\n let distY = 0;\n\n const originalDraggable = originalDatas.draggable;\n const originalDist = getDragDist(e);\n\n if (isDragTarget && originalDraggable) {\n [distX, distY] = originalDraggable.prevBeforeDist;\n } else {\n [distX, distY] = originalDist;\n }\n\n const firstDist = [distX, distY];\n\n const state = moveable.state;\n const { width, height } = state;\n const isDragWithTarget = !isArea && !isControl && !isLine;\n const {\n type: clipType,\n poses: clipPoses,\n splitter,\n } = clipPath;\n const poses = clipPoses.map(pos => pos.pos);\n\n if (isDragWithTarget) {\n distX = -distX;\n distY = -distY;\n }\n const isAll = !isControl || clipPoses[clipIndex].direction === \"nesw\";\n const isRect = clipType === \"inset\" || clipType === \"rect\";\n let dists = clipPoses.map(() => [0, 0]);\n\n if (isControl && !isAll) {\n const { horizontal, vertical } = clipPoses[clipIndex];\n const dist = [\n distX * abs(horizontal),\n distY * abs(vertical),\n ];\n dists = moveControlPos(clipPoses, clipIndex, dist, isRect, keepRatio);\n } else if (isAll) {\n dists = poses.map(() => [distX, distY]);\n }\n const nextPoses: number[][] = poses.map((pos, i) => plus(pos, dists[i]));\n const guidePoses = [...nextPoses];\n\n state.snapBoundInfos = null;\n const isCircle = clipPath.type === \"circle\";\n const isEllipse = clipPath.type === \"ellipse\";\n\n if (isCircle || isEllipse) {\n const guideRect = getRect(nextPoses);\n const ry = abs(guideRect.bottom - guideRect.top);\n const rx = abs(isEllipse ? guideRect.right - guideRect.left : ry);\n const bottom = nextPoses[0][1] + ry;\n const left = nextPoses[0][0] - rx;\n const right = nextPoses[0][0] + rx;\n\n // right\n if (isCircle) {\n guidePoses.push([right, guideRect.bottom]);\n dists.push([1, 0]);\n }\n // bottom\n guidePoses.push([guideRect.left, bottom]);\n dists.push([0, 1]);\n // left\n guidePoses.push([left, guideRect.bottom]);\n dists.push([1, 0]);\n }\n\n const guidelines = getDefaultGuidelines(\n (props.clipHorizontalGuidelines || []).map(v => convertUnitSize(`${v}`, height)),\n (props.clipVerticalGuidelines || []).map(v => convertUnitSize(`${v}`, width)),\n width!, height!,\n );\n let guideXPoses: number[] = [];\n let guideYPoses: number[] = [];\n\n if (isCircle || isEllipse) {\n guideXPoses = [guidePoses[4][0], guidePoses[2][0]];\n guideYPoses = [guidePoses[1][1], guidePoses[3][1]];\n } else if (isRect) {\n const rectPoses = [guidePoses[0], guidePoses[2], guidePoses[4], guidePoses[6]];\n const rectDists = [dists[0], dists[2], dists[4], dists[6]];\n\n guideXPoses = rectPoses.filter((_, i) => rectDists[i][0]).map(pos => pos[0]);\n guideYPoses = rectPoses.filter((_, i) => rectDists[i][1]).map(pos => pos[1]);\n } else {\n guideXPoses = guidePoses.filter((_, i) => dists[i][0]).map(pos => pos[0]);\n guideYPoses = guidePoses.filter((_, i) => dists[i][1]).map(pos => pos[1]);\n }\n const boundDelta = [0, 0];\n const {\n horizontal: horizontalSnapInfo,\n vertical: verticalSnapInfo,\n } = checkSnapBounds(\n guidelines,\n props.clipTargetBounds && { left: 0, top: 0, right: width, bottom: height },\n guideXPoses,\n guideYPoses,\n 5,\n 5,\n );\n let snapOffsetY = horizontalSnapInfo.offset;\n let snapOffsetX = verticalSnapInfo.offset;\n\n if (horizontalSnapInfo.isBound) {\n boundDelta[1] += snapOffsetY;\n }\n if (verticalSnapInfo.isBound) {\n boundDelta[0] += snapOffsetX;\n }\n if ((isEllipse || isCircle) && dists[0][0] === 0 && dists[0][1] === 0) {\n const guideRect = getRect(nextPoses);\n let cy = guideRect.bottom - guideRect.top;\n let cx = isEllipse ? guideRect.right - guideRect.left : cy;\n\n\n const distSnapX = verticalSnapInfo.isBound\n ? abs(snapOffsetX)\n : (verticalSnapInfo.snapIndex === 0 ? -snapOffsetX : snapOffsetX);\n const distSnapY = horizontalSnapInfo.isBound\n ? abs(snapOffsetY)\n : (horizontalSnapInfo.snapIndex === 0 ? -snapOffsetY : snapOffsetY);\n cx -= distSnapX;\n cy -= distSnapY;\n\n if (isCircle) {\n cy = checkSnapBoundPriority(verticalSnapInfo, horizontalSnapInfo) > 0 ? cy : cx;\n cx = cy;\n }\n const center = guidePoses[0];\n\n guidePoses[1][1] = center[1] - cy;\n guidePoses[2][0] = center[0] + cx;\n guidePoses[3][1] = center[1] + cy;\n guidePoses[4][0] = center[0] - cx;\n } else if (isRect && keepRatio && isControl) {\n const [width, height] = getControlSize(clipPoses);\n const ratio = width && height ? width / height : 0;\n const clipPose = clipPoses[clipIndex];\n const direction = clipPose.direction! || \"\";\n let top = guidePoses[1][1];\n let bottom = guidePoses[5][1];\n let left = guidePoses[7][0];\n let right = guidePoses[3][0];\n\n if (abs(snapOffsetY) <= abs(snapOffsetX)) {\n snapOffsetY = sign(snapOffsetY) * abs(snapOffsetX) / ratio;\n } else {\n snapOffsetX = sign(snapOffsetX) * abs(snapOffsetY) * ratio;\n }\n if (direction!.indexOf(\"w\") > -1) {\n left -= snapOffsetX;\n } else if (direction!.indexOf(\"e\") > -1) {\n right -= snapOffsetX;\n } else {\n left += snapOffsetX / 2;\n right -= snapOffsetX / 2;\n }\n if (direction!.indexOf(\"n\") > -1) {\n top -= snapOffsetY;\n } else if (direction!.indexOf(\"s\") > -1) {\n bottom -= snapOffsetY;\n } else {\n top += snapOffsetY / 2;\n bottom -= snapOffsetY / 2;\n }\n const nextControlPoses = getRectPoses(top, right, bottom, left);\n\n guidePoses.forEach((pos, i) => {\n [pos[0], pos[1]] = nextControlPoses[i].pos;\n });\n } else {\n guidePoses.forEach((pos, j) => {\n const dist = dists[j];\n\n if (dist[0]) {\n pos[0] -= snapOffsetX;\n }\n if (dist[1]) {\n pos[1] -= snapOffsetY;\n }\n });\n }\n const nextClipStyles = getClipStyles(moveable, clipPath, nextPoses)!;\n const clipStyle = `${clipType}(${nextClipStyles.join(splitter)})`;\n\n state.clipPathState = clipStyle;\n\n if (isCircle || isEllipse) {\n guideXPoses = [guidePoses[4][0], guidePoses[2][0]];\n guideYPoses = [guidePoses[1][1], guidePoses[3][1]];\n } else if (isRect) {\n const rectPoses = [guidePoses[0], guidePoses[2], guidePoses[4], guidePoses[6]];\n\n guideXPoses = rectPoses.map(pos => pos[0]);\n guideYPoses = rectPoses.map(pos => pos[1]);\n } else {\n guideXPoses = guidePoses.map(pos => pos[0]);\n guideYPoses = guidePoses.map(pos => pos[1]);\n }\n state.snapBoundInfos = checkSnapBounds(\n guidelines,\n props.clipTargetBounds && { left: 0, top: 0, right: width, bottom: height },\n guideXPoses,\n guideYPoses,\n 1,\n 1,\n );\n\n if (originalDraggable) {\n const {\n is3d,\n allMatrix,\n } = state;\n const n = is3d ? 4 : 3;\n\n let dragDist = boundDelta;\n\n if (isDragTarget) {\n dragDist = [\n firstDist[0] + boundDelta[0] - originalDist[0],\n firstDist[1] + boundDelta[1] - originalDist[1],\n ];\n }\n originalDraggable.deltaOffset = multiply(allMatrix, [dragDist[0], dragDist[1], 0, 0], n);\n }\n triggerEvent(moveable, \"onClip\", fillParams(moveable, e, {\n clipEventType: \"changed\",\n clipType,\n poses: nextPoses,\n clipStyle,\n clipStyles: nextClipStyles,\n distX,\n distY,\n ...fillCSSObject({\n [clipType === \"rect\" ? \"clip\" : \"clipPath\"]: clipStyle,\n }, e),\n }));\n\n return true;\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n this.unset(moveable);\n const { isDrag, datas, isDouble } = e;\n const { isLine, isClipStart, isControl } = datas;\n\n if (!isClipStart) {\n return false;\n }\n triggerEvent(moveable, \"onClipEnd\", fillEndParams(moveable, e, {}));\n if (isDouble) {\n if (isControl) {\n removeClipPath(moveable, e);\n } else if (isLine) {\n // add\n addClipPath(moveable, e);\n }\n }\n return isDouble || isDrag;\n },\n unset(moveable: MoveableManagerInterface) {\n moveable.state.clipPathState = \"\";\n moveable.state.snapBoundInfos = null;\n },\n};\n\n/**\n * Whether to clip the target. (default: false)\n * @name Moveable.Clippable#clippable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n/**\n * If clippath is not set, the default value can be set. (defaultClipPath < style < customClipPath < dragging clipPath)\n * @name Moveable.Clippable#defaultClipPath\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n * % Can be used instead of the absolute px (`rect` not possible) (default: false)\n * @name Moveable.Clippable#clipRelative\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n * You can force the custom clipPath. (defaultClipPath < style < customClipPath < dragging clipPath)\n * @name Moveable.Clippable#customClipPath\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n * When dragging the target, the clip also moves. (default: true)\n * @name Moveable.Clippable#dragWithClip\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n * You can drag the clip by setting clipArea.\n * @name Moveable.Clippable#clipArea\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n* Whether the clip is bound to the target.\n* @name Moveable.Clippable#clipTargetBounds\n* @default false\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* clippable: true,\n* defaultClipPath: \"inset\",\n* customClipPath: \"\",\n* clipRelative: false,\n* clipArea: false,\n* dragWithClip: true,\n* clipTargetBounds: true,\n* });\n* moveable.on(\"clipStart\", e => {\n* console.log(e);\n* }).on(\"clip\", e => {\n* if (e.clipType === \"rect\") {\n* e.target.style.clip = e.clipStyle;\n* } else {\n* e.target.style.clipPath = e.clipStyle;\n* }\n* }).on(\"clipEnd\", e => {\n* console.log(e);\n* });\n*/\n\n/**\n * Add clip guidelines in the vertical direction.\n * @name Moveable.Clippable#clipVerticalGuidelines\n * @default 0\n * @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* clippable: true,\n* defaultClipPath: \"inset\",\n* customClipPath: \"\",\n* clipRelative: false,\n* clipArea: false,\n* dragWithClip: true,\n* clipVerticalGuidelines: [0, 100, 200],\n* clipHorizontalGuidelines: [0, 100, 200],\n* clipSnapThreshold: 5,\n* });\n*/\n\n/**\n* Add clip guidelines in the horizontal direction.\n* @name Moveable.Clippable#clipHorizontalGuidelines\n* @default []\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* clippable: true,\n* defaultClipPath: \"inset\",\n* customClipPath: \"\",\n* clipRelative: false,\n* clipArea: false,\n* dragWithClip: true,\n* clipVerticalGuidelines: [0, 100, 200],\n* clipHorizontalGuidelines: [0, 100, 200],\n* clipSnapThreshold: 5,\n* });\n*/\n/**\n* istance value that can snap to clip guidelines.\n* @name Moveable.Clippable#clipSnapThreshold\n* @default 5\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* clippable: true,\n* defaultClipPath: \"inset\",\n* customClipPath: \"\",\n* clipRelative: false,\n* clipArea: false,\n* dragWithClip: true,\n* clipVerticalGuidelines: [0, 100, 200],\n* clipHorizontalGuidelines: [0, 100, 200],\n* clipSnapThreshold: 5,\n* });\n*/\n/**\n * When drag start the clip area or controls, the `clipStart` event is called.\n * @memberof Moveable.Clippable\n * @event clipStart\n * @param {Moveable.Clippable.OnClipStart} - Parameters for the `clipStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n/**\n * When drag the clip area or controls, the `clip` event is called.\n * @memberof Moveable.Clippable\n * @event clip\n * @param {Moveable.Clippable.OnClip} - Parameters for the `clip` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n/**\n * When drag end the clip area or controls, the `clipEnd` event is called.\n * @memberof Moveable.Clippable\n * @event clipEnd\n * @param {Moveable.Clippable.OnClipEnd} - Parameters for the `clipEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * clippable: true,\n * defaultClipPath: \"inset\",\n * customClipPath: \"\",\n * clipRelative: false,\n * clipArea: false,\n * dragWithClip: true,\n * });\n * moveable.on(\"clipStart\", e => {\n * console.log(e);\n * }).on(\"clip\", e => {\n * if (e.clipType === \"rect\") {\n * e.target.style.clip = e.clipStyle;\n * } else {\n * e.target.style.clipPath = e.clipStyle;\n * }\n * }).on(\"clipEnd\", e => {\n * console.log(e);\n * });\n */\n","import {\n prefix, triggerEvent,\n fillParams, calculatePoses, getRect, fillEndParams, convertCSSSize, fillCSSObject,\n} from \"../utils\";\nimport {\n OnDragOriginStart, OnDragOrigin,\n OnDragOriginEnd, MoveableManagerInterface, DraggableProps, OriginDraggableProps, MoveableGroupInterface,\n} from \"../types\";\nimport { hasClass, IObject } from \"@daybrush/utils\";\nimport { setDragStart, getDragDist, getNextMatrix } from \"../gesto/GestoUtils\";\nimport { minus, plus } from \"@scena/matrix\";\nimport Draggable from \"./Draggable\";\nimport CustomGesto, { setCustomDrag } from \"../gesto/CustomGesto\";\n\n/**\n * @namespace OriginDraggable\n * @memberof Moveable\n * @description Whether to drag origin (default: false)\n */\nexport default {\n name: \"originDraggable\",\n props: [\n \"originDraggable\",\n \"originRelative\",\n ] as const,\n events: [\n \"dragOriginStart\",\n \"dragOrigin\",\n \"dragOriginEnd\",\n ] as const,\n css: [\n `:host[data-able-origindraggable] .control.origin {\npointer-events: auto;\n}`,\n ],\n dragControlCondition(_: any, e: any) {\n if (e.isRequest) {\n return e.requestAble === \"originDraggable\";\n }\n return hasClass(e.inputEvent.target, prefix(\"origin\"));\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n const { datas } = e;\n\n setDragStart(moveable, e);\n\n const params = fillParams(moveable, e, {\n dragStart: Draggable.dragStart(\n moveable,\n new CustomGesto().dragStart([0, 0], e),\n ),\n });\n const result = triggerEvent(moveable, \"onDragOriginStart\", params);\n\n datas.startOrigin = moveable.state.transformOrigin;\n datas.startTargetOrigin = moveable.state.targetOrigin;\n datas.prevOrigin = [0, 0];\n datas.isDragOrigin = true;\n\n if (result === false) {\n datas.isDragOrigin = false;\n return false;\n }\n\n return params;\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n const { datas, isPinch, isRequest } = e;\n\n if (!datas.isDragOrigin) {\n return false;\n }\n const [distX, distY] = getDragDist(e);\n const state = moveable.state;\n const {\n width,\n height,\n offsetMatrix,\n targetMatrix,\n is3d,\n } = state;\n const {\n originRelative = true,\n } = moveable.props;\n const n = is3d ? 4 : 3;\n let dist = [distX, distY];\n\n if (isRequest) {\n const distOrigin = e.distOrigin;\n if (distOrigin[0] || distOrigin[1]) {\n dist = distOrigin;\n }\n }\n const origin = plus(datas.startOrigin, dist);\n const targetOrigin = plus(datas.startTargetOrigin, dist);\n const delta = minus(dist, datas.prevOrigin);\n\n const nextMatrix = getNextMatrix(\n offsetMatrix,\n targetMatrix,\n origin,\n n,\n );\n\n const rect = moveable.getRect();\n const nextRect = getRect(calculatePoses(nextMatrix, width, height, n));\n\n const dragDelta = [\n rect.left - nextRect.left,\n rect.top - nextRect.top,\n ];\n\n datas.prevOrigin = dist;\n const transformOrigin = [\n convertCSSSize(targetOrigin[0], width, originRelative),\n convertCSSSize(targetOrigin[1], height, originRelative),\n ].join(\" \");\n const result = Draggable.drag(\n moveable,\n setCustomDrag(e, moveable.state, dragDelta, !!isPinch, false),\n )!;\n const params = fillParams(moveable, e, {\n width,\n height,\n origin,\n dist,\n delta,\n transformOrigin,\n drag: result,\n ...fillCSSObject({\n transformOrigin,\n transform: result.transform,\n }, e),\n afterTransform: result.transform,\n });\n triggerEvent(moveable, \"onDragOrigin\", params);\n return params;\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n const { datas } = e;\n\n if (!datas.isDragOrigin) {\n return false;\n }\n triggerEvent(moveable, \"onDragOriginEnd\",\n fillEndParams(moveable, e, {}));\n return true;\n },\n dragGroupControlCondition(moveable: any, e: any) {\n return this.dragControlCondition(moveable, e);\n },\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n const params = this.dragControlStart(moveable, e);\n\n if (!params) {\n return false;\n }\n\n return true;\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n const params = this.dragControl(moveable, e);\n\n if (!params) {\n return false;\n }\n moveable.transformOrigin = params.transformOrigin;\n\n return true;\n },\n /**\n * @method Moveable.OriginDraggable#request\n * @param {object} e - the OriginDraggable's request parameter\n * @param {number} [e.x] - x position\n * @param {number} [e.y] - y position\n * @param {number} [e.deltaX] - x number to move\n * @param {number} [e.deltaY] - y number to move\n * @param {array} [e.deltaOrigin] - left, top number to move transform-origin\n * @param {array} [e.origin] - transform-origin position\n * @param {number} [e.isInstant] - Whether to execute the request instantly\n * @return {Moveable.Requester} Moveable Requester\n * @example\n\n * // Instantly Request (requestStart - request - requestEnd)\n * // Use Relative Value\n * moveable.request(\"originDraggable\", { deltaX: 10, deltaY: 10 }, true);\n * // Use Absolute Value\n * moveable.request(\"originDraggable\", { x: 200, y: 100 }, true);\n * // Use Transform Value\n * moveable.request(\"originDraggable\", { deltaOrigin: [10, 0] }, true);\n * moveable.request(\"originDraggable\", { origin: [100, 0] }, true);\n * // requestStart\n * const requester = moveable.request(\"originDraggable\");\n *\n * // request\n * // Use Relative Value\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * // Use Absolute Value\n * moveable.request(\"originDraggable\", { x: 200, y: 100 });\n * moveable.request(\"originDraggable\", { x: 220, y: 100 });\n * moveable.request(\"originDraggable\", { x: 240, y: 100 });\n *\n * // requestEnd\n * requester.requestEnd();\n */\n request(moveable: MoveableManagerInterface) {\n const datas = {};\n const rect = moveable.getRect();\n let distX = 0;\n let distY = 0;\n\n const transformOrigin = rect.transformOrigin;\n const distOrigin = [0, 0];\n\n return {\n isControl: true,\n requestStart() {\n return { datas };\n },\n request(e: IObject) {\n if (\"deltaOrigin\" in e) {\n distOrigin[0] += e.deltaOrigin[0];\n distOrigin[1] += e.deltaOrigin[1];\n } else if (\"origin\" in e) {\n distOrigin[0] = e.origin[0] - transformOrigin[0];\n distOrigin[1] = e.origin[1] - transformOrigin[1];\n } else {\n if (\"x\" in e) {\n distX = e.x - rect.left;\n } else if (\"deltaX\" in e) {\n distX += e.deltaX;\n }\n if (\"y\" in e) {\n distY = e.y - rect.top;\n } else if (\"deltaY\" in e) {\n distY += e.deltaY;\n }\n }\n\n return { datas, distX, distY, distOrigin };\n },\n requestEnd() {\n return { datas, isDrag: true };\n },\n };\n },\n};\n/**\n * Whether to drag origin (default: false)\n * @name Moveable.OriginDraggable#originDraggable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * originDraggable: true,\n * });\n * let translate = [0, 0];\n * moveable.on(\"dragOriginStart\", e => {\n * e.dragStart && e.dragStart.set(translate);\n * }).on(\"dragOrigin\", e => {\n * translate = e.drag.beforeTranslate;\n * e.target.style.cssText\n * = `transform-origin: ${e.transformOrigin};`\n * + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\n * }).on(\"dragOriginEnd\", e => {\n * console.log(e);\n * });\n */\n\n/**\n * % Can be used instead of the absolute px (default: true)\n * @name Moveable.OriginDraggable#originRelative\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * originDraggable: true,\n * originRelative: false,\n * });\n * moveable.originRelative = true;\n */\n\n/**\n* When drag start the origin, the `dragOriginStart` event is called.\n* @memberof Moveable.OriginDraggable\n* @event dragOriginStart\n* @param {Moveable.OriginDraggable.OnDragOriginStart} - Parameters for the `dragOriginStart` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* originDraggable: true,\n* });\n* let translate = [0, 0];\n* moveable.on(\"dragOriginStart\", e => {\n* e.dragStart && e.dragStart.set(translate);\n* }).on(\"dragOrigin\", e => {\n* translate = e.drag.beforeTranslate;\n* e.target.style.cssText\n* = `transform-origin: ${e.transformOrigin};`\n* + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\n* }).on(\"dragOriginEnd\", e => {\n* console.log(e);\n* });\n*/\n\n/**\n* When drag the origin, the `dragOrigin` event is called.\n* @memberof Moveable.OriginDraggable\n* @event dragOrigin\n* @param {Moveable.OriginDraggable.OnDragOrigin} - Parameters for the `dragOrigin` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* originDraggable: true,\n* });\n* let translate = [0, 0];\n* moveable.on(\"dragOriginStart\", e => {\n* e.dragStart && e.dragStart.set(translate);\n* }).on(\"dragOrigin\", e => {\n* translate = e.drag.beforeTranslate;\n* e.target.style.cssText\n* = `transform-origin: ${e.transformOrigin};`\n* + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\n* }).on(\"dragOriginEnd\", e => {\n* console.log(e);\n* });\n*/\n\n/**\n* When drag end the origin, the `dragOriginEnd` event is called.\n* @memberof Moveable.OriginDraggable\n* @event dragOriginEnd\n* @param {Moveable.OriginDraggable.OnDragOriginEnd} - Parameters for the `dragOriginEnd` event\n* @example\n* import Moveable from \"moveable\";\n*\n* const moveable = new Moveable(document.body, {\n* originDraggable: true,\n* });\n* let translate = [0, 0];\n* moveable.on(\"dragOriginStart\", e => {\n* e.dragStart && e.dragStart.set(translate);\n* }).on(\"dragOrigin\", e => {\n* translate = e.drag.beforeTranslate;\n* e.target.style.cssText\n* = `transform-origin: ${e.transformOrigin};`\n* + `transform: translate(${translate[0]}px, ${translate[1]}px)`;\n* }).on(\"dragOriginEnd\", e => {\n* console.log(e);\n* });\n*/\n","import {\n prefix, triggerEvent,\n fillParams, fillEndParams, calculatePosition,\n fillCSSObject,\n catchEvent,\n getComputedStyle,\n} from \"../utils\";\nimport {\n Renderer, RoundableProps, OnRoundStart,\n RoundableState, OnRound, ControlPose, OnRoundEnd,\n MoveableManagerInterface,\n OnRoundGroup,\n MoveableGroupInterface,\n OnRoundGroupStart,\n OnRoundGroupEnd,\n} from \"../types\";\nimport { splitSpace } from \"@daybrush/utils\";\nimport { setDragStart, getDragDist, calculatePointerDist } from \"../gesto/GestoUtils\";\nimport { minus, plus } from \"@scena/matrix\";\nimport {\n getRadiusValues,\n getRadiusStyles,\n splitRadiusPoses,\n} from \"./roundable/borderRadius\";\nimport { fillChildEvents } from \"../groupUtils\";\n\n\nfunction addBorderRadiusByLine(\n controlPoses: ControlPose[],\n lineIndex: number,\n distX: number,\n distY: number,\n) {\n // lineIndex\n // 0 top\n // 1 right\n // 2 bottom\n // 3 left\n\n const horizontalsLength = controlPoses.filter(({ virtual, horizontal }) => horizontal && !virtual).length;\n const verticalsLength = controlPoses.filter(({ virtual, vertical }) => vertical && !virtual).length;\n let controlIndex = -1;\n\n //top\n if (lineIndex === 0) {\n if (horizontalsLength === 0) {\n controlIndex = 0;\n } else if (horizontalsLength === 1) {\n controlIndex = 1;\n }\n }\n // bottom\n if (lineIndex === 2) {\n if (horizontalsLength <= 2) {\n controlIndex = 2;\n } else if (horizontalsLength <= 3) {\n controlIndex = 3;\n }\n }\n // left\n if (lineIndex === 3) {\n if (verticalsLength === 0) {\n controlIndex = 4;\n } else if (verticalsLength < 4) {\n controlIndex = 7;\n }\n }\n\n // right\n if (lineIndex === 1) {\n if (verticalsLength <= 1) {\n controlIndex = 5;\n } else if (verticalsLength <= 2) {\n controlIndex = 6;\n }\n }\n if (controlIndex === -1 || !controlPoses[controlIndex].virtual) {\n return;\n }\n const controlPoseInfo = controlPoses[controlIndex];\n\n addBorderRadius(controlPoses, controlIndex);\n\n if (controlIndex < 4) {\n controlPoseInfo.pos[0] = distX;\n } else {\n controlPoseInfo.pos[1] = distY;\n }\n}\nfunction addBorderRadius(\n controlPoses: ControlPose[],\n index: number,\n) {\n if (index < 4) {\n controlPoses.slice(0, index + 1).forEach(info => {\n info.virtual = false;\n });\n } else {\n if (controlPoses[0].virtual) {\n controlPoses[0].virtual = false;\n }\n controlPoses.slice(4, index + 1).forEach(info => {\n info.virtual = false;\n });\n }\n}\nfunction removeBorderRadius(\n controlPoses: ControlPose[],\n index: number,\n) {\n if (index < 4) {\n controlPoses.slice(index, 4).forEach(info => {\n info.virtual = true;\n });\n } else {\n controlPoses.slice(index).forEach(info => {\n info.virtual = true;\n });\n }\n}\nfunction getBorderRadius(\n borderRadius: string,\n width: number,\n height: number,\n minCounts: number[] = [0, 0],\n full?: boolean,\n) {\n let values: string[] = [];\n\n if (!borderRadius || borderRadius === \"0px\") {\n values = [];\n } else {\n values = splitSpace(borderRadius);\n }\n\n return getRadiusValues(values, width, height, 0, 0, minCounts, full);\n}\n\nfunction triggerRoundEvent(\n moveable: MoveableManagerInterface,\n e: any,\n dist: number[],\n delta: number[],\n nextPoses: ControlPose[],\n) {\n const state = moveable.state;\n const {\n width,\n height,\n } = state;\n const {\n raws,\n styles,\n radiusPoses,\n } = getRadiusStyles(\n nextPoses,\n moveable.props.roundRelative!,\n width,\n height,\n );\n const {\n horizontals,\n verticals,\n } = splitRadiusPoses(radiusPoses, raws);\n const borderRadius = styles.join(\" \");\n\n state.borderRadiusState = borderRadius;\n const params = fillParams(moveable, e, {\n horizontals,\n verticals,\n borderRadius,\n width,\n height,\n delta,\n dist,\n ...fillCSSObject({\n borderRadius,\n }, e),\n });\n triggerEvent(moveable, \"onRound\", params);\n\n return params;\n}\n\n\nfunction getStyleBorderRadius(moveable: MoveableManagerInterface) {\n const {\n style,\n } = moveable.getState();\n let borderRadius = style.borderRadius || \"\";\n\n if (!borderRadius && moveable.props.groupable) {\n const firstMoveable = moveable.moveables![0];\n const firstTarget = moveable.getTargets()[0];\n\n\n if (firstTarget) {\n if (firstMoveable?.props.target === firstTarget) {\n borderRadius = moveable.moveables![0]?.state.style.borderRadius ?? \"\";\n style.borderRadius = borderRadius;\n } else {\n borderRadius = getComputedStyle(firstTarget).borderRadius;\n style.borderRadius = borderRadius;\n }\n }\n\n }\n return borderRadius;\n}\n\n/**\n * @namespace Moveable.Roundable\n * @description Whether to show and drag or double click border-radius\n */\n\nexport default {\n name: \"roundable\",\n props: [\n \"roundable\",\n \"roundRelative\",\n \"minRoundControls\",\n \"maxRoundControls\",\n \"roundClickable\",\n \"roundPadding\",\n \"isDisplayShadowRoundControls\",\n ] as const,\n events: [\n \"roundStart\",\n \"round\",\n \"roundEnd\",\n \"roundGroupStart\",\n \"roundGroup\",\n \"roundGroupEnd\",\n ] as const,\n css: [\n `.control.border-radius {\nbackground: #d66;\ncursor: pointer;\nz-index: 3;\n}`,\n `.control.border-radius.vertical {\nbackground: #d6d;\nz-index: 2;\n}`,\n `.control.border-radius.virtual {\nopacity: 0.5;\nz-index: 1;\n}`,\n `:host.round-line-clickable .line.direction {\ncursor: pointer;\n}`,\n ],\n className(moveable: MoveableManagerInterface) {\n const roundClickable = moveable.props.roundClickable;\n\n return roundClickable === true || roundClickable === \"line\" ? prefix(\"round-line-clickable\") : \"\";\n },\n requestStyle(): Array {\n return [\"borderRadius\"];\n },\n requestChildStyle(): Array {\n return [\"borderRadius\"];\n },\n render(moveable: MoveableManagerInterface, React: Renderer): any {\n const {\n target,\n width,\n height,\n allMatrix,\n is3d,\n left,\n top,\n borderRadiusState,\n } = moveable.getState();\n\n const {\n minRoundControls = [0, 0],\n maxRoundControls = [4, 4],\n zoom,\n roundPadding = 0,\n isDisplayShadowRoundControls,\n groupable,\n } = moveable.props;\n\n if (!target) {\n return null;\n }\n\n const borderRadius = borderRadiusState || getStyleBorderRadius(moveable);\n const n = is3d ? 4 : 3;\n const radiusValues = getBorderRadius(\n borderRadius,\n width, height,\n minRoundControls,\n true,\n );\n\n if (!radiusValues) {\n return null;\n }\n let verticalCount = 0;\n let horizontalCount = 0;\n const basePos = groupable ? [0, 0] : [left, top];\n\n return radiusValues.map((v, i) => {\n const horizontal = v.horizontal;\n const vertical = v.vertical;\n const direction = v.direction || \"\";\n const originalPos = [...v.pos];\n\n horizontalCount += Math.abs(horizontal);\n verticalCount += Math.abs(vertical);\n\n\n if (horizontal && direction.indexOf(\"n\") > -1) {\n originalPos[1] -= roundPadding;\n }\n if (vertical && direction.indexOf(\"w\") > -1) {\n originalPos[0] -= roundPadding;\n }\n if (horizontal && direction.indexOf(\"s\") > -1) {\n originalPos[1] += roundPadding;\n }\n if (vertical && direction.indexOf(\"e\") > -1) {\n originalPos[0] += roundPadding;\n }\n const pos = minus(calculatePosition(allMatrix, originalPos, n), basePos);\n const isDisplayVerticalShadow\n = isDisplayShadowRoundControls\n && isDisplayShadowRoundControls !== \"horizontal\";\n const isDisplay = v.vertical\n ? verticalCount <= maxRoundControls[1] && (isDisplayVerticalShadow || !v.virtual)\n : horizontalCount <= maxRoundControls[0] && (isDisplayShadowRoundControls || !v.virtual);\n\n return
;\n });\n },\n dragControlCondition(moveable: any, e: any) {\n if (!e.inputEvent || e.isRequest) {\n return false;\n }\n const className = (e.inputEvent.target.getAttribute(\"class\") || \"\");\n\n return className.indexOf(\"border-radius\") > -1\n || (className.indexOf(\"moveable-line\") > -1 && className.indexOf(\"moveable-direction\") > -1);\n },\n dragGroupControlCondition(moveable: any, e: any) {\n return this.dragControlCondition(moveable, e);\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n const { inputEvent, datas } = e;\n const inputTarget = inputEvent.target;\n const className = (inputTarget.getAttribute(\"class\") || \"\");\n const isControl = className.indexOf(\"border-radius\") > -1;\n const isLine = className.indexOf(\"moveable-line\") > -1 && className.indexOf(\"moveable-direction\") > -1;\n const controlIndex = isControl ? parseInt(inputTarget.getAttribute(\"data-radius-index\"), 10) : -1;\n let lineIndex = -1;\n\n if (isLine) {\n const indexAttr = inputTarget.getAttribute(\"data-line-key\")! || \"\";\n\n if (indexAttr) {\n lineIndex = parseInt(indexAttr.replace(/render-line-/g, \"\"), 10);\n\n if (isNaN(lineIndex)) {\n lineIndex = -1;\n }\n }\n }\n\n if (!isControl && !isLine) {\n return false;\n }\n\n const params = fillParams(moveable, e, {});\n\n const result = triggerEvent(\n moveable, \"onRoundStart\", params);\n\n if (result === false) {\n return false;\n }\n\n datas.lineIndex = lineIndex;\n datas.controlIndex = controlIndex;\n datas.isControl = isControl;\n datas.isLine = isLine;\n\n setDragStart(moveable, e);\n\n const {\n roundRelative,\n minRoundControls = [0, 0],\n } = moveable.props;\n const state = moveable.state;\n const {\n width,\n height,\n } = state;\n\n datas.isRound = true;\n datas.prevDist = [0, 0];\n const borderRadius = getStyleBorderRadius(moveable);\n const controlPoses = getBorderRadius(\n borderRadius || \"\",\n width,\n height,\n minRoundControls,\n true,\n ) || [];\n\n datas.controlPoses = controlPoses;\n\n state.borderRadiusState = getRadiusStyles(\n controlPoses,\n roundRelative!,\n width,\n height,\n ).styles.join(\" \");\n return params;\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n const { datas } = e;\n const controlPoses = datas.controlPoses as ControlPose[];\n\n if (!datas.isRound || !datas.isControl || !controlPoses.length) {\n return false;\n }\n const index = datas.controlIndex as number;\n\n const [distX, distY] = getDragDist(e);\n const dist = [distX, distY];\n const delta = minus(dist, datas.prevDist);\n const {\n maxRoundControls = [4, 4],\n } = moveable.props;\n const { width, height } = moveable.state;\n const selectedControlPose = controlPoses[index];\n\n const selectedVertical = selectedControlPose.vertical;\n const selectedHorizontal = selectedControlPose.horizontal;\n\n // 0: [0, 1, 2, 3] maxCount === 1\n // 0: [0, 2] maxCount === 2\n // 1: [1, 3] maxCount === 2\n\n // 0: [0] maxCount === 3\n // 1: [1, 3] maxCount === 3\n\n const dists = controlPoses.map(pose => {\n const { horizontal, vertical } = pose;\n const poseDist = [\n horizontal * selectedHorizontal * dist[0],\n vertical * selectedVertical * dist[1],\n ];\n if (horizontal) {\n if (maxRoundControls[0] === 1) {\n return poseDist;\n } else if (maxRoundControls[0] < 4 && horizontal !== selectedHorizontal) {\n return poseDist;\n }\n } else if (maxRoundControls[1] === 0) {\n poseDist[1] = vertical * selectedHorizontal * dist[0] / width * height;\n\n return poseDist;\n } else if (selectedVertical) {\n if (maxRoundControls[1] === 1) {\n return poseDist;\n } else if (maxRoundControls[1] < 4 && vertical !== selectedVertical) {\n return poseDist;\n }\n }\n return [0, 0];\n });\n\n dists[index] = dist;\n const nextPoses = controlPoses.map((info, i) => {\n return {\n ...info,\n pos: plus(info.pos, dists[i]),\n };\n });\n\n if (index < 4) {\n nextPoses.slice(0, index + 1).forEach(info => {\n info.virtual = false;\n });\n } else {\n nextPoses.slice(4, index + 1).forEach(info => {\n info.virtual = false;\n });\n }\n\n datas.prevDist = [distX, distY];\n\n return triggerRoundEvent(\n moveable,\n e,\n dist,\n delta,\n nextPoses,\n );\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n const state = moveable.state;\n\n state.borderRadiusState = \"\";\n const { datas, isDouble } = e;\n if (!datas.isRound) {\n return false;\n }\n const {\n isControl,\n controlIndex,\n isLine,\n lineIndex,\n } = datas;\n const controlPoses = datas.controlPoses as ControlPose[];\n const length = controlPoses.filter(({ virtual }) => virtual).length;\n const {\n roundClickable = true,\n } = moveable.props;\n\n if (isDouble && roundClickable) {\n if (isControl && (roundClickable === true || roundClickable === \"control\")) {\n removeBorderRadius(controlPoses, controlIndex);\n } else if (isLine && (roundClickable === true || roundClickable === \"line\")) {\n const [distX, distY] = calculatePointerDist(moveable, e);\n\n addBorderRadiusByLine(controlPoses, lineIndex, distX, distY);\n }\n\n if (length !== controlPoses.filter(({ virtual }) => virtual).length) {\n triggerRoundEvent(\n moveable,\n e,\n [0, 0],\n [0, 0],\n controlPoses,\n );\n }\n }\n const params = fillEndParams(moveable, e, {});\n\n triggerEvent(moveable, \"onRoundEnd\", params);\n state.borderRadiusState = \"\";\n return params;\n },\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n const result = this.dragControlStart(moveable, e);\n\n if (!result) {\n return false;\n }\n\n const moveables = moveable.moveables;\n const targets = moveable.props.targets!;\n const events = fillChildEvents(moveable, \"roundable\", e);\n\n const nextParams: OnRoundGroupStart = {\n targets: moveable.props.targets!,\n events: events.map((ev, i) => {\n return {\n ...ev,\n target: targets[i],\n moveable: moveables[i],\n currentTarget: moveables[i],\n };\n }),\n ...result,\n };\n\n triggerEvent(moveable, \"onRoundGroupStart\", nextParams);\n return result;\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n const result = this.dragControl(moveable, e);\n\n\n if (!result) {\n return false;\n }\n\n const moveables = moveable.moveables;\n const targets = moveable.props.targets!;\n const events = fillChildEvents(moveable, \"roundable\", e);\n\n const nextParams: OnRoundGroup = {\n targets: moveable.props.targets!,\n events: events.map((ev, i) => {\n return {\n ...ev,\n target: targets[i],\n moveable: moveables[i],\n currentTarget: moveables[i],\n ...fillCSSObject({\n borderRadius: result.borderRadius,\n }, ev),\n };\n }),\n ...result,\n };\n\n triggerEvent(moveable, \"onRoundGroup\", nextParams);\n return nextParams;\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n const moveables = moveable.moveables;\n const targets = moveable.props.targets!;\n const events = fillChildEvents(moveable, \"roundable\", e);\n\n catchEvent(moveable, \"onRound\", parentEvent => {\n const nextParams: OnRoundGroup = {\n targets: moveable.props.targets!,\n events: events.map((ev, i) => {\n return {\n ...ev,\n target: targets[i],\n moveable: moveables[i],\n currentTarget: moveables[i],\n ...fillCSSObject({\n borderRadius: parentEvent.borderRadius,\n }, ev),\n };\n }),\n ...parentEvent,\n };\n triggerEvent(moveable, \"onRoundGroup\", nextParams);\n });\n const result = this.dragControlEnd(moveable, e);\n\n if (!result) {\n return false;\n }\n const nextParams: OnRoundGroupEnd = {\n targets: moveable.props.targets!,\n events: events.map((ev, i) => {\n return {\n ...ev,\n target: targets[i],\n moveable: moveables[i],\n currentTarget: moveables[i],\n lastEvent: ev.datas?.lastEvent,\n };\n }),\n ...result,\n };\n\n triggerEvent(moveable, \"onRoundGroupEnd\", nextParams);\n return nextParams;\n },\n unset(moveable: MoveableManagerInterface) {\n moveable.state.borderRadiusState = \"\";\n },\n};\n/**\n * Whether to show and drag or double click border-radius, (default: false)\n * @name Moveable.Roundable#roundable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * });\n * moveable.on(\"roundStart\", e => {\n * console.log(e);\n * }).on(\"round\", e => {\n * e.target.style.borderRadius = e.borderRadius;\n * }).on(\"roundEnd\", e => {\n * console.log(e);\n * });\n */\n/**\n * % Can be used instead of the absolute px\n * @name Moveable.Roundable#roundRelative\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * });\n * moveable.on(\"roundStart\", e => {\n * console.log(e);\n * }).on(\"round\", e => {\n * e.target.style.borderRadius = e.borderRadius;\n * }).on(\"roundEnd\", e => {\n * console.log(e);\n * });\n */\n/**\n * Minimum number of round controls. It moves in proportion by control. [horizontal, vertical] (default: [0, 0])\n * @name Moveable.Roundable#minRoundControls\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * minRoundControls: [0, 0],\n * });\n * moveable.minRoundControls = [1, 0];\n */\n/**\n * Maximum number of round controls. It moves in proportion by control. [horizontal, vertical] (default: [4, 4])\n * @name Moveable.Roundable#maxRoundControls\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * maxRoundControls: [4, 4],\n * });\n * moveable.maxRoundControls = [1, 0];\n */\n/**\n * Whether you can add/delete round controls by double-clicking a line or control.\n * @name Moveable.Roundable#roundClickable\n * @default true\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * roundClickable: true,\n * });\n * moveable.roundClickable = false;\n */\n\n/**\n * Whether to show a round control that does not actually exist as a shadow\n * @name Moveable.Roundable#isDisplayShadowRoundControls\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * isDisplayShadowRoundControls: false,\n * });\n * moveable.isDisplayShadowRoundControls = true;\n */\n\n\n/**\n * The padding value of the position of the round control\n * @name Moveable.Roundable#roundPadding\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundPadding: 0,\n * });\n * moveable.roundPadding = 15;\n */\n\n/**\n * When drag start the clip area or controls, the `roundStart` event is called.\n * @memberof Moveable.Roundable\n * @event roundStart\n * @param {Moveable.Roundable.OnRoundStart} - Parameters for the `roundStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * });\n * moveable.on(\"roundStart\", e => {\n * console.log(e);\n * }).on(\"round\", e => {\n * e.target.style.borderRadius = e.borderRadius;\n * }).on(\"roundEnd\", e => {\n * console.log(e);\n * });\n */\n\n\n/**\n * When drag or double click the border area or controls, the `round` event is called.\n * @memberof Moveable.Roundable\n * @event round\n * @param {Moveable.Roundable.OnRound} - Parameters for the `round` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * });\n * moveable.on(\"roundStart\", e => {\n * console.log(e);\n * }).on(\"round\", e => {\n * e.target.style.borderRadius = e.borderRadius;\n * }).on(\"roundEnd\", e => {\n * console.log(e);\n * });\n */\n\n\n/**\n * When drag end the border area or controls, the `roundEnd` event is called.\n * @memberof Moveable.Roundable\n * @event roundEnd\n * @param {Moveable.Roundable.onRoundEnd} - Parameters for the `roundEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * roundable: true,\n * roundRelative: false,\n * });\n * moveable.on(\"roundStart\", e => {\n * console.log(e);\n * }).on(\"round\", e => {\n * e.target.style.borderRadius = e.borderRadius;\n * }).on(\"roundEnd\", e => {\n * console.log(e);\n * });\n */\n\n\n/**\n * When drag start the clip area or controls, the `roundGroupStart` event is called.\n * @memberof Moveable.Roundable\n * @event roundGroupStart\n * @param {Moveable.Roundable.OnRoundGroupStart} - Parameters for the `roundGroupStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * targets: [target1, target2, target3],\n * roundable: true,\n * });\n * moveable.on(\"roundGroupStart\", e => {\n * console.log(e.targets);\n * }).on(\"roundGroup\", e => {\n * e.events.forEach(ev => {\n * ev.target.style.cssText += ev.cssText;\n * });\n * }).on(\"roundGroupEnd\", e => {\n * console.log(e);\n * });\n */\n\n\n/**\n * When drag or double click the border area or controls, the `roundGroup` event is called.\n * @memberof Moveable.Roundable\n * @event roundGroup\n * @param {Moveable.Roundable.OnRoundGroup} - Parameters for the `roundGroup` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * targets: [target1, target2, target3],\n * roundable: true,\n * });\n * moveable.on(\"roundGroupStart\", e => {\n * console.log(e.targets);\n * }).on(\"roundGroup\", e => {\n * e.events.forEach(ev => {\n * ev.target.style.cssText += ev.cssText;\n * });\n * }).on(\"roundGroupEnd\", e => {\n * console.log(e);\n * });\n */\n\n\n/**\n * When drag end the border area or controls, the `roundGroupEnd` event is called.\n * @memberof Moveable.Roundable\n * @event roundGroupEnd\n * @param {Moveable.Roundable.onRoundGroupEnd} - Parameters for the `roundGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * targets: [target1, target2, target3],\n * roundable: true,\n * });\n * moveable.on(\"roundGroupStart\", e => {\n * console.log(e.targets);\n * }).on(\"roundGroup\", e => {\n * e.events.forEach(ev => {\n * ev.target.style.cssText += ev.cssText;\n * });\n * }).on(\"roundGroupEnd\", e => {\n * console.log(e);\n * });\n */\n","import {\n MoveableManagerInterface, BeforeRenderableProps,\n OnBeforeRenderStart, OnBeforeRender, OnBeforeRenderEnd,\n MoveableGroupInterface, OnBeforeRenderGroupStart,\n OnBeforeRenderGroup, OnBeforeRenderGroupEnd,\n} from \"../types\";\nimport { fillParams, triggerEvent } from \"../utils\";\nimport { convertMatrixtoCSS, createIdentityMatrix } from \"@scena/matrix\";\nimport { isArray, splitSpace } from \"@daybrush/utils\";\nimport { fillChildEvents } from \"../groupUtils\";\n\n\nfunction isIdentityMatrix(matrix: string, is3d?: boolean) {\n const n = is3d ? 4 : 3;\n const identityMatrix = createIdentityMatrix(n);\n const value = `matrix${is3d ? \"3d\" : \"\"}(${identityMatrix.join(\",\")})`;\n\n return matrix === value || matrix === `matrix(1,0,0,1,0,0)`;\n}\nexport default {\n isPinch: true,\n name: \"beforeRenderable\",\n props: [] as const,\n events: [\n \"beforeRenderStart\",\n \"beforeRender\",\n \"beforeRenderEnd\",\n \"beforeRenderGroupStart\",\n \"beforeRenderGroup\",\n \"beforeRenderGroupEnd\",\n ] as const,\n dragRelation: \"weak\",\n setTransform(moveable: MoveableManagerInterface, e: any) {\n const {\n is3d,\n targetMatrix,\n inlineTransform,\n } = moveable.state;\n const cssMatrix = is3d\n ? `matrix3d(${targetMatrix.join(\",\")})`\n : `matrix(${convertMatrixtoCSS(targetMatrix, true)})`;\n const startTransform = !inlineTransform || inlineTransform === \"none\" ? cssMatrix : inlineTransform;\n\n e.datas.startTransforms = isIdentityMatrix(startTransform, is3d) ? [] : splitSpace(startTransform);\n },\n resetStyle(e: any) {\n const datas = e.datas;\n\n datas.nextStyle = {};\n datas.nextTransforms = e.datas.startTransforms;\n datas.nextTransformAppendedIndexes = [];\n },\n fillDragStartParams(moveable: MoveableManagerInterface, e: any) {\n return fillParams(moveable, e, {\n setTransform: (transform: string | string[]) => {\n e.datas.startTransforms = isArray(transform) ? transform : splitSpace(transform);\n },\n isPinch: !!e.isPinch,\n });\n },\n fillDragParams(moveable: MoveableManagerInterface, e: any) {\n return fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n });\n },\n dragStart(moveable: MoveableManagerInterface, e: any) {\n this.setTransform(moveable, e);\n this.resetStyle(e);\n\n triggerEvent(moveable, `onBeforeRenderStart`, this.fillDragStartParams(moveable, e));\n },\n drag(moveable: MoveableManagerInterface, e: any) {\n if (!e.datas.startTransforms) {\n this.setTransform(moveable, e);\n }\n this.resetStyle(e);\n triggerEvent(moveable, `onBeforeRender`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n }));\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n if (!e.datas.startTransforms) {\n this.setTransform(moveable, e);\n this.resetStyle(e);\n }\n triggerEvent(moveable, `onBeforeRenderEnd`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n isDrag: e.isDrag,\n }));\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n this.dragStart(moveable, e);\n\n const events = fillChildEvents(moveable, \"beforeRenderable\", e);\n const moveables = moveable.moveables;\n const params = events.map((childEvent, i) => {\n const childMoveable = moveables[i];\n\n this.setTransform(childMoveable, childEvent);\n this.resetStyle(childEvent);\n\n return this.fillDragStartParams(childMoveable, childEvent);\n });\n triggerEvent(moveable, `onBeforeRenderGroupStart`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n targets: moveable.props.targets,\n setTransform() { },\n events: params,\n }));\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n this.drag(moveable, e);\n\n const events = fillChildEvents(moveable, \"beforeRenderable\", e);\n const moveables = moveable.moveables;\n const params = events.map((childEvent, i) => {\n const childMoveable = moveables[i];\n\n this.resetStyle(childEvent);\n return this.fillDragParams(childMoveable, childEvent);\n });\n triggerEvent(moveable, `onBeforeRenderGroup`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n targets: moveable.props.targets,\n events: params,\n }));\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n this.dragEnd(moveable, e);\n\n triggerEvent(moveable, `onBeforeRenderGroupEnd`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n isDrag: e.isDrag,\n targets: moveable.props.targets,\n }));\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n return this.dragStart(moveable, e);\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n return this.drag(moveable, e);\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n return this.dragEnd(moveable, e);\n },\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroupStart(moveable, e);\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroup(moveable, e);\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroupEnd(moveable, e);\n },\n} as const;\n","import { parse } from \"css-to-mat\";\nimport { getNextStyle, getNextTransformText, getNextTransforms } from \"../gesto/GestoUtils\";\nimport { fillChildEvents } from \"../groupUtils\";\nimport {\n MoveableManagerInterface, RenderableProps, OnRenderStart, OnRender,\n OnRenderEnd, MoveableGroupInterface,\n OnRenderGroupStart, OnRenderGroup, OnRenderGroupEnd,\n} from \"../types\";\nimport { triggerEvent, fillParams, fillCSSObject } from \"../utils\";\n\nexport default {\n name: \"renderable\",\n props: [] as const,\n events: [\n \"renderStart\",\n \"render\",\n \"renderEnd\",\n \"renderGroupStart\",\n \"renderGroup\",\n \"renderGroupEnd\",\n ] as const,\n dragRelation: \"weak\",\n dragStart(moveable: MoveableManagerInterface, e: any) {\n triggerEvent(moveable, `onRenderStart`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n }));\n },\n drag(moveable: MoveableManagerInterface, e: any) {\n triggerEvent(moveable, `onRender`, this.fillDragParams(moveable, e));\n },\n dragAfter(moveable: MoveableManagerInterface, e: any) {\n return this.drag(moveable, e);\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n triggerEvent(moveable, `onRenderEnd`, this.fillDragEndParams(moveable, e));\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n triggerEvent(moveable, `onRenderGroupStart`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n targets: moveable.props.targets,\n }));\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n const events = fillChildEvents(moveable, \"beforeRenderable\", e);\n const moveables = moveable.moveables;\n const params = events.map((childEvent, i) => {\n const childMoveable = moveables[i];\n\n return this.fillDragParams(childMoveable, childEvent);\n });\n\n triggerEvent(moveable, `onRenderGroup`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n targets: moveable.props.targets,\n transform: getNextTransformText(e),\n transformObject: {},\n ...fillCSSObject(getNextStyle(e)),\n events: params,\n },));\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n const events = fillChildEvents(moveable, \"beforeRenderable\", e);\n const moveables = moveable.moveables;\n const params = events.map((childEvent, i) => {\n const childMoveable = moveables[i];\n\n return this.fillDragEndParams(childMoveable, childEvent);\n });\n\n triggerEvent(moveable, `onRenderGroupEnd`, fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n isDrag: e.isDrag,\n targets: moveable.props.targets,\n events: params,\n transformObject: {},\n transform: getNextTransformText(e),\n ...fillCSSObject(getNextStyle(e)),\n }));\n },\n dragControlStart(moveable: MoveableManagerInterface, e: any) {\n return this.dragStart(moveable, e);\n },\n dragControl(moveable: MoveableManagerInterface, e: any) {\n return this.drag(moveable, e);\n },\n dragControlAfter(moveable: MoveableManagerInterface, e: any) {\n return this.dragAfter(moveable, e);\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n return this.dragEnd(moveable, e);\n },\n dragGroupControlStart(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroupStart(moveable, e);\n },\n dragGroupControl(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroup(moveable, e);\n },\n dragGroupControlEnd(moveable: MoveableGroupInterface, e: any) {\n return this.dragGroupEnd(moveable, e);\n },\n fillDragParams(moveable: MoveableManagerInterface, e: any) {\n const transformObject: Record = {};\n\n parse(getNextTransforms(e) || []).forEach(matrixInfo => {\n transformObject[matrixInfo.name] = matrixInfo.functionValue;\n });\n\n return fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n transformObject,\n transform: getNextTransformText(e),\n ...fillCSSObject(getNextStyle(e)),\n });\n },\n fillDragEndParams(moveable: MoveableManagerInterface, e: any) {\n const transformObject: Record = {};\n\n parse(getNextTransforms(e) || []).forEach(matrixInfo => {\n transformObject[matrixInfo.name] = matrixInfo.functionValue;\n });\n return fillParams(moveable, e, {\n isPinch: !!e.isPinch,\n isDrag: e.isDrag,\n transformObject,\n transform: getNextTransformText(e),\n ...fillCSSObject(getNextStyle(e)),\n });\n },\n} as const;\n","import { Able, MoveableManagerInterface, MoveableGroupInterface } from \"../types\";\nimport { getWindow, hasClass, IObject } from \"@daybrush/utils\";\nimport { convertDragDist, defaultSync, getRefTarget } from \"../utils\";\nimport Gesto, { GestoOptions } from \"gesto\";\nimport BeforeRenderable from \"../ables/BeforeRenderable\";\nimport Renderable from \"../ables/Renderable\";\n\nexport function triggerAble(\n moveable: MoveableManagerInterface,\n moveableAbles: Able[],\n eventOperations: string[],\n eventAffix: string,\n eventType: any,\n e: any,\n requestInstant?: boolean,\n) {\n // pre setting\n e.clientDistX = e.distX;\n e.clientDistY = e.distY;\n\n const isStart = eventType === \"Start\";\n const isEnd = eventType === \"End\";\n const isAfter = eventType === \"After\";\n const target = moveable.state.target;\n const isRequest = e.isRequest;\n const isControl = eventAffix.indexOf(\"Control\") > -1;\n\n if (\n !target\n || (isStart && isControl && !isRequest && moveable.areaElement === e.inputEvent.target)\n ) {\n return false;\n }\n const ables: Able[] = [...moveableAbles];\n\n if (isRequest) {\n const requestAble = e.requestAble;\n\n if (!ables.some(able => able.name === requestAble)) {\n ables.push(...moveable.props.ables!.filter(able => able.name === requestAble));\n }\n }\n if (!ables.length || ables.every(able => able.dragRelation)) {\n return false;\n }\n // \"drag\" \"Control\" \"After\"\n\n const inputEvent = e.inputEvent;\n let inputTarget: Element;\n\n if (isEnd && inputEvent) {\n inputTarget = document.elementFromPoint(e.clientX, e.clientY) || inputEvent.target;\n }\n let isDragStop = false;\n const stop = () => {\n isDragStop = true;\n e.stop?.();\n };\n const isFirstStart = isStart && (\n !moveable.targetGesto || !moveable.controlGesto\n || (!moveable.targetGesto.isFlag() || !moveable.controlGesto.isFlag())\n );\n\n if (isFirstStart) {\n moveable.updateRect(eventType, true, false);\n }\n\n\n // trigger ables\n const datas = e.datas;\n const gestoType = isControl ? \"controlGesto\" : \"targetGesto\";\n const prevGesto = moveable[gestoType];\n\n const trigger = (able: any, eventName: string, conditionName?: string) => {\n if (!(eventName in able) || prevGesto !== moveable[gestoType]) {\n return false;\n }\n const ableName = able.name;\n const nextDatas = datas[ableName] || (datas[ableName] = {});\n\n if (isStart) {\n nextDatas.isEventStart = !conditionName\n || !able[conditionName] || able[conditionName](moveable, e);\n }\n\n if (!nextDatas.isEventStart) {\n return false;\n }\n const result = able[eventName](moveable, {\n ...e,\n stop,\n datas: nextDatas,\n originalDatas: datas,\n inputTarget,\n });\n (moveable as any)._emitter.off();\n\n if (isStart && result === false) {\n nextDatas.isEventStart = false;\n }\n return result;\n };\n\n // unset ables for first drag start\n if (isFirstStart) {\n ables.forEach(able => {\n able.unset && able.unset(moveable);\n });\n }\n // BeforeRenderable\n trigger(BeforeRenderable, `drag${eventAffix}${eventType}`);\n\n let forceEndedCount = 0;\n let updatedCount = 0;\n\n eventOperations.forEach(eventOperation => {\n if (isDragStop) {\n return false;\n }\n const eventName = `${eventOperation}${eventAffix}${eventType}`;\n const conditionName = `${eventOperation}${eventAffix}Condition`;\n\n if (eventType === \"\" && !isRequest) {\n // Convert distX, distY\n convertDragDist(moveable.state, e);\n }\n // const isGroup = eventAffix.indexOf(\"Group\") > -1;\n let eventAbles: Able[] = ables.filter((able: any) => able[eventName]);\n\n eventAbles = eventAbles.filter((able, i) => {\n return able.name && eventAbles.indexOf(able) === i;\n });\n\n const results = eventAbles.filter(able => trigger(able, eventName, conditionName));\n const isUpdate = results.length;\n\n // end ables\n if (isDragStop) {\n ++forceEndedCount;\n }\n if (isUpdate) {\n ++updatedCount;\n }\n\n if (!isDragStop && isStart && eventAbles.length && !isUpdate) {\n forceEndedCount += eventAbles.filter(able => {\n const ableName = able.name;\n const nextDatas = datas[ableName];\n\n if (nextDatas.isEventStart) {\n if (able.dragRelation === \"strong\") {\n return false;\n }\n // stop drag\n return true;\n }\n // pre stop drag\n return false;\n }).length ? 1 : 0;\n }\n });\n\n\n if (!isAfter || updatedCount) {\n trigger(Renderable, `drag${eventAffix}${eventType}`);\n }\n // stop gesto condition\n const isForceEnd = prevGesto !== moveable[gestoType] || forceEndedCount === eventOperations.length;\n\n if (isEnd || isDragStop || isForceEnd) {\n moveable.state.gestos = {};\n\n if ((moveable as MoveableGroupInterface).moveables) {\n (moveable as MoveableGroupInterface).moveables.forEach(childMoveable => {\n childMoveable.state.gestos = {};\n });\n }\n ables.forEach(able => {\n able.unset && able.unset(moveable);\n });\n }\n if (isStart && !isForceEnd && !isRequest && updatedCount && moveable.props.preventDefault) {\n e?.preventDefault();\n }\n if (moveable.isUnmounted || isForceEnd) {\n return false;\n }\n if ((!isStart && updatedCount && !requestInstant) || isEnd) {\n const flushSync = moveable.props.flushSync || defaultSync;\n\n flushSync(() => {\n moveable.updateRect(isEnd ? eventType : \"\", true, false);\n moveable.forceUpdate();\n });\n\n }\n if (!isStart && !isEnd && !isAfter && updatedCount && !requestInstant) {\n triggerAble(moveable, moveableAbles, eventOperations, eventAffix, eventType + \"After\", e);\n }\n return true;\n}\n\nexport function checkMoveableTarget(moveable: MoveableManagerInterface, isControl?: boolean) {\n return (e: { inputEvent: Event }, target: EventTarget | null = e.inputEvent.target) => {\n const eventTarget = target as Element;\n const areaElement = moveable.areaElement;\n const dragTargetElement = (moveable as any)._dragTarget;\n\n if (!dragTargetElement || (!isControl && moveable.controlGesto?.isFlag())) {\n return false;\n }\n\n return eventTarget === dragTargetElement\n || dragTargetElement.contains(eventTarget)\n || eventTarget === areaElement\n || (!moveable.isMoveableElement(eventTarget) && !moveable.controlBox.contains(eventTarget))\n || hasClass(eventTarget, \"moveable-area\")\n || hasClass(eventTarget, \"moveable-padding\")\n || hasClass(eventTarget, \"moveable-edgeDraggable\");\n };\n}\n\nexport function getTargetAbleGesto(\n moveable: MoveableManagerInterface,\n moveableTarget: HTMLElement | SVGElement,\n eventAffix: string,\n) {\n const controlBox = moveable.controlBox;\n const targets: Array = [];\n const props = moveable.props;\n const dragArea = props.dragArea;\n const target = moveable.state.target;\n const dragTarget = props.dragTarget;\n\n targets.push(controlBox);\n\n if (!dragArea || dragTarget) {\n targets.push(moveableTarget);\n }\n\n if (!dragArea && dragTarget && target && moveableTarget !== target && props.dragTargetSelf) {\n targets.push(target);\n }\n const checkTarget = checkMoveableTarget(moveable);\n\n return getAbleGesto(moveable, targets, \"targetAbles\", eventAffix, {\n dragStart: checkTarget,\n pinchStart: checkTarget,\n });\n}\n\nexport function getControlAbleGesto(\n moveable: MoveableManagerInterface,\n eventAffix: string,\n) {\n const controlBox = moveable.controlBox;\n const targets: Array = [];\n\n targets.push(controlBox);\n\n const checkTarget = checkMoveableTarget(moveable, true);\n const checkControlTarget = (e: any, target: EventTarget | null = e.inputEvent.target) => {\n if (target === controlBox) {\n return true;\n }\n const result = checkTarget(e, target);\n\n return !result;\n };\n\n return getAbleGesto(moveable, targets, \"controlAbles\", eventAffix, {\n dragStart: checkControlTarget,\n pinchStart: checkControlTarget,\n });\n}\n\nexport function getAbleGesto(\n moveable: MoveableManagerInterface,\n target: HTMLElement | SVGElement | Array,\n ableType: string,\n eventAffix: string,\n conditionFunctions: IObject = {},\n) {\n const isTargetAbles = ableType === \"targetAbles\";\n const {\n pinchOutside,\n pinchThreshold,\n preventClickEventOnDrag,\n preventClickDefault,\n checkInput,\n dragFocusedInput,\n preventDefault = true,\n preventRightClick = true,\n preventWheelClick = true,\n dragContainer: dragContaienrOption,\n } = moveable.props;\n const dragContainer = getRefTarget(dragContaienrOption, true);\n\n const options: GestoOptions = {\n preventDefault,\n preventRightClick,\n preventWheelClick,\n container: dragContainer || getWindow(moveable.getControlBoxElement()),\n pinchThreshold,\n pinchOutside,\n preventClickEventOnDrag: isTargetAbles ? preventClickEventOnDrag : false,\n preventClickEventOnDragStart: isTargetAbles ? preventClickDefault : false,\n preventClickEventByCondition: isTargetAbles ? null : (e: MouseEvent) => {\n return moveable.controlBox.contains(e.target as Element);\n },\n checkInput: isTargetAbles ? checkInput : false,\n dragFocusedInput,\n };\n const gesto = new Gesto(target!, options);\n const isControl = eventAffix === \"Control\";\n\n [\"drag\", \"pinch\"].forEach(eventOperation => {\n [\"Start\", \"\", \"End\"].forEach(eventType => {\n\n gesto.on(`${eventOperation}${eventType}` as any, e => {\n const eventName = e.eventType;\n const isPinchScheduled = eventOperation === \"drag\" && e.isPinch;\n\n if (conditionFunctions[eventName] && !conditionFunctions[eventName](e)) {\n e.stop();\n return;\n }\n\n if (isPinchScheduled) {\n return;\n }\n const eventOperations = eventOperation === \"drag\" ? [eventOperation] : [\"drag\", eventOperation];\n const moveableAbles: Able[] = [...(moveable as any)[ableType]];\n const result = triggerAble(moveable, moveableAbles, eventOperations, eventAffix, eventType, e);\n\n if (!result) {\n e.stop();\n } else if (moveable.props.stopPropagation || (eventType === \"Start\" && isControl)) {\n e?.inputEvent?.stopPropagation();\n }\n });\n });\n });\n\n return gesto;\n}\n","import { Able, MoveableManagerInterface } from \"./types\";\n\nexport default class EventManager {\n private ables: Able[] = [];\n constructor(\n private target: HTMLElement | SVGElement | null,\n private moveable: MoveableManagerInterface | null,\n private eventName: string,\n ) {\n target!.addEventListener(eventName.toLowerCase(), this._onEvent);\n }\n public setAbles(ables: Able[]) {\n this.ables = ables;\n }\n public destroy() {\n this.target!.removeEventListener(this.eventName.toLowerCase(), this._onEvent);\n this.target = null;\n this.moveable = null;\n }\n private _onEvent = (e: Event) => {\n const eventName = this.eventName;\n const moveable = this.moveable!;\n\n if (moveable.state.disableNativeEvent) {\n return;\n }\n this.ables.forEach(able => {\n (able as any)[eventName](moveable, {\n inputEvent: e,\n });\n });\n }\n}\n","import { createIdentityMatrix, convertDimension, multiply, createOriginMatrix, ignoreDimension } from \"@scena/matrix\";\nimport { getCachedMatrixContainerInfo } from \"../store/Store\";\nimport { convert3DMatrixes, getOffsetInfo, getSVGOffset, makeMatrixCSS } from \"../utils\";\nimport { getMatrixStackInfo } from \"./getMatrixStackInfo\";\nimport { getDocumentBody } from \"@daybrush/utils\";\nimport { MatrixInfo } from \"../types\";\n\nexport interface MoveableElementMatrixInfo {\n hasZoom: boolean;\n hasFixed: boolean;\n originalRootMatrix: number[];\n rootMatrix: number[];\n beforeMatrix: number[];\n offsetMatrix: number[];\n allMatrix: number[];\n targetMatrix: number[];\n transformOrigin: number[];\n targetOrigin: number[];\n is3d: boolean;\n targetTransform: string;\n inlineTransform: string;\n offsetContainer: HTMLElement | null;\n offsetRootContainer: HTMLElement | null;\n matrixes: MatrixInfo[];\n}\n\nexport function calculateMatrixStack(\n target: SVGElement | HTMLElement,\n container?: SVGElement | HTMLElement | null,\n rootContainer: SVGElement | HTMLElement | null | undefined = container,\n isAbsolute3d?: boolean,\n // prevMatrix?: number[],\n // prevRootMatrix?: number[],\n // prevN?: number,\n): MoveableElementMatrixInfo {\n const {\n matrixes,\n is3d,\n targetMatrix: prevTargetMatrix,\n transformOrigin,\n targetOrigin,\n offsetContainer,\n hasFixed,\n zoom: containerZoom,\n } = getMatrixStackInfo(target, container); // prevMatrix\n\n const {\n matrixes: rootMatrixes,\n is3d: isRoot3d,\n offsetContainer: offsetRootContainer,\n zoom: rootZoom,\n } = getCachedMatrixContainerInfo(offsetContainer, rootContainer); // prevRootMatrix\n\n // if (rootContainer === document.body) {\n // console.log(offsetContainer, rootContainer, rootMatrixes);\n // }\n const isNext3d = isAbsolute3d || isRoot3d || is3d;\n const n = isNext3d ? 4 : 3;\n const isSVGGraphicElement = target.tagName.toLowerCase() !== \"svg\" && \"ownerSVGElement\" in target;\n let targetMatrix = prevTargetMatrix;\n // let allMatrix = prevMatrix ? convertDimension(prevMatrix, prevN!, n) : createIdentityMatrix(n);\n // let rootMatrix = prevRootMatrix ? convertDimension(prevRootMatrix, prevN!, n) : createIdentityMatrix(n);\n // let beforeMatrix = prevMatrix ? convertDimension(prevMatrix, prevN!, n) : createIdentityMatrix(n);\n let allMatrix = createIdentityMatrix(n);\n let rootMatrix = createIdentityMatrix(n);\n let beforeMatrix = createIdentityMatrix(n);\n let offsetMatrix = createIdentityMatrix(n);\n const length = matrixes.length;\n const nextRootMatrixes = rootMatrixes.map(info => {\n return {\n ...info,\n matrix: info.matrix ? [...info.matrix] : undefined,\n };\n }).reverse();\n matrixes.reverse();\n\n if (!is3d && isNext3d) {\n targetMatrix = convertDimension(targetMatrix, 3, 4);\n\n convert3DMatrixes(matrixes);\n }\n if (!isRoot3d && isNext3d) {\n convert3DMatrixes(nextRootMatrixes);\n }\n\n\n // rootMatrix = (...) -> container -> offset -> absolute -> offset -> absolute(targetMatrix)\n // rootMatrixBeforeOffset = lastOffsetMatrix -> (...) -> container\n // beforeMatrix = (... -> container -> offset -> absolute) -> offset -> absolute(targetMatrix)\n // offsetMatrix = (... -> container -> offset -> absolute -> offset) -> absolute(targetMatrix)\n\n nextRootMatrixes.forEach(info => {\n rootMatrix = multiply(rootMatrix, info.matrix!, n);\n });\n const originalRootContainer = rootContainer || getDocumentBody(target);\n const endContainer = nextRootMatrixes[0]?.target\n || getOffsetInfo(originalRootContainer, originalRootContainer, true).offsetParent;\n const rootMatrixBeforeOffset = nextRootMatrixes.slice(1).reduce((matrix, info) => {\n return multiply(matrix, info.matrix!, n);\n }, createIdentityMatrix(n));\n matrixes.forEach((info, i) => {\n if (length - 2 === i) {\n // length - 3\n beforeMatrix = allMatrix.slice();\n }\n if (length - 1 === i) {\n // length - 2\n offsetMatrix = allMatrix.slice();\n }\n\n // calculate for SVGElement\n if (!info.matrix) {\n const nextInfo = matrixes[i + 1];\n const offset = getSVGOffset(\n info,\n nextInfo,\n endContainer,\n n,\n multiply(rootMatrixBeforeOffset, allMatrix, n),\n );\n info.matrix = createOriginMatrix(offset, n);\n }\n allMatrix = multiply(allMatrix, info.matrix!, n);\n });\n const isMatrix3d = !isSVGGraphicElement && is3d;\n\n if (!targetMatrix) {\n targetMatrix = createIdentityMatrix(isMatrix3d ? 4 : 3);\n }\n const targetTransform = makeMatrixCSS(\n isSVGGraphicElement && targetMatrix.length === 16\n ? convertDimension(targetMatrix, 4, 3) : targetMatrix,\n isMatrix3d,\n );\n\n const originalRootMatrix = rootMatrix;\n rootMatrix = ignoreDimension(rootMatrix, n, n);\n\n return {\n hasZoom: containerZoom !== 1 || rootZoom !== 1,\n hasFixed,\n matrixes,\n rootMatrix,\n originalRootMatrix,\n beforeMatrix,\n offsetMatrix,\n allMatrix,\n targetMatrix,\n targetTransform,\n inlineTransform: target.style.transform,\n transformOrigin,\n targetOrigin,\n is3d: isNext3d,\n offsetContainer,\n offsetRootContainer,\n };\n}\n","import { createIdentityMatrix } from \"@scena/matrix\";\nimport { ElementSizes, MoveablePosition } from \"../types\";\nimport { getSize, getRotationRad } from \"../utils\";\nimport { calculateMatrixStack, MoveableElementMatrixInfo } from \"./calculateMatrixStack\";\nimport { calculateElementPosition } from \"./calculateElementPosition\";\n\nexport interface MoveableElementInfo extends MoveableElementMatrixInfo, MoveablePosition, ElementSizes {\n width: number;\n height: number;\n rotation: number;\n}\n\nexport function calculateElementInfo(\n target?: SVGElement | HTMLElement | null,\n container?: SVGElement | HTMLElement | null,\n rootContainer: HTMLElement | SVGElement | null | undefined = container,\n isAbsolute3d?: boolean,\n): MoveableElementInfo {\n let width = 0;\n let height = 0;\n let rotation = 0;\n let allResult: {} = {};\n\n const sizes = getSize(target);\n\n if (target) {\n width = sizes.offsetWidth;\n height = sizes.offsetHeight;\n }\n\n if (target) {\n const result = calculateMatrixStack(\n target,\n container,\n rootContainer,\n isAbsolute3d,\n // prevMatrix, prevRootMatrix, prevN,\n );\n\n const position = calculateElementPosition(\n result.allMatrix,\n result.transformOrigin,\n width, height,\n );\n allResult = {\n ...result,\n ...position,\n };\n const rotationPosition = calculateElementPosition(\n result.allMatrix, [50, 50], 100, 100,\n );\n rotation = getRotationRad([rotationPosition.pos1, rotationPosition.pos2], rotationPosition.direction);\n }\n const n = isAbsolute3d ? 4 : 3;\n\n return {\n hasZoom: false,\n width,\n height,\n rotation,\n ...sizes,\n originalRootMatrix: createIdentityMatrix(n),\n rootMatrix: createIdentityMatrix(n),\n beforeMatrix: createIdentityMatrix(n),\n offsetMatrix: createIdentityMatrix(n),\n allMatrix: createIdentityMatrix(n),\n targetMatrix: createIdentityMatrix(n),\n targetTransform: \"\",\n inlineTransform: \"\",\n transformOrigin: [0, 0],\n targetOrigin: [0, 0],\n is3d: !!isAbsolute3d,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n origin: [0, 0],\n pos1: [0, 0],\n pos2: [0, 0],\n pos3: [0, 0],\n pos4: [0, 0],\n direction: 1,\n hasFixed: false,\n offsetContainer: null,\n offsetRootContainer: null,\n matrixes: [],\n ...allResult,\n };\n}\n\n\nexport function getElementInfo(\n target: SVGElement | HTMLElement,\n container?: SVGElement | HTMLElement | null,\n rootContainer: SVGElement | HTMLElement | null | undefined = container,\n) {\n return calculateElementInfo(target, container, rootContainer, true);\n}\n","import { plus, getOrigin, multiply, minus } from \"@scena/matrix\";\nimport { getCachedClientRect, getCachedStyle } from \"../store/Store\";\nimport { MoveableClientRect, Writable } from \"../types\";\nimport {\n calculateInversePosition,\n getClientRect, getClientRectByPosition, getOffsetInfo, resetClientRect,\n getTransformOriginArray,\n} from \"../utils\";\nimport { calculateElementInfo, MoveableElementInfo } from \"./getElementInfo\";\nimport { calculateElementPosition } from \"./calculateElementPosition\";\n\n\nexport interface MoveableTargetInfo extends MoveableElementInfo {\n targetClientRect: MoveableClientRect;\n containerClientRect: MoveableClientRect;\n moveableClientRect: MoveableClientRect;\n rootContainerClientRect: MoveableClientRect;\n beforeDirection: 1 | -1;\n beforeOrigin: number[];\n offsetDelta: number[],\n originalBeforeOrigin: number[];\n target: HTMLElement | SVGElement | null | undefined;\n style: Partial>;\n}\n\nexport function getMoveableTargetInfo(\n moveableElement?: HTMLElement | null,\n target?: HTMLElement | SVGElement | null,\n container?: HTMLElement | SVGElement | null,\n parentContainer?: HTMLElement | SVGElement | null,\n rootContainer?: HTMLElement | SVGElement | null,\n requestStyles: Array = [],\n): MoveableTargetInfo {\n let beforeDirection: 1 | -1 = 1;\n let beforeOrigin = [0, 0];\n let targetClientRect = resetClientRect();\n let moveableClientRect = resetClientRect();\n let containerClientRect = resetClientRect();\n let rootContainerClientRect = resetClientRect();\n let offsetDelta = [0, 0];\n const style: Partial> = {};\n\n const result = calculateElementInfo(\n target, container!, rootContainer!,\n true,\n );\n if (target) {\n const getStyle = getCachedStyle(target);\n\n requestStyles.forEach(name => {\n (style as any)[name] = getStyle(name as any);\n });\n const n = result.is3d ? 4 : 3;\n const beforePosition = calculateElementPosition(\n result.offsetMatrix,\n plus(result.transformOrigin, getOrigin(result.targetMatrix, n)),\n result.width, result.height,\n );\n beforeDirection = beforePosition.direction;\n beforeOrigin = plus(\n beforePosition.origin,\n [beforePosition.left - result.left, beforePosition.top - result.top],\n );\n\n rootContainerClientRect = getClientRect(result.offsetRootContainer!);\n\n\n const offsetContainer = getOffsetInfo(parentContainer, parentContainer, true).offsetParent\n || result.offsetRootContainer!;\n\n if (result.hasZoom) {\n const absoluteTargetPosition = calculateElementPosition(\n multiply(result.originalRootMatrix, result.allMatrix),\n result.transformOrigin,\n result.width, result.height,\n );\n const absoluteContainerPosition = calculateElementPosition(\n result.originalRootMatrix,\n getTransformOriginArray(getCachedStyle(offsetContainer)(\"transformOrigin\")).map(pos => parseFloat(pos)),\n offsetContainer.offsetWidth, offsetContainer.offsetHeight,\n );\n targetClientRect = getClientRectByPosition(absoluteTargetPosition, rootContainerClientRect);\n containerClientRect = getClientRectByPosition(\n absoluteContainerPosition,\n rootContainerClientRect,\n offsetContainer,\n true,\n );\n\n if (moveableElement) {\n const left = absoluteTargetPosition.left;\n const top = absoluteTargetPosition.top;\n moveableClientRect = getClientRectByPosition({\n left,\n top,\n bottom: top,\n right: top,\n }, rootContainerClientRect);\n }\n } else {\n targetClientRect = getClientRect(target);\n containerClientRect = getCachedClientRect(offsetContainer);\n\n if (moveableElement) {\n moveableClientRect = getClientRect(moveableElement);\n }\n const {\n left: containerClientRectLeft,\n top: containerClientRectTop,\n clientLeft: containterClientLeft,\n clientTop: containerClientTop,\n } = containerClientRect;\n const clientDelta = [\n targetClientRect.left - containerClientRectLeft,\n targetClientRect.top - containerClientRectTop,\n ];\n\n offsetDelta = minus(\n calculateInversePosition(result.rootMatrix, clientDelta, 4),\n [containterClientLeft! + result.left, containerClientTop! + result.top],\n );\n }\n }\n\n return {\n targetClientRect,\n containerClientRect,\n moveableClientRect,\n rootContainerClientRect,\n beforeDirection,\n beforeOrigin,\n originalBeforeOrigin: beforeOrigin,\n target,\n style,\n offsetDelta,\n ...result,\n };\n}\n","import { minus } from \"@scena/matrix\";\nimport { getMinMaxs } from \"overlap-area\";\nimport { MoveableManagerState, PersistRectData } from \"../types\";\n\n\nexport function getPersistState(rect: PersistRectData): Partial | null {\n let {\n pos1,\n pos2,\n pos3,\n pos4,\n } = rect;\n if (!pos1 || !pos2 || !pos3 || !pos4) {\n return null;\n }\n const minPos = getMinMaxs([pos1!, pos2!, pos3!, pos4!]);\n const posDelta = [minPos.minX, minPos.minY];\n const origin = minus(rect.origin!, posDelta);\n\n pos1 = minus(pos1, posDelta);\n pos2 = minus(pos2, posDelta);\n pos3 = minus(pos3, posDelta);\n pos4 = minus(pos4, posDelta);\n return {\n ...rect,\n left: rect.left,\n top: rect.top,\n posDelta,\n pos1,\n pos2,\n pos3,\n pos4,\n origin,\n beforeOrigin: origin,\n // originalBeforeOrigin: origin,\n isPersisted: true,\n };\n}\n","import * as React from \"react\";\nimport { createElement } from \"react\";\nimport { PREFIX } from \"./consts\";\nimport {\n prefix,\n unsetGesto,\n getAbsolutePosesByState,\n getRect,\n filterAbles,\n equals,\n flat,\n groupByMap,\n calculatePadding,\n getAbsoluteRotation,\n defaultSync,\n getRefTarget,\n groupBy,\n unsetAbles,\n getPaddingBox,\n} from \"./utils\";\nimport Gesto from \"gesto\";\nimport { ref } from \"framework-utils\";\nimport {\n MoveableManagerProps, MoveableManagerState, Able,\n RectInfo, Requester, HitRect, MoveableManagerInterface,\n MoveableDefaultOptions,\n GroupableProps,\n MoveableRefType,\n} from \"./types\";\nimport {\n triggerAble, getTargetAbleGesto,\n checkMoveableTarget, getControlAbleGesto,\n} from \"./gesto/getAbleGesto\";\nimport { createOriginMatrix, multiplies, plus } from \"@scena/matrix\";\nimport {\n addClass, cancelAnimationFrame, find,\n getKeys, getWindow, IObject, isNode, removeClass, requestAnimationFrame,\n} from \"@daybrush/utils\";\nimport { renderLine } from \"./renderDirections\";\nimport { fitPoints, getAreaSize, getOverlapSize, isInside } from \"overlap-area\";\nimport EventManager from \"./EventManager\";\nimport { styled } from \"react-css-styled\";\nimport EventEmitter from \"@scena/event-emitter\";\nimport { getMoveableTargetInfo } from \"./utils/getMoveableTargetInfo\";\nimport { VIEW_DRAGGING } from \"./classNames\";\nimport { diff } from \"@egjs/list-differ\";\nimport { getPersistState } from \"./utils/persist\";\nimport { setStoreCache } from \"./store/Store\";\n\nexport default class MoveableManager\n extends React.PureComponent, MoveableManagerState> {\n public static defaultProps: Required = {\n dragTargetSelf: false,\n target: null,\n dragTarget: null,\n container: null,\n rootContainer: null,\n origin: true,\n parentMoveable: null,\n wrapperMoveable: null,\n isWrapperMounted: false,\n parentPosition: null,\n warpSelf: false,\n svgOrigin: \"\",\n dragContainer: null,\n useResizeObserver: false,\n useMutationObserver: false,\n preventDefault: true,\n preventRightClick: true,\n preventWheelClick: true,\n linePadding: 0,\n controlPadding: 0,\n ables: [],\n pinchThreshold: 20,\n dragArea: false,\n passDragArea: false,\n transformOrigin: \"\",\n className: \"\",\n zoom: 1,\n triggerAblesSimultaneously: false,\n padding: {},\n pinchOutside: true,\n checkInput: false,\n dragFocusedInput: false,\n groupable: false,\n hideDefaultLines: false,\n cspNonce: \"\",\n translateZ: 0,\n cssStyled: null,\n customStyledMap: {},\n props: {},\n stopPropagation: false,\n preventClickDefault: false,\n preventClickEventOnDrag: true,\n flushSync: defaultSync,\n firstRenderState: null,\n persistData: null,\n viewContainer: null,\n requestStyles: [],\n useAccuratePosition: false,\n };\n public state: MoveableManagerState = {\n container: null,\n gestos: {},\n renderLines: [\n [[0, 0], [0, 0]],\n [[0, 0], [0, 0]],\n [[0, 0], [0, 0]],\n [[0, 0], [0, 0]],\n ],\n renderPoses: [[0, 0], [0, 0], [0, 0], [0, 0]],\n disableNativeEvent: false,\n posDelta: [0, 0],\n ...getMoveableTargetInfo(null),\n };\n public renderState: Record = {};\n public enabledAbles: Able[] = [];\n public targetAbles: Able[] = [];\n public controlAbles: Able[] = [];\n public controlBox!: HTMLElement;\n public areaElement!: HTMLElement;\n public targetGesto!: Gesto;\n public controlGesto!: Gesto;\n public rotation = 0;\n public scale: number[] = [1, 1];\n public isMoveableMounted = false;\n public isUnmounted = false;\n\n public events: Record = {\n \"mouseEnter\": null,\n \"mouseLeave\": null,\n };\n\n protected _emitter: EventEmitter = new EventEmitter();\n\n protected _prevOriginalDragTarget: MoveableRefType | null = null;\n protected _originalDragTarget: MoveableRefType | null = null;\n\n protected _prevDragTarget: HTMLElement | SVGElement | null | undefined = null;\n protected _dragTarget: HTMLElement | SVGElement | null | undefined = null;\n\n protected _prevPropTarget: HTMLElement | SVGElement | null | undefined = null;\n protected _propTarget: HTMLElement | SVGElement | null | undefined = null;\n\n protected _prevDragArea = false;\n protected _isPropTargetChanged = false;\n protected _hasFirstTarget = false;\n\n private _reiszeObserver: ResizeObserver | null = null;\n private _observerId = 0;\n private _mutationObserver: MutationObserver | null = null;\n public _rootContainer: HTMLElement | null | undefined = null;\n private _viewContainer: HTMLElement | null | undefined = null;\n private _viewClassNames: string[] = [];\n private _store: Record = {};\n\n public render() {\n const props = this.props;\n const state = this.getState();\n const {\n parentPosition,\n className,\n target: propsTarget,\n zoom, cspNonce,\n translateZ,\n cssStyled: ControlBoxElement,\n groupable,\n linePadding,\n controlPadding,\n } = props;\n\n this._checkUpdateRootContainer();\n this.checkUpdate();\n this.updateRenderPoses();\n\n const [parentLeft, parentTop] = parentPosition as number[] || [0, 0];\n const {\n left,\n top,\n target: stateTarget,\n direction,\n hasFixed,\n offsetDelta,\n } = state;\n const groupTargets = (props as any).targets;\n const isDragging = this.isDragging();\n const ableAttributes: IObject = {};\n this.getEnabledAbles().forEach(able => {\n ableAttributes[`data-able-${able.name.toLowerCase()}`] = true;\n });\n const ableClassName = this._getAbleClassName();\n const isDisplay\n = (groupTargets && groupTargets.length && (stateTarget || groupable))\n || propsTarget\n || (!this._hasFirstTarget && this.state.isPersisted);\n const isVisible = this.controlBox || this.props.firstRenderState || this.props.persistData;\n const translate = [left - parentLeft, top - parentTop];\n\n if (!groupable && props.useAccuratePosition) {\n translate[0] += offsetDelta[0];\n translate[1] += offsetDelta[1];\n }\n const style: Record = {\n \"position\": hasFixed ? \"fixed\" : \"absolute\",\n \"display\": isDisplay ? \"block\" : \"none\",\n \"visibility\": isVisible ? \"visible\" : \"hidden\",\n \"transform\": `translate3d(${translate[0]}px, ${translate[1]}px, ${translateZ})`,\n \"--zoom\": zoom,\n \"--zoompx\": `${zoom}px`,\n };\n if (linePadding) {\n style[\"--moveable-line-padding\"] = linePadding;\n }\n if (controlPadding) {\n style[\"--moveable-control-padding\"] = controlPadding;\n }\n return (\n \n {this.renderAbles()}\n {this._renderLines()}\n \n );\n }\n public componentDidMount() {\n this.isMoveableMounted = true;\n this.isUnmounted = false;\n const props = this.props;\n const { parentMoveable, container } = props;\n\n\n this._checkUpdateRootContainer();\n this._checkUpdateViewContainer();\n this._updateTargets();\n this._updateNativeEvents();\n this._updateEvents();\n this.updateCheckInput();\n this._updateObserver(this.props);\n\n if (!container && !parentMoveable && !this.state.isPersisted) {\n this.updateRect(\"\", false, false);\n this.forceUpdate();\n }\n }\n public componentDidUpdate(prevProps: any) {\n this._checkUpdateRootContainer();\n this._checkUpdateViewContainer();\n this._updateNativeEvents();\n this._updateTargets();\n this._updateEvents();\n this.updateCheckInput();\n this._updateObserver(prevProps);\n }\n public componentWillUnmount() {\n this.isMoveableMounted = false;\n this.isUnmounted = true;\n this._emitter.off();\n this._reiszeObserver?.disconnect();\n this._mutationObserver?.disconnect();\n\n const viewContainer = this._viewContainer;\n\n if (viewContainer) {\n this._changeAbleViewClassNames([]);\n }\n unsetGesto(this, false);\n unsetGesto(this, true);\n\n const events = this.events;\n for (const name in events) {\n const manager = events[name];\n manager && manager.destroy();\n }\n }\n public getTargets(): Array {\n const target = this.props.target;\n return target ? [target] : [];\n }\n /**\n * Get the able used in MoveableManager.\n * @method Moveable#getAble\n * @param - able name\n */\n public getAble(ableName: string): T | undefined {\n const ables: Able[] = this.props.ables || [];\n\n return find(ables, able => able.name === ableName) as T;\n }\n public getContainer(): HTMLElement | SVGElement {\n const { parentMoveable, wrapperMoveable, container } = this.props;\n\n return container!\n || (wrapperMoveable && wrapperMoveable.getContainer())\n || (parentMoveable && parentMoveable.getContainer())\n || this.controlBox.parentElement!;\n }\n /**\n * Returns the element of the control box.\n * @method Moveable#getControlBoxElement\n */\n public getControlBoxElement(): HTMLElement {\n return this.controlBox;\n }\n /**\n * Target element to be dragged in moveable\n * @method Moveable#getDragElement\n */\n public getDragElement(): HTMLElement | SVGElement | null | undefined {\n return this._dragTarget;\n }\n /**\n * Check if the target is an element included in the moveable.\n * @method Moveable#isMoveableElement\n * @param - the target\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * window.addEventListener(\"click\", e => {\n * if (!moveable.isMoveableElement(e.target)) {\n * moveable.target = e.target;\n * }\n * });\n */\n public isMoveableElement(target: Element) {\n return target && (target.getAttribute?.(\"class\") || \"\").indexOf(PREFIX) > -1;\n }\n /**\n * You can drag start the Moveable through the external `MouseEvent`or `TouchEvent`. (Angular: ngDragStart)\n * @method Moveable#dragStart\n * @param - external `MouseEvent`or `TouchEvent`\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * document.body.addEventListener(\"mousedown\", e => {\n * if (!moveable.isMoveableElement(e.target)) {\n * moveable.dragStart(e);\n * }\n * });\n */\n public dragStart(e: MouseEvent | TouchEvent, target: EventTarget | null = e.target) {\n const targetGesto = this.targetGesto;\n const controlGesto = this.controlGesto;\n\n if (targetGesto && checkMoveableTarget(this)({ inputEvent: e }, target)) {\n if (!targetGesto.isFlag()) {\n targetGesto.triggerDragStart(e);\n }\n } else if (controlGesto && this.isMoveableElement(target as Element)) {\n if (!controlGesto.isFlag()) {\n controlGesto.triggerDragStart(e);\n }\n }\n return this;\n }\n /**\n * Hit test an element or rect on a moveable target.\n * (100% = 100)\n * @method Moveable#hitTest\n * @param - element or rect to test\n * @return - Get hit test rate (rate > 0 is hitted)\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * document.body.addEventListener(\"mousedown\", e => {\n * if (moveable.hitTest(e.target) > 0) {\n * console.log(\"hiited\");\n * }\n * });\n */\n public hitTest(el: Element | HitRect): number {\n const { target, pos1, pos2, pos3, pos4, targetClientRect } = this.state;\n\n if (!target) {\n return 0;\n }\n let rect: Required;\n\n if (isNode(el)) {\n const clientRect = el.getBoundingClientRect();\n\n rect = {\n left: clientRect.left,\n top: clientRect.top,\n width: clientRect.width,\n height: clientRect.height,\n };\n } else {\n rect = { width: 0, height: 0, ...el };\n }\n\n const {\n left: rectLeft,\n top: rectTop,\n width: rectWidth,\n height: rectHeight,\n } = rect;\n const points = fitPoints([pos1, pos2, pos4, pos3], targetClientRect);\n const size = getOverlapSize(points, [\n [rectLeft, rectTop],\n [rectLeft + rectWidth, rectTop],\n [rectLeft + rectWidth, rectTop + rectHeight],\n [rectLeft, rectTop + rectHeight],\n ]);\n const totalSize = getAreaSize(points);\n\n if (!size || !totalSize) {\n return 0;\n }\n\n return Math.min(100, size / totalSize * 100);\n }\n /**\n * Whether the coordinates are inside Moveable\n * @method Moveable#isInside\n * @param - x coordinate\n * @param - y coordinate\n * @return - True if the coordinate is in moveable or false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * document.body.addEventListener(\"mousedown\", e => {\n * if (moveable.isInside(e.clientX, e.clientY)) {\n * console.log(\"inside\");\n * }\n * });\n */\n public isInside(clientX: number, clientY: number) {\n const { target, pos1, pos2, pos3, pos4, targetClientRect } = this.state;\n\n if (!target) {\n return false;\n }\n return isInside([clientX, clientY], fitPoints([pos1, pos2, pos4, pos3], targetClientRect));\n }\n /**\n * If the width, height, left, and top of all elements change, update the shape of the moveable.\n * @method Moveable#updateRect\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * window.addEventListener(\"resize\", e => {\n * moveable.updateRect();\n * });\n */\n public updateRect(type?: \"Start\" | \"\" | \"End\", isTarget?: boolean, isSetState: boolean = true) {\n const props = this.props;\n const isSingle = !props.parentPosition && !props.wrapperMoveable;\n\n if (isSingle) {\n setStoreCache(true);\n }\n const parentMoveable = props.parentMoveable;\n const state = this.state;\n const target = (state.target || props.target) as HTMLElement | SVGElement;\n const container = this.getContainer();\n const rootContainer = parentMoveable\n ? (parentMoveable as any)._rootContainer\n : this._rootContainer;\n const nextState = getMoveableTargetInfo(\n this.controlBox,\n target,\n container,\n container,\n rootContainer || container,\n this._getRequestStyles(),\n );\n\n if (!target && this._hasFirstTarget && props.persistData) {\n const persistState = getPersistState(props.persistData);\n\n for (const name in persistState) {\n (nextState as any)[name] = (persistState as any)[name];\n }\n }\n\n if (isSingle) {\n setStoreCache();\n }\n this.updateState(\n nextState,\n parentMoveable ? false : isSetState,\n );\n }\n /**\n * Check if the moveable state is being dragged.\n * @method Moveable#isDragging\n * @param - If you want to check if able is dragging, specify ableName.\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * // false\n * console.log(moveable.isDragging());\n *\n * moveable.on(\"drag\", () => {\n * // true\n * console.log(moveable.isDragging());\n * });\n */\n public isDragging(ableName?: string) {\n const targetGesto = this.targetGesto;\n const controlGesto = this.controlGesto;\n\n if (targetGesto?.isFlag()) {\n if (!ableName) {\n return true;\n }\n const data = targetGesto.getEventData();\n\n return !!data[ableName]?.isEventStart;\n }\n if (controlGesto?.isFlag()) {\n if (!ableName) {\n return true;\n }\n const data = controlGesto.getEventData();\n\n return !!data[ableName]?.isEventStart;\n }\n return false;\n }\n /**\n * If the width, height, left, and top of the only target change, update the shape of the moveable.\n * Use `.updateRect()` method\n * @method Moveable#updateTarget\n * @deprecated\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.updateTarget();\n */\n public updateTarget(type?: \"Start\" | \"\" | \"End\") {\n this.updateRect(type, true);\n }\n /**\n * You can get the vertex information, position and offset size information of the target based on the container.\n * @method Moveable#getRect\n * @return - The Rect Info\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * const rectInfo = moveable.getRect();\n */\n public getRect(): RectInfo {\n const state = this.state;\n const poses = getAbsolutePosesByState(this.state);\n const [pos1, pos2, pos3, pos4] = poses;\n const rect = getRect(poses);\n const {\n width: offsetWidth,\n height: offsetHeight,\n } = state;\n const {\n width,\n height,\n left,\n top,\n } = rect;\n const statePos = [state.left, state.top];\n const origin = plus(statePos, state.origin);\n const beforeOrigin = plus(statePos, state.beforeOrigin);\n const transformOrigin = state.transformOrigin;\n\n return {\n width,\n height,\n left,\n top,\n pos1,\n pos2,\n pos3,\n pos4,\n offsetWidth,\n offsetHeight,\n beforeOrigin,\n origin,\n transformOrigin,\n rotation: this.getRotation(),\n };\n }\n /**\n * Get a manager that manages the moveable's state and props.\n * @method Moveable#getManager\n * @return - The Rect Info\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * const manager = moveable.getManager(); // real moveable class instance\n */\n public getManager(): MoveableManagerInterface {\n return this as any;\n }\n /**\n * You can stop the dragging currently in progress through a method from outside.\n * @method Moveable#stopDrag\n * @return - The Rect Info\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.stopDrag();\n */\n public stopDrag(type?: \"target\" | \"control\"): void {\n if (!type || type === \"target\") {\n const gesto = this.targetGesto;\n\n if (gesto?.isIdle() === false) {\n unsetAbles(this, false);\n }\n gesto?.stop();\n }\n if (!type || type === \"control\") {\n const gesto = this.controlGesto;\n\n if (gesto?.isIdle() === false) {\n unsetAbles(this, true);\n }\n gesto?.stop();\n }\n }\n public getRotation() {\n const {\n pos1,\n pos2,\n direction,\n } = this.state;\n\n return getAbsoluteRotation(pos1, pos2, direction);\n }\n /**\n * Request able through a method rather than an event.\n * At the moment of execution, requestStart is executed,\n * and then request and requestEnd can be executed through Requester.\n * @method Moveable#request\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Draggable.html#request|Draggable Requester}\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Resizable.html#request|Resizable Requester}\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Scalable.html#request|Scalable Requester}\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.Rotatable.html#request|Rotatable Requester}\n * @see {@link https://daybrush.com/moveable/release/latest/doc/Moveable.OriginDraggable.html#request|OriginDraggable Requester}\n * @param - ableName\n * @param - request to be able params.\n * @param - If isInstant is true, request and requestEnd are executed immediately.\n * @return - Able Requester. If there is no request in able, nothing will work.\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * // Instantly Request (requestStart - request - requestEnd)\n * moveable.request(\"draggable\", { deltaX: 10, deltaY: 10 }, true);\n *\n * // Start move\n * const requester = moveable.request(\"draggable\");\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.request({ deltaX: 10, deltaY: 10 });\n * requester.requestEnd();\n */\n public request(\n ableName: string,\n param: IObject = {},\n isInstant?: boolean,\n ): Requester {\n const self = this;\n const props = self.props;\n const manager = props.parentMoveable || props.wrapperMoveable || self;\n const allAbles = manager.props.ables!;\n const groupable = props.groupable;\n const requsetAble = find(allAbles, (able: Able) => able.name === ableName);\n\n if (this.isDragging() || !requsetAble || !requsetAble.request) {\n return {\n request() {\n return this;\n },\n requestEnd() {\n return this;\n },\n };\n }\n\n const ableRequester = requsetAble.request(self);\n const requestInstant = isInstant || param.isInstant;\n const ableType = ableRequester.isControl ? \"controlAbles\" : \"targetAbles\";\n const eventAffix = `${(groupable ? \"Group\" : \"\")}${ableRequester.isControl ? \"Control\" : \"\"}`;\n const moveableAbles: Able[] = [...manager[ableType]];\n\n const requester = {\n request(ableParam: IObject) {\n triggerAble(self, moveableAbles, [\"drag\"], eventAffix, \"\", {\n ...ableRequester.request(ableParam),\n requestAble: ableName,\n isRequest: true,\n }, requestInstant);\n return requester;\n },\n requestEnd() {\n triggerAble(self, moveableAbles, [\"drag\"], eventAffix, \"End\", {\n ...ableRequester.requestEnd(),\n requestAble: ableName,\n isRequest: true,\n }, requestInstant);\n return requester;\n },\n };\n\n triggerAble(self, moveableAbles, [\"drag\"], eventAffix, \"Start\", {\n ...ableRequester.requestStart(param),\n requestAble: ableName,\n isRequest: true,\n }, requestInstant);\n\n return requestInstant ? requester.request(param).requestEnd() : requester;\n }\n /**\n * moveable is the top level that manages targets\n * `Single`: MoveableManager instance\n * `Group`: MoveableGroup instance\n * `IndividualGroup`: MoveableIndividaulGroup instance\n * Returns leaf target MoveableManagers.\n */\n public getMoveables(): MoveableManagerInterface[] {\n return [this];\n }\n /**\n * Remove the Moveable object and the events.\n * @method Moveable#destroy\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n *\n * moveable.destroy();\n */\n public destroy(): void {\n this.componentWillUnmount();\n }\n public updateRenderPoses() {\n const state = this.getState();\n const props = this.props;\n const padding = props.padding;\n const {\n originalBeforeOrigin,\n transformOrigin,\n allMatrix, is3d,\n pos1, pos2, pos3, pos4,\n left: stateLeft,\n top: stateTop,\n isPersisted,\n } = state;\n const zoom = props.zoom || 1;\n\n if (!padding && zoom <= 1) {\n state.renderPoses = [\n pos1,\n pos2,\n pos3,\n pos4,\n ];\n state.renderLines = [\n [pos1, pos2],\n [pos2, pos4],\n [pos4, pos3],\n [pos3, pos1],\n ];\n return;\n }\n const {\n left,\n top,\n bottom,\n right,\n } = getPaddingBox(padding || {});\n const n = is3d ? 4 : 3;\n\n // const clipPathInfo = getClipPath(\n // props.target,\n // offsetWidth,\n // offsetHeight,\n // );\n\n // if (clipPathInfo) {\n // left -= Math.max(0, clipPathInfo.left);\n // top -= Math.max(0, clipPathInfo.top);\n // bottom -= Math.max(0, offsetHeight - clipPathInfo.bottom);\n // right -= Math.max(0, offsetWidth - clipPathInfo.right);\n // }\n\n let absoluteOrigin: number[] = [];\n\n if (isPersisted) {\n absoluteOrigin = transformOrigin;\n } else if (this.controlBox && props.groupable) {\n absoluteOrigin = originalBeforeOrigin;\n } else {\n absoluteOrigin = plus(originalBeforeOrigin, [stateLeft, stateTop]);\n }\n\n const nextMatrix = multiplies(\n n,\n createOriginMatrix(absoluteOrigin.map(v => -v), n),\n allMatrix,\n createOriginMatrix(transformOrigin, n),\n );\n\n const renderPos1 = calculatePadding(nextMatrix, pos1, [-left, -top], n);\n const renderPos2 = calculatePadding(nextMatrix, pos2, [right, -top], n);\n const renderPos3 = calculatePadding(nextMatrix, pos3, [-left, bottom], n);\n const renderPos4 = calculatePadding(nextMatrix, pos4, [right, bottom], n);\n\n state.renderPoses = [\n renderPos1,\n renderPos2,\n renderPos3,\n renderPos4,\n ];\n state.renderLines = [\n [renderPos1, renderPos2],\n [renderPos2, renderPos4],\n [renderPos4, renderPos3],\n [renderPos3, renderPos1],\n ];\n\n if (zoom) {\n const zoomOffset = zoom / 2;\n\n state.renderLines = [\n [\n calculatePadding(nextMatrix, pos1, [-left - zoomOffset, -top], n),\n calculatePadding(nextMatrix, pos2, [right + zoomOffset, -top], n),\n ],\n [\n calculatePadding(nextMatrix, pos2, [right, -top - zoomOffset], n),\n calculatePadding(nextMatrix, pos4, [right, bottom + zoomOffset], n),\n ],\n [\n calculatePadding(nextMatrix, pos4, [right + zoomOffset, bottom], n),\n calculatePadding(nextMatrix, pos3, [-left - zoomOffset, bottom], n),\n ],\n [\n calculatePadding(nextMatrix, pos3, [-left, bottom + zoomOffset], n),\n calculatePadding(nextMatrix, pos1, [-left, -top - zoomOffset], n),\n ],\n ];\n }\n }\n public checkUpdate() {\n this._isPropTargetChanged = false;\n const { target, container, parentMoveable } = this.props;\n const {\n target: stateTarget,\n container: stateContainer,\n } = this.state;\n\n if (!stateTarget && !target) {\n return;\n }\n this.updateAbles();\n\n const isTargetChanged = !equals(stateTarget, target);\n const isChanged = isTargetChanged || !equals(stateContainer, container);\n\n if (!isChanged) {\n return;\n }\n const moveableContainer = container || this.controlBox;\n\n if (moveableContainer) {\n this.unsetAbles();\n }\n this.updateState({ target, container });\n\n if (!parentMoveable && moveableContainer) {\n this.updateRect(\"End\", false, false);\n }\n this._isPropTargetChanged = isTargetChanged;\n }\n public waitToChangeTarget(): Promise {\n return new Promise(() => { });\n }\n public triggerEvent(\n name: string,\n e: any,\n ): any {\n const props = this.props;\n\n this._emitter.trigger(name, e);\n\n if (props.parentMoveable && e.isRequest && !e.isRequestChild) {\n return props.parentMoveable.triggerEvent(name, e, true);\n }\n\n const callback = (props as any)[name];\n\n return callback && callback(e);\n }\n public useCSS(tag: string, css: string) {\n const customStyleMap = this.props.customStyledMap as Record;\n\n const key = tag + css;\n\n if (!customStyleMap[key]) {\n customStyleMap[key] = styled(tag, css);\n }\n return customStyleMap[key];\n }\n public checkUpdateRect = () => {\n if (this.isDragging()) {\n return;\n }\n const parentMoveable = this.props.parentMoveable;\n\n if (parentMoveable) {\n (parentMoveable as any).checkUpdateRect();\n return;\n }\n cancelAnimationFrame(this._observerId);\n this._observerId = requestAnimationFrame(() => {\n if (this.isDragging()) {\n return;\n }\n this.updateRect();\n });\n }\n public getState(): MoveableManagerState {\n const props = this.props;\n if (props.target || (props as any).targets?.length) {\n this._hasFirstTarget = true;\n }\n const hasControlBox = this.controlBox;\n const persistData = props.persistData;\n const firstRenderState = props.firstRenderState;\n\n if (firstRenderState && !hasControlBox) {\n return firstRenderState;\n }\n if (!this._hasFirstTarget && persistData) {\n const persistState = getPersistState(persistData);\n\n if (persistState) {\n this.updateState(persistState, false);\n return this.state;\n }\n }\n (this.state as any).isPersisted = false;\n return this.state;\n }\n public updateSelectors() { }\n protected unsetAbles() {\n this.targetAbles.forEach(able => {\n if (able.unset) {\n able.unset(this);\n }\n });\n }\n protected updateAbles(\n ables: Able[] = this.props.ables!,\n eventAffix: string = \"\",\n ) {\n const props = this.props as any;\n const triggerAblesSimultaneously = props.triggerAblesSimultaneously;\n const enabledAbles = this.getEnabledAbles(ables);\n\n const dragStart = `drag${eventAffix}Start` as \"dragStart\";\n const pinchStart = `pinch${eventAffix}Start` as \"pinchStart\";\n const dragControlStart = `drag${eventAffix}ControlStart` as \"dragControlStart\";\n\n const targetAbles = filterAbles(enabledAbles, [dragStart, pinchStart], triggerAblesSimultaneously);\n const controlAbles = filterAbles(enabledAbles, [dragControlStart], triggerAblesSimultaneously);\n\n this.enabledAbles = enabledAbles;\n this.targetAbles = targetAbles;\n this.controlAbles = controlAbles;\n }\n protected updateState(nextState: any, isSetState?: boolean) {\n if (isSetState) {\n if (this.isUnmounted) {\n return;\n }\n this.setState(nextState);\n } else {\n const state = this.state;\n\n for (const name in nextState) {\n (state as any)[name] = nextState[name];\n }\n }\n }\n protected getEnabledAbles(ables: Able[] = this.props.ables!) {\n const props = this.props as any;\n\n return ables.filter(able => able && (\n (able.always && props[able.name] !== false)\n || props[able.name]));\n }\n protected renderAbles() {\n const props = this.props as any;\n const triggerAblesSimultaneously = props.triggerAblesSimultaneously;\n const Renderer = {\n createElement,\n };\n\n this.renderState = {};\n\n return groupByMap(flat(\n filterAbles(this.getEnabledAbles(), [\"render\"], triggerAblesSimultaneously).map(({ render }) => {\n return render!(this, Renderer) || [];\n })).filter(el => el), ({ key }) => key).map(group => group[0]);\n }\n protected updateCheckInput() {\n this.targetGesto && (this.targetGesto.options.checkInput = this.props.checkInput);\n }\n protected _getRequestStyles() {\n const styleNames = this.getEnabledAbles().reduce((names, able) => {\n const ableStyleNames = (able.requestStyle?.() ?? []) as Array;\n\n return [...names, ...ableStyleNames];\n }, [...(this.props.requestStyles || [])] as Array);\n\n\n return styleNames;\n }\n protected _updateObserver(prevProps: MoveableDefaultOptions) {\n this._updateResizeObserver(prevProps);\n this._updateMutationObserver(prevProps);\n }\n protected _updateEvents() {\n const hasTargetAble = this.targetAbles.length;\n const hasControlAble = this.controlAbles.length;\n const target = this._dragTarget;\n const isUnset = (!hasTargetAble && this.targetGesto)\n || this._isTargetChanged(true);\n\n if (isUnset) {\n unsetGesto(this, false);\n this.updateState({ gestos: {} });\n }\n if (!hasControlAble) {\n unsetGesto(this, true);\n }\n\n if (target && hasTargetAble && !this.targetGesto) {\n this.targetGesto = getTargetAbleGesto(this, target!, \"\");\n }\n if (!this.controlGesto && hasControlAble) {\n this.controlGesto = getControlAbleGesto(this, \"Control\");\n }\n }\n protected _updateTargets() {\n const props = this.props;\n\n this._prevPropTarget = this._propTarget;\n this._prevDragTarget = this._dragTarget;\n this._prevOriginalDragTarget = this._originalDragTarget;\n this._prevDragArea = props.dragArea!;\n\n this._propTarget = props.target;\n this._originalDragTarget = props.dragTarget || props.target;\n this._dragTarget = getRefTarget(this._originalDragTarget, true);\n\n }\n private _renderLines() {\n const props = this.props;\n const {\n zoom,\n hideDefaultLines,\n hideChildMoveableDefaultLines,\n parentMoveable,\n } = props as MoveableManagerProps;\n\n if (hideDefaultLines || (parentMoveable && hideChildMoveableDefaultLines)) {\n return [];\n }\n const state = this.getState();\n const Renderer = {\n createElement,\n };\n\n return state.renderLines.map((line, i) => {\n return renderLine(Renderer, \"\", line[0], line[1], zoom!, `render-line-${i}`);\n });\n }\n private _onPreventClick = (e: any) => {\n e.stopPropagation();\n e.preventDefault();\n // removeEvent(window, \"click\", this._onPreventClick, true);\n }\n private _isTargetChanged(useDragArea?: boolean) {\n const props = this.props;\n const nextTarget = props.dragTarget || props.target;\n const prevTarget = this._prevOriginalDragTarget;\n const prevDragArea = this._prevDragArea;\n const dragArea = props.dragArea;\n\n // check target without dragArea\n const isDragTargetChanged = !dragArea && prevTarget !== nextTarget;\n const isDragAreaChanged = (useDragArea || dragArea) && prevDragArea !== dragArea;\n\n return isDragTargetChanged || isDragAreaChanged || this._prevPropTarget != this._propTarget;\n }\n private _updateNativeEvents() {\n const props = this.props;\n const target = props.dragArea ? this.areaElement : this.state.target;\n const events = this.events;\n const eventKeys = getKeys(events);\n\n if (this._isTargetChanged()) {\n for (const eventName in events) {\n const manager = events[eventName];\n manager && manager.destroy();\n events[eventName] = null;\n }\n }\n if (!target) {\n return;\n }\n const enabledAbles = this.enabledAbles;\n eventKeys.forEach(eventName => {\n const ables = filterAbles(enabledAbles, [eventName] as any);\n const hasAbles = ables.length > 0;\n let manager = events[eventName];\n\n if (!hasAbles) {\n if (manager) {\n manager.destroy();\n events[eventName] = null;\n }\n return;\n }\n if (!manager) {\n manager = new EventManager(target, this, eventName);\n events[eventName] = manager;\n }\n manager.setAbles(ables);\n });\n }\n private _checkUpdateRootContainer() {\n const rootContainer = this.props.rootContainer;\n\n if (!this._rootContainer && rootContainer) {\n this._rootContainer = getRefTarget(rootContainer, true);\n }\n }\n private _checkUpdateViewContainer() {\n const viewContainerOption = this.props.viewContainer;\n\n if (!this._viewContainer && viewContainerOption) {\n this._viewContainer = getRefTarget(viewContainerOption, true);\n }\n const viewContainer = this._viewContainer;\n\n if (viewContainer) {\n this._changeAbleViewClassNames([\n ...this._getAbleViewClassNames(),\n this.isDragging() ? VIEW_DRAGGING : \"\",\n ]);\n }\n }\n private _changeAbleViewClassNames(classNames: string[]) {\n const viewContainer = this._viewContainer!;\n const nextClassNames = groupBy(\n classNames.filter(Boolean),\n el => el,\n ).map(([className]) => className);\n const prevClassNames = this._viewClassNames;\n\n const {\n removed,\n added,\n } = diff(prevClassNames, nextClassNames);\n\n removed.forEach(index => {\n removeClass(viewContainer, prevClassNames[index]);\n });\n added.forEach(index => {\n addClass(viewContainer, nextClassNames[index]);\n });\n\n this._viewClassNames = nextClassNames;\n\n }\n private _getAbleViewClassNames() {\n return (this.getEnabledAbles().map(able => {\n return (able.viewClassName?.(this) || \"\");\n }).join(\" \") + ` ${this._getAbleClassName(\"-view\")}`).split(/\\s+/g);\n }\n private _getAbleClassName(classPrefix = \"\") {\n const ables = this.getEnabledAbles();\n\n const targetGesto = this.targetGesto;\n const controlGesto = this.controlGesto;\n const targetGestoData: Record = targetGesto?.isFlag()\n ? targetGesto.getEventData() : {};\n const controlGestoData: Record = controlGesto?.isFlag()\n ? controlGesto.getEventData() : {};\n\n return ables.map(able => {\n const name = able.name;\n let className = able.className?.(this) || \"\";\n\n if (\n targetGestoData[name]?.isEventStart\n || controlGestoData[name]?.isEventStart\n ) {\n className += ` ${prefix(`${name}${classPrefix}-dragging`)}`;\n }\n return className.trim();\n }).filter(Boolean).join(\" \");\n }\n private _updateResizeObserver(prevProps: MoveableDefaultOptions) {\n const props = this.props;\n const target = props.target;\n const win = getWindow(this.getControlBoxElement());\n\n if (!win.ResizeObserver || !target || !props.useResizeObserver) {\n this._reiszeObserver?.disconnect();\n return;\n }\n\n if (prevProps.target === target && this._reiszeObserver) {\n return;\n }\n\n const observer = new win.ResizeObserver(this.checkUpdateRect);\n\n observer.observe(target!, {\n box: \"border-box\",\n });\n this._reiszeObserver = observer;\n }\n private _updateMutationObserver(prevProps: MoveableDefaultOptions) {\n const props = this.props;\n const target = props.target;\n const win = getWindow(this.getControlBoxElement());\n\n if (!win.MutationObserver || !target || !props.useMutationObserver) {\n this._mutationObserver?.disconnect();\n return;\n }\n\n if (prevProps.target === target && this._mutationObserver) {\n return;\n }\n\n const observer = new win.MutationObserver(records => {\n for (const mutation of records) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"style\") {\n this.checkUpdateRect();\n }\n }\n });\n\n observer.observe(target!, {\n attributes: true,\n });\n this._mutationObserver = observer;\n }\n}\n\n/**\n * The target to indicate Moveable Control Box.\n * @name Moveable#target\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n * moveable.target = document.querySelector(\".target\");\n */\n/**\n * Zooms in the elements of a moveable.\n * @name Moveable#zoom\n * @default 1\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n * moveable.zoom = 2;\n */\n\n/**\n * Whether the target size is detected and updated whenever it changes.\n * @name Moveable#useResizeObserver\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n * moveable.useResizeObserver = true;\n */\n\n/**\n * Resize, Scale Events at edges\n * @name Moveable#edge\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n * moveable.edge = true;\n */\n\n/**\n * You can specify the className of the moveable controlbox.\n * @name Moveable#className\n * @default \"\"\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * className: \"\",\n * });\n *\n * moveable.className = \"moveable1\";\n */\n\n/**\n * The target(s) to drag Moveable target(s)\n * @name Moveable#dragTarget\n * @default target\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body);\n * moveable.target = document.querySelector(\".target\");\n * moveable.dragTarget = document.querySelector(\".dragTarget\");\n */\n\n/**\n * `renderStart` event occurs at the first start of all events.\n * @memberof Moveable\n * @event renderStart\n * @param {Moveable.OnRenderStart} - Parameters for the `renderStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * });\n * moveable.on(\"renderStart\", ({ target }) => {\n * console.log(\"onRenderStart\", target);\n * });\n */\n\n/**\n * `render` event occurs before the target is drawn on the screen.\n * @memberof Moveable\n * @event render\n * @param {Moveable.OnRender} - Parameters for the `render` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * });\n * moveable.on(\"render\", ({ target }) => {\n * console.log(\"onRender\", target);\n * });\n */\n\n/**\n * `renderEnd` event occurs at the end of all events.\n * @memberof Moveable\n * @event renderEnd\n * @param {Moveable.OnRenderEnd} - Parameters for the `renderEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * });\n * moveable.on(\"renderEnd\", ({ target }) => {\n * console.log(\"onRenderEnd\", target);\n * });\n */\n\n/**\n * `renderGroupStart` event occurs at the first start of all events in group.\n * @memberof Moveable\n * @event renderGroupStart\n * @param {Moveable.OnRenderGroupStart} - Parameters for the `renderGroupStart` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * });\n * moveable.on(\"renderGroupStart\", ({ targets }) => {\n * console.log(\"onRenderGroupStart\", targets);\n * });\n */\n\n/**\n * `renderGroup` event occurs before the target is drawn on the screen in group.\n * @memberof Moveable\n * @event renderGroup\n * @param {Moveable.OnRenderGroup} - Parameters for the `renderGroup` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * });\n * moveable.on(\"renderGroup\", ({ targets }) => {\n * console.log(\"onRenderGroup\", targets);\n * });\n */\n\n/**\n * `renderGroupEnd` event occurs at the end of all events in group.\n * @memberof Moveable\n * @event renderGroupEnd\n * @param {Moveable.OnRenderGroupEnd} - Parameters for the `renderGroupEnd` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * });\n * moveable.on(\"renderGroupEnd\", ({ targets }) => {\n * console.log(\"onRenderGroupEnd\", targets);\n * });\n */\n","import { minus } from \"@scena/matrix\";\nimport { refs } from \"framework-utils\";\nimport MoveableManager from \"../MoveableManager\";\nimport { renderLine } from \"../renderDirections\";\nimport { Renderer, MoveableGroupInterface, GroupableProps } from \"../types\";\nimport { flat, watchValue } from \"../utils\";\n\n\n\nexport default {\n name: \"groupable\",\n props: [\n \"defaultGroupRotate\",\n \"useDefaultGroupRotate\",\n \"defaultGroupOrigin\",\n \"groupable\",\n \"groupableProps\",\n \"targetGroups\",\n \"hideChildMoveableDefaultLines\",\n ] as const,\n events: [] as const,\n render(moveable: MoveableGroupInterface, React: Renderer): any[] {\n const props = moveable.props;\n let targets: Array = props.targets || [];\n\n const { left, top, isPersisted } = moveable.getState();\n const zoom = props.zoom || 1;\n const renderGroupRects = moveable.renderGroupRects;\n let persistDatChildren = props.persistData?.children || [];\n\n if (isPersisted) {\n targets = persistDatChildren.map(() => null);\n } else {\n persistDatChildren = [];\n }\n const parentPosition = watchValue(\n moveable,\n \"parentPosition\",\n [left, top],\n styles => styles.join(\",\"),\n );\n const requestStyles = watchValue(\n moveable,\n \"requestStyles\",\n moveable.getRequestChildStyles(),\n styles => styles.join(\",\"),\n );\n\n moveable.moveables = moveable.moveables.slice(0, targets.length);\n return [\n ...targets.map((target, i) => {\n return \n key={\"moveable\" + i}\n ref={refs(moveable, \"moveables\", i)}\n target={target}\n origin={false}\n requestStyles={requestStyles}\n cssStyled={props.cssStyled}\n customStyledMap={props.customStyledMap}\n useResizeObserver={props.useResizeObserver}\n useMutationObserver={props.useMutationObserver}\n hideChildMoveableDefaultLines={props.hideChildMoveableDefaultLines}\n parentMoveable={moveable}\n parentPosition={[left, top]}\n persistData={persistDatChildren[i]}\n zoom={zoom}\n />;\n }),\n ...flat(renderGroupRects.map(({ pos1, pos2, pos3, pos4 }, i) => {\n const poses = [pos1, pos2, pos3, pos4];\n\n return [\n [0, 1],\n [1, 3],\n [3, 2],\n [2, 0],\n ].map(([from, to], j) => {\n return renderLine(\n React,\n \"\",\n minus(poses[from], parentPosition),\n minus(poses[to], parentPosition),\n zoom,\n `group-rect-${i}-${j}`,\n );\n });\n })),\n ];\n },\n};\n","import {\n MoveableManagerInterface, MoveableGroupInterface,\n ClickableProps, OnClick, OnClickGroup,\n} from \"../types\";\nimport { triggerEvent, fillParams } from \"../utils\";\nimport { findIndex } from \"@daybrush/utils\";\nimport { makeAble } from \"./AbleManager\";\n\nexport default makeAble(\"clickable\", {\n props: [\n \"clickable\",\n ] as const,\n events: [\n \"click\",\n \"clickGroup\",\n ] as const,\n always: true,\n dragRelation: \"weak\",\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dragStart() {\n return;\n },\n dragControlStart() {\n return;\n },\n dragGroupStart(moveable: MoveableManagerInterface, e: any) {\n e.datas.inputTarget = e.inputEvent && e.inputEvent.target;\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n const target = moveable.props.target!;\n const inputEvent = e.inputEvent;\n const inputTarget = e.inputTarget;\n const isMoveableElement = moveable.isMoveableElement(inputTarget);\n const containsElement = !isMoveableElement && moveable.controlBox.contains(inputTarget);\n\n if (\n !inputEvent || !inputTarget || e.isDrag\n || moveable.isMoveableElement(inputTarget)\n || containsElement\n // External event duplicate target or dragAreaElement\n ) {\n return;\n }\n const containsTarget = target.contains(inputTarget);\n\n triggerEvent(moveable, \"onClick\", fillParams(moveable, e, {\n isDouble: e.isDouble,\n inputTarget,\n isTarget: target === inputTarget,\n moveableTarget: moveable.props.target!,\n containsTarget,\n }));\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n const inputEvent = e.inputEvent;\n const inputTarget = e.inputTarget;\n\n if (\n !inputEvent || !inputTarget || e.isDrag\n || moveable.isMoveableElement(inputTarget)\n // External event duplicate target or dragAreaElement\n || e.datas.inputTarget === inputTarget\n ) {\n return;\n }\n const targets = moveable.props.targets!;\n let targetIndex = targets.indexOf(inputTarget);\n const isTarget = targetIndex > -1;\n let containsTarget = false;\n\n if (targetIndex === -1) {\n targetIndex = findIndex(targets, parentTarget => parentTarget.contains(inputTarget));\n containsTarget = targetIndex > -1;\n }\n\n triggerEvent(moveable, \"onClickGroup\", fillParams(moveable, e, {\n isDouble: e.isDouble,\n targets,\n inputTarget,\n targetIndex,\n isTarget,\n containsTarget,\n moveableTarget: targets[targetIndex],\n }));\n },\n dragControlEnd(moveable: MoveableManagerInterface, e: any) {\n this.dragEnd(moveable, e);\n },\n dragGroupControlEnd(moveable: MoveableManagerInterface, e: any) {\n this.dragEnd(moveable, e);\n },\n});\n\n/**\n * When you click on the element, the `click` event is called.\n * @memberof Moveable\n * @event click\n * @param {Moveable.OnClick} - Parameters for the `click` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: document.querySelector(\".target\"),\n * });\n * moveable.on(\"click\", ({ hasTarget, containsTarget, targetIndex }) => {\n * // If you click on an element other than the target and not included in the target, index is -1.\n * console.log(\"onClickGroup\", target, hasTarget, containsTarget, targetIndex);\n * });\n */\n\n/**\n * When you click on the element inside the group, the `clickGroup` event is called.\n * @memberof Moveable\n * @event clickGroup\n * @param {Moveable.OnClickGroup} - Parameters for the `clickGroup` event\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * });\n * moveable.on(\"clickGroup\", ({ inputTarget, isTarget, containsTarget, targetIndex }) => {\n * // If you click on an element other than the target and not included in the target, index is -1.\n * console.log(\"onClickGroup\", inputTarget, isTarget, containsTarget, targetIndex);\n * });\n */\n","import { hasClass } from \"@daybrush/utils\";\nimport { DraggableProps, MoveableGroupInterface, MoveableManagerInterface, Renderer } from \"../types\";\nimport { prefix } from \"../utils\";\nimport Draggable from \"./Draggable\";\nimport { makeAble } from \"./AbleManager\";\nimport { renderEdgeLines } from \"../renderDirections\";\n\nfunction getDraggableEvent(e: any) {\n let datas = e.originalDatas.draggable;\n if (!datas) {\n e.originalDatas.draggable = {};\n datas = e.originalDatas.draggable;\n }\n return { ...e, datas };\n}\nexport default makeAble(\"edgeDraggable\", {\n css: [\n `.edge.edgeDraggable.line {\ncursor: move;\n}`,\n ],\n render(moveable: MoveableManagerInterface, React: Renderer) {\n const props = moveable.props;\n const edge = props.edgeDraggable!;\n\n if (!edge) {\n return [];\n }\n return renderEdgeLines(\n React,\n \"edgeDraggable\",\n edge,\n moveable.getState().renderPoses,\n props.zoom!,\n );\n },\n dragCondition(moveable: MoveableManagerInterface, e: any) {\n const props = moveable.props;\n const target = e.inputEvent?.target;\n\n if (!props.edgeDraggable || !target) {\n return false;\n }\n\n return !props.draggable\n && hasClass(target, prefix(\"direction\"))\n && hasClass(target, prefix(\"edge\"))\n && hasClass(target, prefix(\"edgeDraggable\"));\n },\n dragStart(moveable: MoveableManagerInterface, e: any) {\n return Draggable.dragStart(moveable, getDraggableEvent(e));\n },\n drag(moveable: MoveableManagerInterface, e: any) {\n return Draggable.drag(moveable, getDraggableEvent(e));\n },\n dragEnd(moveable: MoveableManagerInterface, e: any) {\n return Draggable.dragEnd(moveable, getDraggableEvent(e));\n },\n dragGroupCondition(moveable: MoveableGroupInterface, e: any) {\n const props = moveable.props;\n const target = e.inputEvent?.target;\n\n if (!props.edgeDraggable || !target) {\n return false;\n }\n return !props.draggable && hasClass(target, prefix(\"direction\")) && hasClass(target, prefix(\"line\"));\n },\n dragGroupStart(moveable: MoveableGroupInterface, e: any) {\n return Draggable.dragGroupStart(moveable, getDraggableEvent(e));\n },\n dragGroup(moveable: MoveableGroupInterface, e: any) {\n return Draggable.dragGroup(moveable, getDraggableEvent(e));\n },\n dragGroupEnd(moveable: MoveableGroupInterface, e: any) {\n return Draggable.dragGroupEnd(moveable, getDraggableEvent(e));\n },\n unset(moveable: any) {\n return Draggable.unset(moveable);\n },\n});\n\n/**\n * Whether to move by dragging the edge line (default: false)\n * @name Moveable.Draggable#edgeDraggable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * draggable: true,\n * edgeDraggable: false,\n * });\n *\n * moveable.edgeDraggable = true;\n */\n","export default {\n name: \"individualGroupable\",\n props: [\n \"individualGroupable\",\n \"individualGroupableProps\",\n ] as const,\n events: [] as const,\n} as const;\n","import Pinchable from \"./Pinchable\";\nimport Rotatable from \"./Rotatable\";\nimport Draggable from \"./Draggable\";\nimport Resizable from \"./Resizable\";\nimport Scalable from \"./Scalable\";\nimport Warpable from \"./Warpable\";\nimport Snappable from \"./Snappable\";\nimport DragArea from \"./DragArea\";\nimport Origin from \"./Origin\";\nimport Scrollable from \"./Scrollable\";\nimport Default from \"./Default\";\nimport Padding from \"./Padding\";\nimport Clippable from \"./Clippable\";\nimport OriginDraggable from \"./OriginDraggable\";\nimport Roundable from \"./Roundable\";\nimport Groupable from \"./Groupable\";\nimport BeforeRenderable from \"./BeforeRenderable\";\nimport Renderable from \"./Renderable\";\nimport Clickable from \"./Clickable\";\nimport edgeDraggable from \"./edgeDraggable\";\nimport IndividualGroupable from \"./IndividualGroupable\";\nimport { camelize, pushSet } from \"@daybrush/utils\";\nimport { Able } from \"../types\";\n\nexport const MOVEABLE_ABLES = /*#__PURE__*/[\n BeforeRenderable,\n Default, Snappable, Pinchable,\n Draggable, edgeDraggable,\n Resizable, Scalable, Warpable, Rotatable,\n Scrollable, Padding, Origin,\n OriginDraggable,\n Clippable, Roundable, Groupable, IndividualGroupable,\n Clickable,\n DragArea,\n Renderable,\n] as const;\n\n\nexport const MOVEABLE_EVENTS = /*#__PURE__*/(MOVEABLE_ABLES as readonly Able[]).reduce((current, able) => {\n (able.events || []).forEach(name => {\n pushSet(current, name);\n });\n return current;\n}, [] as any[]) as Array;\n\nexport const MOVEABLE_PROPS = /*#__PURE__*/(MOVEABLE_ABLES as readonly Able[]).reduce((current, able) => {\n (able.props || []).forEach(name => {\n pushSet(current, name);\n });\n return current;\n}, [] as any[]) as Array;\n\n\nexport const MOVEABLE_REACT_EVENTS = /*#__PURE__*/MOVEABLE_EVENTS.map(name => {\n return camelize(`on ${name}`);\n}) as Array<`on${Capitalize}`>;\n\n","export function solveConstantsDistance(\n [a, b, c]: [number, number, number],\n pos: number[],\n) {\n return (a * pos[0] + b * pos[1] + c) / Math.sqrt(a * a + b * b);\n}\n\nexport function solveC(\n [a, b]: [number, number],\n pos: number[],\n) {\n // ax + by + c = 0\n // -ax -by;\n return -a * pos[0] - b * pos[1];\n}\n","import MoveableManager from \"./MoveableManager\";\nimport { GroupableProps, GroupRect, MoveableManagerInterface, MoveableTargetGroupsType, RectInfo } from \"./types\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\nimport { getControlAbleGesto, getTargetAbleGesto } from \"./gesto/getAbleGesto\";\nimport Groupable from \"./ables/Groupable\";\nimport { MIN_NUM, MAX_NUM, TINY_NUM } from \"./consts\";\nimport {\n getAbsolutePosesByState, equals, unsetGesto, rotatePosesInfo,\n convertTransformOriginArray,\n isDeepArrayEquals,\n sign,\n getRefTarget,\n} from \"./utils\";\nimport { minus, plus } from \"@scena/matrix\";\nimport { getIntersectionPointsByConstants, getMinMaxs } from \"overlap-area\";\nimport { find, isArray, throttle } from \"@daybrush/utils\";\nimport { getMoveableTargetInfo } from \"./utils/getMoveableTargetInfo\";\nimport { solveC, solveConstantsDistance } from \"./Snappable/utils\";\nimport { setStoreCache } from \"./store/Store\";\n\nfunction getMaxPos(poses: number[][][], index: number) {\n return Math.max(...poses.map(([pos1, pos2, pos3, pos4]) => {\n return Math.max(pos1[index], pos2[index], pos3[index], pos4[index]);\n }));\n}\nfunction getMinPos(poses: number[][][], index: number) {\n return Math.min(...poses.map(([pos1, pos2, pos3, pos4]) => {\n return Math.min(pos1[index], pos2[index], pos3[index], pos4[index]);\n }));\n}\n\n\nfunction getGroupRect(parentPoses: number[][][], rotation: number): GroupRect {\n let pos1 = [0, 0];\n let pos2 = [0, 0];\n let pos3 = [0, 0];\n let pos4 = [0, 0];\n let width = 0;\n let height = 0;\n\n if (!parentPoses.length) {\n return {\n pos1,\n pos2,\n pos3,\n pos4,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width,\n height,\n rotation,\n };\n }\n const fixedRotation = throttle(rotation, TINY_NUM);\n\n if (fixedRotation % 90) {\n const rad = fixedRotation / 180 * Math.PI;\n const a1 = Math.tan(rad);\n const a2 = -1 / a1;\n // ax = y // -ax + y = 0 // 0 => 1\n // -ax = y // ax + y = 0 // 0 => 3\n const a1MinMax = [MAX_NUM, MIN_NUM];\n const a1MinMaxPos = [[0, 0], [0, 0]];\n const a2MinMax = [MAX_NUM, MIN_NUM];\n const a2MinMaxPos = [[0, 0], [0, 0]];\n\n parentPoses.forEach(poses => {\n poses.forEach(pos => {\n\n // const b1 = pos[1] - a1 * pos[0];\n // const b2 = pos[1] - a2 * pos[0];\n\n const a1Dist = solveConstantsDistance([-a1, 1, 0], pos);\n const a2Dist = solveConstantsDistance([-a2, 1, 0], pos);\n\n if (a1MinMax[0] > a1Dist) {\n a1MinMaxPos[0] = pos;\n a1MinMax[0] = a1Dist;\n }\n if (a1MinMax[1] < a1Dist) {\n a1MinMaxPos[1] = pos;\n a1MinMax[1] = a1Dist;\n }\n if (a2MinMax[0] > a2Dist) {\n a2MinMaxPos[0] = pos;\n a2MinMax[0] = a2Dist;\n }\n if (a2MinMax[1] < a2Dist) {\n a2MinMaxPos[1] = pos;\n a2MinMax[1] = a2Dist;\n }\n });\n });\n\n const [a1MinPos, a1MaxPos] = a1MinMaxPos;\n const [a2MinPos, a2MaxPos] = a2MinMaxPos;\n\n const minHorizontalLine = [-a1, 1, solveC([-a1, 1], a1MinPos)];\n const maxHorizontalLine = [-a1, 1, solveC([-a1, 1], a1MaxPos)];\n\n const minVerticalLine = [-a2, 1, solveC([-a2, 1], a2MinPos)];\n const maxVerticalLine = [-a2, 1, solveC([-a2, 1], a2MaxPos)];\n\n [pos1, pos2, pos3, pos4] = [\n [minHorizontalLine, minVerticalLine],\n [minHorizontalLine, maxVerticalLine],\n [maxHorizontalLine, minVerticalLine],\n [maxHorizontalLine, maxVerticalLine],\n ].map(([line1, line2]) => getIntersectionPointsByConstants(line1, line2)[0]);\n\n width = a2MinMax[1] - a2MinMax[0];\n height = a1MinMax[1] - a1MinMax[0];\n } else {\n const minX = getMinPos(parentPoses, 0);\n const minY = getMinPos(parentPoses, 1);\n const maxX = getMaxPos(parentPoses, 0);\n const maxY = getMaxPos(parentPoses, 1);\n\n pos1 = [minX, minY];\n pos2 = [maxX, minY];\n pos3 = [minX, maxY];\n pos4 = [maxX, maxY];\n width = maxX - minX;\n height = maxY - minY;\n if (fixedRotation % 180) {\n // 0\n // 1 2\n // 3 4\n // 90\n // 3 1\n // 4 2\n // 180\n // 4 3\n // 2 1\n // 270\n // 2 4\n // 1 3\n // 1, 2, 3,4 = 3 1 4 2\n const changedX = [pos3, pos1, pos4, pos2];\n\n [pos1, pos2, pos3, pos4] = changedX;\n width = maxY - minY;\n height = maxX - minX;\n }\n\n }\n if (fixedRotation % 360 > 180) {\n // 1 2 4 3\n // 3 4 2 1\n const changedX = [pos4, pos3, pos2, pos1];\n\n [pos1, pos2, pos3, pos4] = changedX;\n }\n const { minX, minY, maxX, maxY } = getMinMaxs([pos1, pos2, pos3, pos4]);\n\n return {\n pos1,\n pos2,\n pos3,\n pos4,\n width,\n height,\n minX,\n minY,\n maxX,\n maxY,\n rotation,\n };\n}\ntype SelfGroup = Array;\ntype CheckedMoveableManager = { finded: boolean; manager: MoveableManager };\n\nfunction findMoveableGroups(\n moveables: CheckedMoveableManager[],\n childTargetGroups: MoveableTargetGroupsType,\n): SelfGroup {\n const groups = childTargetGroups.map(targetGroup => {\n if (isArray(targetGroup)) {\n const childMoveableGroups = findMoveableGroups(moveables, targetGroup);\n const length = childMoveableGroups.length;\n\n if (length > 1) {\n return childMoveableGroups;\n } else if (length === 1) {\n return childMoveableGroups[0];\n } else {\n return null;\n }\n } else {\n const checked = find(moveables, ({ manager }) => manager.props.target === targetGroup)!;\n\n if (checked) {\n checked.finded = true;\n return checked.manager;\n }\n return null;\n }\n }).filter(Boolean);\n\n if (groups.length === 1 && isArray(groups[0])) {\n return groups[0];\n }\n return groups;\n}\n\n/**\n * @namespace Moveable.Group\n * @description You can make targets moveable.\n */\nclass MoveableGroup extends MoveableManager {\n public static defaultProps = {\n ...MoveableManager.defaultProps,\n transformOrigin: [\"50%\", \"50%\"],\n groupable: true,\n dragArea: true,\n keepRatio: true,\n targets: [],\n defaultGroupRotate: 0,\n defaultGroupOrigin: \"50% 50%\",\n };\n public differ: ChildrenDiffer = new ChildrenDiffer();\n public moveables: MoveableManager[] = [];\n public transformOrigin = \"50% 50%\";\n public renderGroupRects: GroupRect[] = [];\n private _targetGroups: MoveableTargetGroupsType = [];\n private _hasFirstTargets = false;\n\n public componentDidMount() {\n super.componentDidMount();\n }\n public checkUpdate() {\n this._isPropTargetChanged = false;\n this.updateAbles();\n }\n public getTargets() {\n return this.props.targets!;\n }\n public updateRect(type?: \"Start\" | \"\" | \"End\", isTarget?: boolean, isSetState = true) {\n const state = this.state;\n\n if (!this.controlBox || state.isPersisted) {\n return;\n }\n setStoreCache(true);\n this.moveables.forEach(moveable => {\n moveable.updateRect(type, false, false);\n });\n\n const props = this.props;\n const moveables = this.moveables;\n const target = state.target! || props.target!;\n const checkeds = moveables.map(moveable => ({ finded: false, manager: moveable }));\n const targetGroups = this.props.targetGroups || [];\n const moveableGroups = findMoveableGroups(\n checkeds,\n targetGroups,\n );\n const useDefaultGroupRotate = props.useDefaultGroupRotate;\n\n moveableGroups.push(...checkeds.filter(({ finded }) => !finded).map(({ manager }) => manager));\n\n const renderGroupRects: GroupRect[] = [];\n const isReset = !isTarget || (type !== \"\" && props.updateGroup);\n let defaultGroupRotate = props.defaultGroupRotate || 0;\n\n if (!this._hasFirstTargets) {\n const persistedRoatation = props.persistData?.rotation;\n\n if (persistedRoatation != null) {\n defaultGroupRotate = persistedRoatation;\n }\n }\n\n function getMoveableGroupRect(group: SelfGroup, parentRotation: number, isRoot?: boolean): GroupRect {\n const posesRotations = group.map(moveable => {\n if (isArray(moveable)) {\n const rect = getMoveableGroupRect(moveable, parentRotation);\n const poses = [rect.pos1, rect.pos2, rect.pos3, rect.pos4];\n\n renderGroupRects.push(rect);\n return { poses, rotation: rect.rotation };\n } else {\n return {\n poses: getAbsolutePosesByState(moveable!.state),\n rotation: moveable!.getRotation(),\n };\n }\n });\n const rotations = posesRotations.map(({ rotation }) => rotation);\n\n let groupRotation = 0;\n const firstRotation = rotations[0];\n const isSameRotation = rotations.every(nextRotation => {\n return Math.abs(firstRotation - nextRotation) < 0.1;\n });\n\n if (isReset) {\n groupRotation = !useDefaultGroupRotate && isSameRotation ? firstRotation : defaultGroupRotate;\n } else {\n groupRotation = !useDefaultGroupRotate && !isRoot && isSameRotation ? firstRotation : parentRotation;\n }\n const groupPoses = posesRotations.map(({ poses }) => poses);\n const groupRect = getGroupRect(\n groupPoses,\n groupRotation,\n );\n\n return groupRect;\n }\n const rootGroupRect = getMoveableGroupRect(moveableGroups, this.rotation, true);\n\n if (isReset) {\n // reset rotataion\n this.rotation = rootGroupRect.rotation;\n this.transformOrigin = props.defaultGroupOrigin || \"50% 50%\";\n this.scale = [1, 1];\n }\n\n\n this._targetGroups = targetGroups;\n this.renderGroupRects = renderGroupRects;\n const transformOrigin = this.transformOrigin;\n const rotation = this.rotation;\n const scale = this.scale;\n const { width, height, minX, minY } = rootGroupRect;\n const posesInfo = rotatePosesInfo(\n [\n [0, 0],\n [width, 0],\n [0, height],\n [width, height],\n ],\n convertTransformOriginArray(transformOrigin, width, height),\n this.rotation / 180 * Math.PI,\n );\n\n const { minX: deltaX, minY: deltaY } = getMinMaxs(posesInfo.result);\n const rotateScale = ` rotate(${rotation}deg)`\n + ` scale(${sign(scale[0])}, ${sign(scale[1])})`;\n const transform = `translate(${-deltaX}px, ${-deltaY}px)${rotateScale}`;\n\n this.controlBox.style.transform\n = `translate3d(${minX}px, ${minY}px, ${this.props.translateZ || 0})`;\n\n target.style.cssText += `left:0px;top:0px;`\n + `transform-origin:${transformOrigin};`\n + `width:${width}px;height:${height}px;`\n + `transform: ${transform}`;\n state.width = width;\n state.height = height;\n\n const container = this.getContainer();\n const info = getMoveableTargetInfo(\n this.controlBox,\n target,\n this.controlBox,\n this.getContainer(),\n this._rootContainer || container,\n [],\n );\n const pos = [info.left!, info.top!];\n const [\n pos1,\n pos2,\n pos3,\n pos4,\n ] = getAbsolutePosesByState(info); // info.left + info.pos(1 ~ 4)\n\n const minPos = getMinMaxs([pos1, pos2, pos3, pos4]);\n const delta = [minPos.minX, minPos.minY];\n const direction = sign(scale[0] * scale[1]);\n\n info.pos1 = minus(pos1, delta);\n info.pos2 = minus(pos2, delta);\n info.pos3 = minus(pos3, delta);\n info.pos4 = minus(pos4, delta);\n // info.left = info.left + delta[0];\n // info.top = info.top + delta[1];\n info.left = minX - info.left! + delta[0];\n info.top = minY - info.top! + delta[1];\n info.origin = minus(plus(pos, info.origin!), delta);\n info.beforeOrigin = minus(plus(pos, info.beforeOrigin!), delta);\n info.originalBeforeOrigin = plus(pos, info.originalBeforeOrigin!);\n info.transformOrigin = minus(plus(pos, info.transformOrigin!), delta);\n target.style.transform\n = `translate(${-deltaX - delta[0]}px, ${-deltaY - delta[1]}px)`\n + rotateScale;\n\n setStoreCache();\n this.updateState(\n {\n ...info,\n posDelta: delta,\n direction,\n beforeDirection: direction,\n },\n isSetState,\n );\n }\n public getRect(): RectInfo {\n return {\n ...super.getRect(),\n children: this.moveables.map(child => child.getRect()),\n };\n }\n public triggerEvent(name: string, e: any, isManager?: boolean): any {\n if (isManager || name.indexOf(\"Group\") > -1) {\n return super.triggerEvent(name as any, e);\n } else {\n this._emitter.trigger(name, e);\n }\n }\n public getRequestChildStyles() {\n const styleNames = this.getEnabledAbles().reduce((names, able) => {\n const ableStyleNames = (able.requestChildStyle?.() ?? []) as Array;\n\n return [...names, ...ableStyleNames];\n }, [] as Array);\n\n\n return styleNames;\n }\n\n public getMoveables(): MoveableManagerInterface[] {\n return [...this.moveables];\n }\n protected updateAbles() {\n super.updateAbles([...this.props.ables!, Groupable], \"Group\");\n }\n protected _updateTargets() {\n super._updateTargets();\n this._originalDragTarget = this.props.dragTarget || this.areaElement;\n this._dragTarget = getRefTarget(this._originalDragTarget, true);\n }\n protected _updateEvents() {\n const state = this.state;\n const props = this.props;\n\n\n const prevTarget = this._prevDragTarget;\n const nextTarget = props.dragTarget || this.areaElement;\n const targets = props.targets!;\n const { added, changed, removed } = this.differ.update(targets);\n const isTargetChanged = added.length || removed.length;\n\n if (isTargetChanged || this._prevOriginalDragTarget !== this._originalDragTarget) {\n unsetGesto(this, false);\n unsetGesto(this, true);\n this.updateState({ gestos: {} });\n }\n if (prevTarget !== nextTarget) {\n state.target = null;\n }\n if (!state.target) {\n state.target = this.areaElement;\n this.controlBox.style.display = \"block\";\n }\n if (state.target) {\n if (!this.targetGesto) {\n this.targetGesto = getTargetAbleGesto(this, this._dragTarget!, \"Group\");\n }\n if (!this.controlGesto) {\n this.controlGesto = getControlAbleGesto(this, \"GroupControl\");\n }\n }\n const isContainerChanged = !equals(state.container, props.container);\n\n if (isContainerChanged) {\n state.container = props.container;\n }\n\n\n if (\n isContainerChanged\n || isTargetChanged\n || this.transformOrigin !== (props.defaultGroupOrigin || \"50% 50%\")\n || changed.length\n || targets.length && !isDeepArrayEquals(this._targetGroups, props.targetGroups || [])\n ) {\n this.updateRect();\n this._hasFirstTargets = true;\n }\n this._isPropTargetChanged = !!isTargetChanged;\n }\n protected _updateObserver() { }\n}\n\n/**\n * Sets the initial rotation of the group.\n * @name Moveable.Group#defaultGroupRotate\n * @default 0\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * defaultGroupRotate: 0,\n * });\n *\n * moveable.defaultGroupRotate = 40;\n */\n\n/**\n * Sets the initial origin of the group.\n * @name Moveable.Group#defaultGroupOrigin\n * @default 0\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * defaultGroupOrigin: \"50% 50%\",\n * });\n *\n * moveable.defaultGroupOrigin = \"20% 40%\";\n */\n\n\n/**\n * Whether to hide the line in child moveable for group corresponding to the rect of the target.\n * @name Moveable.Group#hideChildMoveableDefaultLines\n * @default false\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * hideChildMoveableDefaultLines: false,\n * });\n *\n * moveable.hideChildMoveableDefaultLines = true;\n */\nexport default MoveableGroup;\n","import { ref, refs } from \"framework-utils\";\nimport * as React from \"react\";\nimport MoveableManager from \"./MoveableManager\";\nimport { GroupableProps, IndividualGroupableProps, MoveableManagerInterface, RectInfo, Requester } from \"./types\";\nimport { prefix } from \"./utils\";\nimport { setStoreCache } from \"./store/Store\";\nimport { find } from \"@daybrush/utils\";\n\n/**\n * @namespace Moveable.IndividualGroup\n * @description Create targets individually, not as a group.Create targets individually, not as a group.\n */\nclass MoveableIndividualGroup extends MoveableManager {\n public moveables: MoveableManager[] = [];\n public render() {\n const props = this.props;\n const {\n cspNonce,\n cssStyled: ControlBoxElement,\n persistData,\n } = props;\n\n let targets: Array = props.targets || [];\n const length = targets.length;\n const canPersist = this.isUnmounted || !length;\n let persistDatChildren = persistData?.children ?? [];\n\n if (canPersist && !length && persistDatChildren.length) {\n targets = persistDatChildren.map(() => null);\n } else if (!canPersist) {\n persistDatChildren = [];\n }\n\n return \n {targets!.map((target, i) => {\n const individualProps = props.individualGroupableProps?.(target, i) ?? {};\n return ;\n })}\n ;\n }\n public componentDidMount() {}\n public componentDidUpdate() {}\n public getTargets() {\n return this.props.targets!;\n }\n public updateRect(type?: \"Start\" | \"\" | \"End\", isTarget?: boolean, isSetState: boolean = true) {\n setStoreCache(true);\n this.moveables.forEach(moveable => {\n moveable.updateRect(type, isTarget, isSetState);\n });\n setStoreCache();\n }\n public getRect(): RectInfo {\n return {\n ...super.getRect(),\n children: this.moveables.map(child => child.getRect()),\n };\n }\n public request(\n ableName: string,\n param: Record = {},\n isInstant?: boolean,\n ): Requester {\n const results = this.moveables.map(m => m.request(ableName, {...param, isInstant: false }, false));\n const requestInstant = isInstant || param.isInstant;\n const requester: Requester = {\n request(ableParam: Record) {\n results.forEach(r => r.request(ableParam));\n return this;\n },\n requestEnd() {\n results.forEach(r => r.requestEnd());\n return this;\n },\n };\n return requestInstant ? requester.request(param).requestEnd() : requester;\n }\n public dragStart(e: MouseEvent | TouchEvent, target: EventTarget | null = e.target) {\n const inputTarget = target as HTMLElement;\n const childMoveable = find(this.moveables, child => {\n const target = child.getTargets()[0];\n const controlBoxElement = child.getControlBoxElement();\n const dragElement = child.getDragElement();\n\n if (!target || !dragElement) {\n return false;\n }\n return dragElement === inputTarget || dragElement.contains(inputTarget)\n || (dragElement !== target && target === inputTarget || target.contains(inputTarget))\n || controlBoxElement === inputTarget || controlBoxElement.contains(inputTarget);\n });\n\n if (childMoveable) {\n childMoveable.dragStart(e, target);\n }\n return this;\n }\n public hitTest() {\n return 0;\n }\n public isInside() {\n return false;\n }\n public isDragging() {\n return false;\n }\n public getDragElement() {\n return null;\n }\n public getMoveables(): MoveableManagerInterface[] {\n return [...this.moveables];\n }\n public updateRenderPoses() { }\n public checkUpdate() { }\n public triggerEvent() { }\n protected updateAbles() { }\n protected _updateEvents() { }\n protected _updateObserver() {}\n}\n\n/**\n * Create targets individually, not as a group.\n * @name Moveable.IndividualGroup#individualGroupable\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [].slice.call(document.querySelectorAll(\".target\")),\n * individualGroupable: true,\n * });\n */\nexport default MoveableIndividualGroup;\n","import * as React from \"react\";\nimport {\n Able, MoveableInterface, GroupableProps, MoveableDefaultProps,\n IndividualGroupableProps, MoveableManagerInterface, MoveableRefTargetsResultType,\n MoveableTargetGroupsType, BeforeRenderableProps, RenderableProps, MoveableManagerState,\n} from \"./types\";\nimport MoveableManager from \"./MoveableManager\";\nimport MoveableGroup from \"./MoveableGroup\";\nimport { ref, withMethods, prefixCSS } from \"framework-utils\";\nimport { find, getKeys, IObject, isArray, isString } from \"@daybrush/utils\";\nimport { MOVEABLE_METHODS, PREFIX, MOVEABLE_CSS } from \"./consts\";\nimport Default from \"./ables/Default\";\nimport Groupable from \"./ables/Groupable\";\nimport DragArea from \"./ables/DragArea\";\nimport { styled } from \"react-css-styled\";\nimport { getRefTargets } from \"./utils\";\nimport IndividualGroupable from \"./ables/IndividualGroupable\";\nimport MoveableIndividualGroup from \"./MoveableIndividualGroup\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\n\nfunction getElementTargets(\n refTargets: MoveableRefTargetsResultType,\n selectorMap: IObject>,\n): Array {\n const elementTargets: Array = [];\n\n refTargets.forEach(target => {\n if (!target) {\n return;\n }\n if (isString(target)) {\n if (selectorMap[target]) {\n elementTargets.push(...selectorMap[target]);\n }\n return;\n }\n if (isArray(target)) {\n elementTargets.push(...getElementTargets(target, selectorMap));\n } else {\n elementTargets.push(target);\n }\n });\n\n return elementTargets;\n}\n\nfunction getTargetGroups(\n refTargets: MoveableRefTargetsResultType,\n selectorMap: IObject>,\n) {\n const targetGroups: MoveableTargetGroupsType = [];\n\n refTargets.forEach(target => {\n if (!target) {\n return;\n }\n if (isString(target)) {\n if (selectorMap[target]) {\n targetGroups.push(...selectorMap[target]);\n }\n return;\n }\n if (isArray(target)) {\n targetGroups.push(getTargetGroups(target, selectorMap));\n } else {\n targetGroups.push(target);\n }\n });\n\n return targetGroups;\n}\n\nfunction compareRefTargets(\n prevRefTargets: MoveableRefTargetsResultType,\n nextRefTargets: MoveableRefTargetsResultType,\n): boolean {\n return (prevRefTargets.length !== nextRefTargets.length) || prevRefTargets.some((target, i) => {\n const nextTarget = nextRefTargets[i];\n\n if (!target && !nextTarget) {\n return false;\n } else if (target != nextTarget) {\n if (isArray(target) && isArray(nextTarget)) {\n return compareRefTargets(target, nextTarget);\n }\n return true;\n }\n return false;\n });\n}\n\ntype DefaultAbles = GroupableProps & IndividualGroupableProps & BeforeRenderableProps & RenderableProps;\n\nexport class InitialMoveable\n extends React.PureComponent {\n public static defaultAbles: readonly Able[] = [];\n public static customStyledMap: Record = {};\n public static defaultStyled: any = null;\n public static makeStyled() {\n const cssMap: IObject = {};\n\n const ables = this.getTotalAbles();\n ables.forEach(({ css }: Able) => {\n if (!css) {\n return;\n }\n css.forEach(text => {\n cssMap[text] = true;\n });\n });\n const style = getKeys(cssMap).join(\"\\n\");\n\n this.defaultStyled = styled(\"div\", prefixCSS(PREFIX, MOVEABLE_CSS + style));\n }\n public static getTotalAbles(): Able[] {\n return [Default, Groupable, IndividualGroupable, DragArea, ...this.defaultAbles];\n }\n @withMethods(MOVEABLE_METHODS)\n public moveable!: MoveableManager | MoveableGroup | MoveableIndividualGroup;\n public refTargets: MoveableRefTargetsResultType = [];\n public selectorMap: IObject> = {};\n private _differ: ChildrenDiffer = new ChildrenDiffer();\n private _elementTargets: Array = [];\n private _tmpRefTargets: MoveableRefTargetsResultType = [];\n private _tmpSelectorMap: IObject> = {};\n private _onChangeTargets: (() => void) | null = null;\n public render() {\n const moveableContructor = (this.constructor as typeof InitialMoveable);\n\n if (!moveableContructor.defaultStyled) {\n moveableContructor.makeStyled();\n }\n const {\n ables: userAbles,\n props: userProps,\n ...props\n } = this.props;\n const [\n refTargets,\n nextSelectorMap,\n ] = this._updateRefs(true);\n const elementTargets = getElementTargets(refTargets, nextSelectorMap);\n\n let isGroup = elementTargets.length > 1;\n const totalAbles = moveableContructor.getTotalAbles();\n const ables = [\n ...totalAbles,\n ...(userAbles as any || []),\n ];\n const nextProps = {\n ...props,\n ...(userProps || {}),\n ables,\n cssStyled: moveableContructor.defaultStyled,\n customStyledMap: moveableContructor.customStyledMap,\n };\n\n this._elementTargets = elementTargets;\n\n let firstRenderState: MoveableManagerState | null = null;\n const prevMoveable = this.moveable;\n\n\n const persistData = props.persistData;\n\n if (persistData?.children) {\n isGroup = true;\n }\n // Even one child is treated as a group if individualGroupable is enabled. #867\n if (props.individualGroupable) {\n return ;\n }\n if (isGroup) {\n const targetGroups = getTargetGroups(refTargets, nextSelectorMap);\n\n // manager\n if (prevMoveable && !prevMoveable.props.groupable && !(prevMoveable.props as any).individualGroupable) {\n const target = prevMoveable.props.target!;\n\n if (target && elementTargets.indexOf(target) > -1) {\n firstRenderState = { ...prevMoveable.state };\n }\n }\n\n return ;\n } else {\n const target = elementTargets[0];\n // manager\n if (prevMoveable && (prevMoveable.props.groupable || (prevMoveable.props as any).individualGroupable)) {\n const moveables = (prevMoveable as MoveableGroup | MoveableIndividualGroup).moveables || [];\n const prevTargetMoveable = find(moveables, mv => mv.props.target === target);\n\n if (prevTargetMoveable) {\n firstRenderState = { ...prevTargetMoveable.state };\n }\n }\n\n return key=\"single\" ref={ref(this, \"moveable\")}\n {...nextProps}\n target={target}\n firstRenderState={firstRenderState} />;\n }\n }\n public componentDidMount() {\n this._checkChangeTargets();\n }\n public componentDidUpdate() {\n this._checkChangeTargets();\n }\n public componentWillUnmount() {\n this.selectorMap = {};\n this.refTargets = [];\n }\n /**\n * Get targets set in moveable through target or targets of props.\n * @method Moveable#getTargets\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: [targetRef, \".target\", document.querySelectorAll(\".target\")],\n * });\n *\n * console.log(moveable.getTargets());\n */\n public getTargets() {\n return this.moveable?.getTargets() ?? [];\n }\n /**\n * If the element list corresponding to the selector among the targets is changed, it is updated.\n * @method Moveable#updateSelectors\n * @example\n * import Moveable from \"moveable\";\n *\n * const moveable = new Moveable(document.body, {\n * target: \".target\",\n * });\n *\n * moveable.updateSelectors();\n */\n public updateSelectors() {\n this.selectorMap = {};\n this._updateRefs();\n this.forceUpdate();\n }\n /**\n * User changes target and waits for target to change.\n * @method Moveable#waitToChangeTarget\n * @story combination-with-other-components--components-selecto\n * @example\n * document.querySelector(\".target\").addEventListener(\"mousedown\", e => {\n * moveable.waitToChangeTarget().then(() => {\n * moveable.dragStart(e, e.currentTarget);\n * });\n * moveable.target = e.currentTarget;\n * });\n */\n public waitToChangeTarget(): Promise {\n // let resolvePromise: (e: OnChangeTarget) => void;\n\n // this._onChangeTargets = () => {\n // this._onChangeTargets = null;\n // resolvePromise({\n // moveable: this.getManager(),\n // targets: this._elementTargets,\n // });\n // };\n\n // return new Promise(resolve => {\n // resolvePromise = resolve;\n // });\n let resolvePromise: () => void;\n\n this._onChangeTargets = () => {\n this._onChangeTargets = null;\n resolvePromise();\n };\n\n return new Promise(resolve => {\n resolvePromise = resolve;\n });\n }\n public waitToChangeTargets(): Promise {\n return this.waitToChangeTarget();\n }\n public getManager(): MoveableManagerInterface {\n return this.moveable;\n }\n public getMoveables(): MoveableManagerInterface[] {\n return this.moveable.getMoveables();\n }\n public getDragElement(): HTMLElement | SVGElement | null | undefined {\n return this.moveable.getDragElement();\n }\n private _updateRefs(isRender?: boolean) {\n const prevRefTargets = this.refTargets;\n const nextRefTargets = getRefTargets((this.props.target || this.props.targets) as any);\n const isBrowser = typeof document !== \"undefined\";\n\n let isUpdate = compareRefTargets(prevRefTargets, nextRefTargets);\n const selectorMap = this.selectorMap;\n const nextSelectorMap: IObject> = {};\n\n this.refTargets.forEach(function updateSelectorMap(target) {\n if (isString(target)) {\n const selectorTarget = selectorMap[target];\n\n if (selectorTarget) {\n nextSelectorMap[target] = selectorMap[target];\n } else if (isBrowser) {\n isUpdate = true;\n nextSelectorMap[target] = [].slice.call(document.querySelectorAll(target));\n }\n } else if (isArray(target)) {\n target.forEach(updateSelectorMap);\n }\n });\n\n this._tmpRefTargets = nextRefTargets;\n this._tmpSelectorMap = nextSelectorMap;\n\n return [\n nextRefTargets,\n nextSelectorMap,\n !isRender && isUpdate,\n ] as const;\n }\n private _checkChangeTargets() {\n this.refTargets = this._tmpRefTargets;\n this.selectorMap = this._tmpSelectorMap;\n\n const { added, removed } = this._differ.update(this._elementTargets);\n const isTargetChanged = added.length || removed.length;\n\n if (isTargetChanged) {\n this.props.onChangeTargets?.({\n moveable: this.moveable,\n targets: this._elementTargets,\n });\n this._onChangeTargets?.();\n }\n const [\n refTargets,\n selectorMap,\n isUpdate,\n ] = this._updateRefs();\n\n this.refTargets = refTargets;\n this.selectorMap = selectorMap;\n\n if (isUpdate) {\n this.forceUpdate();\n }\n }\n}\nexport interface InitialMoveable\n extends React.PureComponent,\n MoveableInterface {\n setState(state: any, callback?: () => any): any;\n forceUpdate(callback?: () => any): any;\n}\n","import { MoveableProps, Able } from \"./types\";\nimport { MOVEABLE_ABLES } from \"./ables/consts\";\nimport { InitialMoveable } from \"./InitialMoveable\";\n\nexport default class Moveable extends InitialMoveable {\n public static defaultAbles: Able[] = MOVEABLE_ABLES as any;\n}\n","import React from \"react\";\r\nimport { SubmitHandler, useForm } from \"react-hook-form\";\r\nimport { UseMutateAsyncFunction } from \"@tanstack/react-query\";\r\nimport {\r\n useScreenshotRectangleStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand\";\r\nimport { CloseIcon } from \"../../Icons/gui-elements-icons\";\r\n\r\ntype prompt = {\r\n role: string;\r\n content: string;\r\n image?: string;\r\n};\r\n\r\nconst img =\r\n \"https://fastly.picsum.photos/id/519/400/400.jpg?hmac=gmNjAgyH3hznjcjYTuNOwjhBeOpuEGanXWGQMipWWJQ\";\r\n\r\nfunction adaptResultToBase64(res: Blob): Promise {\r\n let reader: FileReader = new FileReader();\r\n\r\n return new Promise((resolve, reject) => {\r\n reader.onloadend = () => {\r\n resolve(reader.result as string);\r\n };\r\n reader.onerror = () => {\r\n reject(\"Error reading file.\");\r\n };\r\n reader.readAsDataURL(res);\r\n });\r\n}\r\n\r\nasync function urlToBlob(url: string): Promise {\r\n const res = await fetch(url);\r\n const blob = await res.blob();\r\n return blob;\r\n}\r\n\r\nconst PromptSubmitter = (props: {\r\n mutateAsync: UseMutateAsyncFunction;\r\n visionMutateAsync: UseMutateAsyncFunction<\r\n any,\r\n Error,\r\n {\r\n image: string;\r\n prompt?: string | undefined;\r\n },\r\n unknown\r\n >;\r\n isPending: boolean;\r\n}) => {\r\n const { visionMutateAsync, mutateAsync } = props;\r\n\r\n const { register, handleSubmit, reset, watch, setValue } = useForm({\r\n defaultValues: { role: \"user\" },\r\n });\r\n\r\n const hasImage = watch(\"image\");\r\n\r\n const { setTakingScreen } = useWidePopupStore();\r\n\r\n const { image: screenshot, resetImage } = useScreenshotRectangleStore();\r\n\r\n const formRef = React.useRef(null);\r\n\r\n const onSubmit: SubmitHandler = (data) => {\r\n if (data.image) {\r\n visionMutateAsync({ image: data.image, prompt: data.content });\r\n reset();\r\n resetImage();\r\n } else {\r\n reset();\r\n mutateAsync(data.content);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (screenshot) {\r\n setValue(\"content\", \"Cosa vedi in questa immagine?\");\r\n\r\n setValue(\"image\", screenshot);\r\n }\r\n }, [screenshot, setValue]);\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n \r\n\r\n {/* */}\r\n
\r\n setTakingScreen(true)}\r\n disabled={props.isPending}\r\n >\r\n {screenGrabIcon}\r\n \r\n\r\n \r\n {!!hasImage && (\r\n \r\n \r\n {\r\n resetImage();\r\n setValue(\"image\", undefined);\r\n }}\r\n className=\"close-img-prompt\"\r\n >\r\n \r\n \r\n \r\n )}\r\n {/* */}\r\n \r\n );\r\n};\r\n\r\nexport default PromptSubmitter;\r\n\r\nconst sendIcon = (\r\n \r\n \r\n \r\n);\r\n\r\nconst imageIcon = (\r\n \r\n \r\n \r\n);\r\n\r\nconst screenGrabIcon = (\r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\n\r\n// TS\r\nimport { message } from \"./OpenAiWrapper\";\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { UseGetTour } from \"../../../api/calls/Queries\";\r\nimport { useGptHistoryStore } from \"../../../api/calls/OpenAi\";\r\n\r\nimport { useWidePopupStore } from \"../../../api/Zustand\";\r\n\r\nconst Messages = (props: { isPending: boolean; tourID: number }) => {\r\n const { messageHistory } = useGptHistoryStore();\r\n\r\n const { data: tourData } = UseGetTour(props.tourID);\r\n\r\n const { setIsOpen, target } = useWidePopupStore();\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const { resetHistory } = useGptHistoryStore();\r\n\r\n const setTextToPopup = React.useCallback(\r\n (text: string) => {\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...tourData,\r\n popups: tourData?.popups.map((pop) =>\r\n pop.id === target ? { ...pop, text: text } : pop\r\n ),\r\n });\r\n setIsOpen(false, undefined);\r\n return resetHistory();\r\n },\r\n [props.tourID, tourData, queryClient, setIsOpen, target, resetHistory]\r\n );\r\n return (\r\n \r\n \r\n {messageHistory.length === 0 && (\r\n \r\n Inizia una conversazione\r\n

\r\n )}\r\n\r\n {messageHistory.map((msg, index) => (\r\n \r\n ))}\r\n\r\n {props.isPending && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst loadingMessage: message = {\r\n content: \"\",\r\n role: \"assistant\",\r\n loading: true,\r\n};\r\n\r\nconst Message = (props: {\r\n message: message;\r\n fn?: (text: string) => void;\r\n index: number;\r\n messageHistory: message[];\r\n}) => {\r\n const fromApi = React.useMemo(() => {\r\n return props.message.role === \"assistant\";\r\n }, [props.message.role]);\r\n\r\n const isLast = props?.messageHistory?.length - 1 === props.index;\r\n\r\n const ref = React.useRef(null);\r\n\r\n const loadingRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (isLast) {\r\n ref.current?.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\r\n }\r\n }, [isLast]);\r\n\r\n React.useEffect(() => {\r\n if (loadingRef.current) {\r\n ref.current?.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\r\n }\r\n }, [loadingRef]);\r\n\r\n return (\r\n \r\n \r\n {/* {props.message.role} */} {fromApi ? \"Gpt 3.5\" : \"utente\"}\r\n \r\n
\r\n\r\n \r\n {!props.message.error && (\r\n \r\n {props.message.content}\r\n \r\n )}\r\n\r\n {props.message.loading && (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n {props.message.error && (\r\n \r\n \r\n {\r\n // @ts-expect-error\r\n props.message.error.response?.status\r\n }{\" \"}\r\n -{\" \"}\r\n {\r\n // @ts-expect-error\r\n props.message.error.response?.statusText\r\n }\r\n \r\n

\r\n {\r\n // @ts-expect-error\r\n props.message.error.response?.data\r\n }\r\n
\r\n )}\r\n {fromApi && !props.message.loading && !props.message.error && (\r\n {\r\n if (props.fn) props.fn(props.message.content);\r\n }}\r\n >\r\n {logo}\r\n \r\n )}\r\n \r\n\r\n {props.message.image && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Messages;\r\n\r\nconst logo = (\r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\nimport PromptSubmitter from \"./PromptSubmitter\";\r\nimport Messages from \"./Messages\";\r\nimport {\r\n useGptHistoryStore,\r\n useUbiApiChatCompletion,\r\n useUbiVision,\r\n} from \"../../../api/calls/OpenAi\";\r\nimport {\r\n useScreenshotRectangleStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand\";\r\n\r\nimport { RootState } from \"@react-three/fiber\";\r\n\r\nexport async function generateImage(\r\n webglRoot: RootState,\r\n w?: number\r\n): Promise {\r\n const canvas = document.createElement(\"canvas\");\r\n const pos = useScreenshotRectangleStore.getState().position;\r\n\r\n // const width = w ?? 500;\r\n canvas.width = pos.w;\r\n canvas.height = pos.h;\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n const blob = webglRoot.gl.domElement.toDataURL();\r\n\r\n const img = new Image();\r\n img.src = blob;\r\n\r\n return new Promise((resolve) => {\r\n img.onload = () => {\r\n const { naturalWidth, naturalHeight } = img;\r\n\r\n // ctx?.drawImage(\r\n // img,\r\n // naturalWidth / 2 - 250,\r\n // naturalHeight / 2 - 250,\r\n\r\n // naturalWidth,\r\n // naturalHeight,\r\n // 0,\r\n // 0,\r\n // naturalWidth,\r\n // naturalHeight\r\n // );\r\n\r\n // canvas.width = img.naturalWidth;\r\n\r\n // canvas.height = img.naturalHeight;\r\n\r\n // ctx?.drawImage(img, 0, 0);\r\n\r\n ctx?.drawImage(img, -pos.x, -pos.y);\r\n\r\n const imgUrl = canvas.toDataURL(\"img/jpg\");\r\n //\r\n\r\n resolve(imgUrl);\r\n ctx?.reset();\r\n };\r\n });\r\n}\r\n\r\nexport type message = {\r\n role: string;\r\n content: string;\r\n loading?: boolean;\r\n error?: Error;\r\n image?: string;\r\n};\r\n\r\nconst OpenAiWrapper = (props: { tourID: number }) => {\r\n const { mutateAsync, isPending, error } = useUbiApiChatCompletion();\r\n const { mutateAsync: visionMutateAsync, isPending: isVisionPending } =\r\n useUbiVision();\r\n\r\n const { resetHistory } = useGptHistoryStore();\r\n\r\n const { visionIsloading } = useWidePopupStore();\r\n\r\n const isLoading = isPending || visionIsloading || isVisionPending;\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n resetHistory()}\r\n >\r\n {reset}\r\n \r\n
\r\n \r\n {/* */}\r\n
\r\n );\r\n};\r\n\r\nexport default OpenAiWrapper;\r\n\r\nconst WrapperStyle: React.CSSProperties = {\r\n flex: 1,\r\n // paddingTop: 50,\r\n paddingBottom: 20,\r\n paddingRight: 100,\r\n paddingLeft: 100,\r\n boxSizing: \"border-box\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n};\r\n\r\nconst reset = (\r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\nimport Moveable from \"react-moveable\";\r\nimport {\r\n useScreenshotRectangleStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand\";\r\nimport { useUbiVision } from \"../../../api/calls/OpenAi\";\r\nimport { generateImage } from \"../OpenAi/OpenAiWrapper\";\r\nimport { useGLRendererStore } from \"../../../state management/zustand/gl-stores\";\r\n\r\nconst ScreenshotRectangle = (props: {\r\n el: React.RefObject;\r\n}) => {\r\n const draggableRef = React.useRef(null);\r\n\r\n const executeOnce = React.useRef(false);\r\n\r\n const { setPosition, position, setImage, resetImage } =\r\n useScreenshotRectangleStore();\r\n\r\n const { isTakingScreenshot, setVisionIsLoading } = useWidePopupStore();\r\n\r\n const { state } = useGLRendererStore();\r\n\r\n const { mutateAsync: mutateVision, isPending: visionIsPending } =\r\n useUbiVision();\r\n\r\n React.useEffect(() => {\r\n setVisionIsLoading(visionIsPending);\r\n }, [setVisionIsLoading, visionIsPending]);\r\n\r\n async function ImageToText() {\r\n if (state) {\r\n generateImage(state).then((image: string) => {\r\n // mutateVision({ image: image });\r\n\r\n setImage(image);\r\n widePopup.setTakingScreen(false);\r\n });\r\n }\r\n }\r\n\r\n const moveRectangle = React.useCallback(() => {\r\n const wholeWrapper = props.el.current?.getBoundingClientRect();\r\n const element = draggableRef.current?.getBoundingClientRect();\r\n let rectPosition: {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n bottomSpace: boolean;\r\n };\r\n\r\n if (wholeWrapper && element) {\r\n rectPosition = {\r\n x: element.x - wholeWrapper.x,\r\n y: element.y - wholeWrapper.y,\r\n h: element.height,\r\n w: element.width,\r\n bottomSpace: wholeWrapper.height - (element.height + element.y) > 50,\r\n };\r\n\r\n setDragging(false);\r\n\r\n return setPosition(rectPosition);\r\n }\r\n }, [props.el, setPosition]);\r\n\r\n React.useEffect(() => {\r\n if (executeOnce.current) {\r\n return;\r\n } else {\r\n const wholeWrapper = props.el.current?.getBoundingClientRect();\r\n\r\n const rectInitialSize = 200;\r\n\r\n if (wholeWrapper?.width && wholeWrapper.height) {\r\n setPosition({\r\n x: 50,\r\n y: 25,\r\n bottomSpace: true,\r\n h: rectInitialSize,\r\n w: rectInitialSize,\r\n });\r\n }\r\n executeOnce.current = true;\r\n }\r\n }, [props.el, setPosition]);\r\n\r\n const [dragging, setDragging] = React.useState(false);\r\n\r\n const widePopup = useWidePopupStore();\r\n return (\r\n <>\r\n \r\n \r\n {\r\n resetImage();\r\n widePopup.setTakingScreen(false);\r\n }}\r\n >\r\n Annulla\r\n \r\n ImageToText()}\r\n >\r\n Conferma\r\n \r\n \r\n \r\n\r\n {isTakingScreenshot && (\r\n {\r\n setDragging(true);\r\n e.target.style.transform = e.transform;\r\n }}\r\n onResize={(e) => {\r\n setDragging(true);\r\n e.target.style.width = `${e.width}px`;\r\n e.target.style.height = `${e.height}px`;\r\n e.target.style.transform = e.drag.transform;\r\n }}\r\n >\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ScreenshotRectangle;\r\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport { useFBO } from './useFBO.js';\n\nconst isFunction = node => typeof node === 'function';\nconst PerspectiveCamera = /* @__PURE__ */React.forwardRef(({\n envMap,\n resolution = 256,\n frames = Infinity,\n makeDefault,\n children,\n ...props\n}, ref) => {\n const set = useThree(({\n set\n }) => set);\n const camera = useThree(({\n camera\n }) => camera);\n const size = useThree(({\n size\n }) => size);\n const cameraRef = React.useRef(null);\n React.useImperativeHandle(ref, () => cameraRef.current, []);\n const groupRef = React.useRef(null);\n const fbo = useFBO(resolution);\n React.useLayoutEffect(() => {\n if (!props.manual) {\n cameraRef.current.aspect = size.width / size.height;\n }\n }, [size, props]);\n React.useLayoutEffect(() => {\n cameraRef.current.updateProjectionMatrix();\n });\n let count = 0;\n let oldEnvMap = null;\n const functional = isFunction(children);\n useFrame(state => {\n if (functional && (frames === Infinity || count < frames)) {\n groupRef.current.visible = false;\n state.gl.setRenderTarget(fbo);\n oldEnvMap = state.scene.background;\n if (envMap) state.scene.background = envMap;\n state.gl.render(state.scene, cameraRef.current);\n state.scene.background = oldEnvMap;\n state.gl.setRenderTarget(null);\n groupRef.current.visible = true;\n count++;\n }\n });\n React.useLayoutEffect(() => {\n if (makeDefault) {\n const oldCam = camera;\n set(() => ({\n camera: cameraRef.current\n }));\n return () => set(() => ({\n camera: oldCam\n }));\n }\n // The camera should not be part of the dependency list because this components camera is a stable reference\n // that must exchange the default, and clean up after itself on unmount.\n }, [cameraRef, makeDefault, set]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"perspectiveCamera\", _extends({\n ref: cameraRef\n }, props), !functional && children), /*#__PURE__*/React.createElement(\"group\", {\n ref: groupRef\n }, functional && children(fbo.texture)));\n});\n\nexport { PerspectiveCamera };\n","import * as React from 'react';\nimport * as THREE from 'three';\nimport { useThree } from '@react-three/fiber';\n\n// TODO: consume this from three >r154 when SemVer allows\n\n// 👇 uncomment when TS version supports function overloads\n// export function useFBO(settings?: FBOSettings)\nfunction useFBO( /** Width in pixels, or settings (will render fullscreen by default) */\nwidth, /** Height in pixels */\nheight, /**Settings */\nsettings) {\n const size = useThree(state => state.size);\n const viewport = useThree(state => state.viewport);\n const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n const _settings = (typeof width === 'number' ? settings : width) || {};\n const {\n samples = 0,\n depth,\n ...targetSettings\n } = _settings;\n const target = React.useMemo(() => {\n const target = new THREE.WebGLRenderTarget(_width, _height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n type: THREE.HalfFloatType,\n ...targetSettings\n });\n if (depth) {\n target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n }\n target.samples = samples;\n return target;\n }, []);\n React.useLayoutEffect(() => {\n target.setSize(_width, _height);\n if (samples) target.samples = samples;\n }, [samples, target, _width, _height]);\n React.useEffect(() => {\n return () => target.dispose();\n }, []);\n return target;\n}\n\nexport { useFBO };\n","import { create } from \"zustand\";\r\n\r\ntype volumeStoreType = {\r\n volume: number;\r\n setVolume: (number: number) => void;\r\n setVolumeXR: (number: number) => void;\r\n};\r\nexport const useVolumeStore = create()((set) => ({\r\n volume: 1,\r\n setVolumeXR: (vol: number) => {\r\n if (vol < 0.05) set({ volume: 0 });\r\n else if (vol > 0.95) set({ volume: 1 });\r\n else set({ volume: vol });\r\n },\r\n setVolume: (vol: number) => {\r\n set({ volume: vol });\r\n },\r\n}));\r\n\r\ntype zoomStore = {\r\n zoom: number;\r\n setZoom: (e: React.WheelEvent) => void;\r\n};\r\n\r\nexport const useZoomStore = create()((set, get) => ({\r\n zoom: 50,\r\n setZoom: (e: React.WheelEvent) => {\r\n let zoom = get().zoom;\r\n\r\n if (Math.sign(e.deltaY) === -1) {\r\n if (zoom <= 15) return;\r\n else set({ zoom: zoom - 4 });\r\n } else {\r\n if (zoom >= 90) set({ zoom: 90 });\r\n else set({ zoom: zoom + 4 });\r\n }\r\n },\r\n}));\r\n","import { PerspectiveCamera } from \"@react-three/drei\";\r\nimport { Scene } from \"../../Types\";\r\nimport { useSceneStore } from \"../../api/Zustand\";\r\nimport { useZoomStore } from \"../../state management/zustand/common-stores\";\r\n\r\nconst Camera = (props: { zoom?: number; scene?: Scene }) => {\r\n const { scene: currentScene } = useSceneStore();\r\n\r\n const { zoom } = useZoomStore();\r\n\r\n const scene = props.scene || currentScene;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Camera;\r\n","import { useEffect, useRef, useState, useCallback } from \"react\";\r\nimport * as React from \"react\";\r\n\r\n// CSS TEST\r\n/* eslint import/no-webpack-loader-syntax: off */\r\n// @ts-ignore\r\nimport css from \"!raw-loader!./exp.css\";\r\n\r\n//QUERIES\r\n//\r\n\r\n//WEBGL\r\n//\r\nimport { Canvas } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\n//ICONS\r\n//\r\nimport { Hotspot, Scene, TourData } from \"../../../Types\";\r\nimport ExpHotspot from \"./Hotspots/ExpHotspot\";\r\nimport { UseAssetsQuery, UseGetTour } from \"../../../api/calls/Queries.ts\";\r\n\r\nimport * as BottomOverlay from \"./BottomOverlay.tsx\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport {\r\n editorExperienceStore,\r\n useCurrentSceneStore,\r\n useParametersStore,\r\n useSceneStore,\r\n useWidePopupStore,\r\n} from \"../../../api/Zustand.ts\";\r\nimport Overlay from \"./Overlay.tsx\";\r\nimport LoadingExp from \"../../common/LoadingExp.tsx\";\r\nimport WebGLSphere from \"../../common/WebGLSphere.tsx\";\r\nimport Spot from \"./Spot.tsx\";\r\nimport Controls from \"../../common/Controls.tsx\";\r\n\r\nimport ScreenshotRectangle from \"./ScreenshotRectangle.tsx\";\r\nimport { useGLRendererStore } from \"../../../state management/zustand/gl-stores.ts\";\r\nimport Camera from \"../../common/Camera.tsx\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile.ts\";\r\n\r\nfunction Experience() {\r\n const { tourID } = useParametersStore();\r\n\r\n const { data: tourData } = UseGetTour(tourID);\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { transition } = editorExperienceStore();\r\n\r\n // const handle = useFullScreenHandle();\r\n\r\n const el = useRef(null);\r\n\r\n const currentScene = React.useMemo(() => {\r\n return tourData?.scenes.find((one) => one.id === currentSceneID);\r\n }, [tourData?.scenes, currentSceneID]);\r\n\r\n return (\r\n // \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n {currentScene?.imageID || currentScene?.imageFull ? (\r\n \r\n ) : tourData?.scenes.length === 0 ? (\r\n getLanguageFile(\"experience.empty_tour\")\r\n ) : (\r\n getLanguageFile(\"experience.upload_pano\")\r\n )}\r\n
\r\n\r\n \r\n
\r\n //
\r\n );\r\n}\r\nexport default Experience;\r\n\r\nconst R3F = (props: { tourData: TourData; tourID: number }) => {\r\n const { tourData, tourID } = props;\r\n\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { scene, setScene } = useSceneStore();\r\n\r\n useEffect(() => {\r\n if (currentSceneID)\r\n setScene(\r\n tourData?.scenes.find((one: Scene) => one.id === currentSceneID)\r\n );\r\n }, [tourData?.scenes, currentSceneID, setScene]);\r\n\r\n //\r\n //ZOOM HANDLING\r\n //\r\n\r\n const [zoom, setZoom] = useState(\r\n 75 || tourData?.scenes.find((one: Scene) => one.id === currentSceneID)?.fov\r\n );\r\n\r\n const zoomHandling = useCallback(\r\n (e: React.WheelEvent) => {\r\n if (Math.sign(e.deltaY) === -1) {\r\n if (zoom <= 15) return;\r\n else setZoom(zoom - 4);\r\n } else {\r\n if (zoom >= 90) return;\r\n else setZoom(zoom + 4);\r\n }\r\n },\r\n [zoom]\r\n );\r\n\r\n //\r\n //COMPASS ICON\r\n //\r\n\r\n const { setState } = useGLRendererStore();\r\n\r\n return (\r\n <>\r\n {\r\n console.debug(gl);\r\n setState(gl);\r\n }}\r\n onWheel={zoomHandling}\r\n flat\r\n linear\r\n dpr={1}\r\n >\r\n \r\n \r\n\r\n {scene && }\r\n\r\n {/* {scene && } */}\r\n {scene && }\r\n\r\n {scene?.hotspots && (\r\n \r\n )}\r\n
\r\n\r\n \r\n\r\n {scene?.hotspots?.some((spot: Hotspot) => spot.EDIT_POS === true) ? (\r\n <>\r\n
\r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst Hotspots = (props: {\r\n hotspots: Hotspot[];\r\n tourData: TourData;\r\n tourID: number;\r\n}) => {\r\n const { hotspots, tourData, tourID } = props;\r\n\r\n const { data: AudioList } = UseAssetsQuery(tourID, 3);\r\n const { isTakingScreenshot } = useWidePopupStore();\r\n\r\n const queryClient = useQueryClient();\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const onDragStart = React.useCallback(() => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData?.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs) =>\r\n hs.EDIT_POS === true\r\n ? {\r\n ...hs,\r\n DRAGGING: true,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n }, [queryClient, tourID, tourData, currentSceneID]);\r\n\r\n const handlePosChange = React.useCallback(\r\n async (pos: THREE.Vector3) => {\r\n return await queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData?.scenes.map((sc) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs) =>\r\n hs.EDIT_POS === true\r\n ? {\r\n ...hs,\r\n x: pos.x,\r\n y: pos.y,\r\n z: pos.z,\r\n pos: pos,\r\n DRAGGING: null,\r\n }\r\n : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n },\r\n\r\n [queryClient, tourData, currentSceneID, tourID]\r\n );\r\n\r\n if (!isTakingScreenshot)\r\n return (\r\n <>\r\n {hotspots.map((spot) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","export default \"/* HOTSPOTS */\\r\\n\\r\\ndiv.hotspot a {\\r\\n max-width: 175px;\\r\\n text-overflow: ellipsis;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n /* fontSize: \\\".85rem\\\",\\r\\n maxWidth: \\\"175px\\\",\\r\\n textOverflow: \\\"ellipsis\\\",\\r\\n overflow: \\\"hidden\\\",\\r\\n whiteSpace: \\\"nowrap\\\", */\\r\\n}\\r\\n\\r\\nsvg.popup {\\r\\n height: 4rem;\\r\\n width: 4rem;\\r\\n stroke: #282828;\\r\\n stroke-width: 25px;\\r\\n}\\r\\n\\r\\nsvg.waypoint {\\r\\n stroke-width: 2px;\\r\\n stroke: #282828;\\r\\n stroke-width: 4px;\\r\\n width: 3rem;\\r\\n height: 3rem;\\r\\n}\\r\\nsvg.waypoint.L {\\r\\n transform: rotate(180deg);\\r\\n}\\r\\n\\r\\nsvg.waypoint.T {\\r\\n transform: rotate(-90deg);\\r\\n}\\r\\nsvg.waypoint.B {\\r\\n transform: rotate(90deg);\\r\\n}\\r\\n\\r\\n/* OVERLAY */\\r\\n\\r\\ndiv.border-overlay {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n border: 5px solid #ff8700;\\r\\n pointer-events: none;\\r\\n box-sizing: border-box;\\r\\n pointer-events: none;\\r\\n z-index: 1000;\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 0;\\r\\n}\\r\\n\\r\\ndiv.transformation-overlay {\\r\\n user-select: none;\\r\\n font-weight: 700;\\r\\n text-align: center;\\r\\n background: #222;\\r\\n color: white;\\r\\n position: absolute;\\r\\n bottom: 20px;\\r\\n font-size: 1rem;\\r\\n left: 50%;\\r\\n padding: 5px;\\r\\n transform: translate(-50%);\\r\\n opacity: 0.6;\\r\\n}\\r\\n\\r\\ndiv.compass {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n color: white;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n padding: 20px;\\r\\n flex-direction: row;\\r\\n z-index: 250;\\r\\n height: 20px;\\r\\n width: 20px;\\r\\n gap: 10px;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\ndiv.play {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n right: 0;\\r\\n color: white;\\r\\n display: flex;\\r\\n padding: 15px 15px;\\r\\n flex-direction: row;\\r\\n z-index: 250;\\r\\n gap: 10px;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\ndiv.overlay svg {\\r\\n fill: white;\\r\\n animation: 150ms ease-in-out;\\r\\n animation-delay: 200ms;\\r\\n}\\r\\n\\r\\n@media (hover: hover) {\\r\\n div.overlay svg:hover {\\r\\n opacity: 0.75;\\r\\n }\\r\\n}\\r\\n\";","import { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useEffect } from \"react\";\r\nimport { UseGetTour, UseSaveTour } from \"../../api/calls/Queries.ts\";\r\n\r\nconst baseTourData = {\r\n title: \"Nuovo tour\",\r\n fov: 75,\r\n scenes: [],\r\n maps: [],\r\n groups: [\r\n {\r\n id: Math.floor(100000 + Math.random() * 900000),\r\n name: \"Primo gruppo\",\r\n scenes: [],\r\n mainColor: \"#bada55\",\r\n textColor: \"#222\",\r\n },\r\n ],\r\n popups: [],\r\n isNew: true,\r\n};\r\n\r\nfunction NewTourPage(props: { tourID: number }) {\r\n const { tourID } = props;\r\n const { data: tourData, refetch } = UseGetTour(tourID);\r\n\r\n const { mutateAsync: saveTourData, isPending: isSaving } = UseSaveTour();\r\n\r\n const queryClient = useQueryClient();\r\n\r\n useEffect(() => {\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...baseTourData,\r\n id: tourID,\r\n });\r\n }, [queryClient, tourID]);\r\n\r\n return (\r\n
\r\n {tourData && (\r\n {\r\n e.preventDefault();\r\n\r\n saveTourData(\r\n { ...tourData, isNew: undefined },\r\n {\r\n onSuccess: () => refetch(),\r\n }\r\n );\r\n }}\r\n >\r\n

Nuovo tour

\r\n
\r\n ID: {tourID}\r\n
\r\n
\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default NewTourPage;\r\n","import React from \"react\";\r\n\r\n//QUERY\r\n\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\n\r\n//ICONS\r\n\r\nimport { Hotspot, Scene } from \"../../Types\";\r\nimport { UseGetTour } from \"../../api/calls/Queries.ts\";\r\nimport IconSound from \"../Icons/IconSound.tsx\";\r\nimport { useGetQuiz } from \"../../api/calls/Quiz.ts\";\r\nimport {\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useMapEditorStore,\r\n useParametersStore,\r\n useWidePopupStore,\r\n} from \"../../api/Zustand.ts\";\r\n\r\nimport * as THREE from \"three\";\r\n\r\nimport { useRightSidePanelStore } from \"../../state management/zustand/editor-elements-stores.ts\";\r\nimport { useGLRendererStore } from \"../../state management/zustand/gl-stores.ts\";\r\nimport {\r\n GearIcon,\r\n GroupsIcon,\r\n Link,\r\n MapIcon,\r\n PopupAddIcon,\r\n QuizAddIcon,\r\n RightArrow,\r\n} from \"../Icons/left-side-bar-icons.tsx\";\r\nimport { getLanguageFile } from \"../common/GetLanguageFile.ts\";\r\n\r\nconst lookingAtVec = new THREE.Vector3();\r\ntype hsType = \"transition\" | \"link\" | \"quiz\" | \"popup\" | \"audio\";\r\n\r\nconst LeftSidePanel = () => {\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const { tourID } = useParametersStore();\r\n\r\n const camera = useGLRendererStore((state) => state.state?.camera);\r\n\r\n const { setEditingElem } = useEditingElementStore();\r\n\r\n const { data: tourData } = UseGetTour(tourID);\r\n // const { tourData } = useTourDataStore();\r\n\r\n const { data: QuizData } = useGetQuiz(tourID, tourData?.assignedQuizID);\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const mapEditor = useMapEditorStore();\r\n\r\n const rightPanel = useRightSidePanelStore();\r\n\r\n const currentScene = React.useMemo(() => {\r\n return tourData?.scenes.find((one) => one.id === currentSceneID);\r\n }, [tourData?.scenes, currentSceneID]);\r\n\r\n const hsDisabed: boolean = React.useMemo(() => {\r\n const isDisabled =\r\n tourData?.scenes?.length === 0 ||\r\n !currentScene?.imageID ||\r\n !!currentScene?.hotspots.find(\r\n (one: Hotspot) => one.isNew || one.EDIT_POS\r\n );\r\n return isDisabled;\r\n }, [currentScene, tourData?.scenes.length]);\r\n\r\n const quizDisabled: boolean = React.useMemo(() => {\r\n const isDisabled =\r\n !tourData?.assignedQuizID ||\r\n !QuizData?.success ||\r\n tourData?.scenes?.length === 0 ||\r\n !currentScene?.imageID ||\r\n !!currentScene!.hotspots.find(\r\n (one: Hotspot) => one.isNew || one.EDIT_POS\r\n );\r\n return isDisabled;\r\n }, [\r\n tourData?.assignedQuizID,\r\n QuizData?.success,\r\n tourData?.scenes,\r\n currentScene,\r\n ]);\r\n\r\n const wayDisabled: boolean = React.useMemo(() => {\r\n const isDisabled =\r\n tourData?.scenes?.length! < 2 ||\r\n !currentScene?.imageID ||\r\n !!currentScene?.hotspots.find(\r\n (one: Hotspot) => one.isNew || one.EDIT_POS\r\n );\r\n return isDisabled;\r\n }, [currentScene, tourData?.scenes]);\r\n\r\n const onHotspostAdd = React.useCallback(\r\n (type: hsType) => {\r\n const number = Math.floor(Math.random() * 10000000000);\r\n\r\n camera?.getWorldDirection(lookingAtVec);\r\n lookingAtVec.multiplyScalar(255);\r\n\r\n let defaultTitle;\r\n switch (type) {\r\n case \"transition\":\r\n defaultTitle = \"waypoint\";\r\n break;\r\n default:\r\n defaultTitle = type;\r\n }\r\n\r\n if (\r\n currentScene!.hotspots.find((one: Hotspot) => one.isNew || one.EDIT_POS)\r\n ) {\r\n return;\r\n }\r\n\r\n if (\r\n currentScene!.hotspots\r\n .filter((one: Hotspot) => one.type === type)\r\n .find((one: Hotspot) => one.isNew || one.EDIT_POS)\r\n ) {\r\n setEditingElem(\r\n type === \"transition\" ? \"transition\" : type,\r\n `${currentSceneID + type}#${Math.floor(Math.random() * 1000000000)}`\r\n );\r\n\r\n return;\r\n }\r\n\r\n queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: tourData!.scenes.map((scene: Scene) =>\r\n scene.id === currentSceneID\r\n ? {\r\n ...scene,\r\n hotspots: [\r\n ...currentScene!.hotspots,\r\n {\r\n id: `${currentSceneID + type}#${Math.floor(number)}`,\r\n title: \"Nuovo \" + defaultTitle,\r\n type: type === \"transition\" ? \"transition\" : type,\r\n target: \"\",\r\n x: lookingAtVec.x,\r\n y: lookingAtVec.y,\r\n z: lookingAtVec.z,\r\n pos: lookingAtVec,\r\n EDIT_POS: true,\r\n isNew: true,\r\n right: type === \"transition\" ? true : undefined,\r\n dir: type === \"transition\" ? \"L\" : undefined,\r\n },\r\n ],\r\n }\r\n : scene\r\n ),\r\n popups:\r\n type === \"popup\"\r\n ? [\r\n ...tourData!.popups,\r\n {\r\n id: `${currentSceneID + type}#${number}`,\r\n media: \"\",\r\n video: \"\",\r\n type: \"\",\r\n title: \"\",\r\n content: \"\",\r\n },\r\n ]\r\n : [...tourData!.popups],\r\n });\r\n\r\n setEditingElem(\r\n type === \"transition\" ? \"transition\" : type,\r\n `${currentSceneID + type}#${number}`\r\n );\r\n rightPanel.setOpen(true);\r\n },\r\n [\r\n camera,\r\n currentScene,\r\n currentSceneID,\r\n // lookingAt,\r\n tourID,\r\n queryClient,\r\n\r\n setEditingElem,\r\n tourData,\r\n rightPanel,\r\n ]\r\n );\r\n\r\n const changeEditElem = React.useCallback(\r\n (type: \"groups\" | \"tour\") => {\r\n rightPanel.setOpen(true);\r\n\r\n setEditingElem(type, type === \"tour\" ? type : \"\");\r\n },\r\n [rightPanel, setEditingElem]\r\n );\r\n\r\n const { isTakingScreenshot } = useWidePopupStore();\r\n\r\n const btnIsDisabled: (type: \"transition\" | \"quiz\" | string) => boolean =\r\n React.useCallback(\r\n (type: \"transition\" | \"quiz\" | string) => {\r\n if (isTakingScreenshot) return true;\r\n else if (type === \"transition\") return wayDisabled;\r\n else if (type === \"quiz\") return quizDisabled;\r\n else return hsDisabed;\r\n },\r\n [isTakingScreenshot, wayDisabled, quizDisabled, hsDisabed]\r\n );\r\n\r\n const otherBtnsDisabled: boolean = React.useMemo(() => {\r\n return (\r\n !!currentScene?.hotspots.find(\r\n (one: Hotspot) => one.isNew || one.EDIT_POS\r\n ) || isTakingScreenshot\r\n );\r\n }, [isTakingScreenshot, currentScene]);\r\n\r\n return (\r\n
\r\n \r\n {Buttons.map((button: ButtonType) => (\r\n onHotspostAdd(button.type)}\r\n disabled={btnIsDisabled(button.type)}\r\n >\r\n {button.icon}\r\n\r\n {currentScene?.hotspots.filter(\r\n (hs: Hotspot) => hs.type === button.type\r\n ).length !== 0 && (\r\n
\r\n {\r\n currentScene?.hotspots.filter(\r\n (hs: Hotspot) => hs.type === button.type\r\n ).length\r\n }\r\n
\r\n )}\r\n \r\n ))}\r\n
\r\n \r\n
\r\n\r\n {\r\n mapEditor.setOpen(currentScene?.map);\r\n }}\r\n >\r\n \r\n \r\n changeEditElem(\"groups\")}\r\n >\r\n \r\n \r\n changeEditElem(\"tour\")}\r\n >\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default LeftSidePanel;\r\n\r\nconst Buttons: ButtonType[] = [\r\n {\r\n type: \"popup\",\r\n icon: ,\r\n },\r\n { type: \"link\", icon: },\r\n {\r\n type: \"quiz\",\r\n icon: ,\r\n },\r\n {\r\n type: \"transition\",\r\n icon: ,\r\n },\r\n { type: \"audio\", icon: },\r\n];\r\n\r\ntype ButtonType = {\r\n type: \"transition\" | \"link\" | \"quiz\" | \"popup\" | \"audio\";\r\n icon: JSX.Element;\r\n};\r\n\r\nconst counterStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: 0,\r\n width: 17,\r\n height: 17,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n borderRadius: 50,\r\n background: \"#6b7ef9\",\r\n userSelect: \"none\",\r\n fontSize: \".7rem\",\r\n};\r\n","export default \"button {\\r\\n font-family: \\\"Source Sans 3\\\", Segoe UI, \\\"Roboto\\\", Arial, sans-serif;\\r\\n font-weight: 700;\\r\\n font-size: 0.9rem;\\r\\n cursor: pointer;\\r\\n background: transparent;\\r\\n color: white;\\r\\n margin: 2px;\\r\\n transition: 250ms ease-in-out;\\r\\n}\\r\\n\\r\\nbutton.primary {\\r\\n background: white;\\r\\n color: #6b7ef9;\\r\\n}\\r\\n\\r\\nbutton {\\r\\n border: 1px solid #fff;\\r\\n padding: 0.5rem 0.75rem;\\r\\n min-width: 5rem;\\r\\n border-radius: 0.3rem;\\r\\n}\\r\\n\\r\\nbutton.ghost {\\r\\n font-size: 1rem;\\r\\n border: none;\\r\\n}\\r\\n\\r\\nbutton.round {\\r\\n min-width: 0;\\r\\n padding: 0;\\r\\n background-color: white;\\r\\n color: #6b7ef9;\\r\\n width: 36px;\\r\\n aspect-ratio: 1;\\r\\n height: 36px;\\r\\n display: flex;\\r\\n flex-shrink: 0;\\r\\n flex-grow: 0;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n border-radius: 50%;\\r\\n}\\r\\n\\r\\nbutton:disabled {\\r\\n pointer-events: none;\\r\\n}\\r\\n\\r\\n@media (hover: hover) {\\r\\n button:hover {\\r\\n color: white;\\r\\n\\r\\n background: #fff4;\\r\\n border-color: transparent;\\r\\n }\\r\\n button.primary:hover {\\r\\n color: white;\\r\\n background-color: transparent;\\r\\n border-color: white;\\r\\n }\\r\\n\\r\\n button.secondary:hover {\\r\\n background-color: white;\\r\\n border-color: white;\\r\\n color: #6b7ef9;\\r\\n }\\r\\n\\r\\n button:hover:active {\\r\\n opacity: 0.4;\\r\\n /* color: #083344; */\\r\\n /* filter: drop-shadow(0px 0px 2px #fff); */\\r\\n }\\r\\n\\r\\n button.ghost:hover {\\r\\n text-decoration: underline;\\r\\n text-decoration-thickness: 2px;\\r\\n text-underline-offset: 3px;\\r\\n }\\r\\n button.ghost:hover:active {\\r\\n opacity: 0.5;\\r\\n }\\r\\n}\\r\\n\\r\\nbutton.escape-room-start {\\r\\n border-radius: 5rem;\\r\\n background-color: #5052c5;\\r\\n font-size: 1rem;\\r\\n border-width: 2px;\\r\\n}\\r\\n\";","import * as React from \"react\";\r\nimport { SVGProps } from \"react\";\r\nconst InsideepLogo = (props: SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\nexport default InsideepLogo;\r\n","import InsideepLogo from \"../Icons/InsideepLogo\";\r\n \r\n\r\n\r\nfunction ErrorScreen({ error }: { error: any }) {\r\n return (\r\n \r\n
\r\n \r\n

Errore API

\r\n
\r\n {error && (\r\n \r\n

{error.message}

\r\n

{error.code}

\r\n
{error.stack}
\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default ErrorScreen;\r\n","import React from \"react\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst ProgressBar = (props: { percentage: number; status?: string }) => {\r\n return (\r\n \r\n \r\n {props.status ?? getLanguageFile(\"generics.loading\")}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProgressBar;\r\n","export default function reduceImage(\r\n e: File,\r\n w: number,\r\n h: number\r\n): Promise {\r\n let x,\r\n y = 0,\r\n sx,\r\n sy,\r\n ssx,\r\n ssy,\r\n r,\r\n g,\r\n b,\r\n a;\r\n\r\n // const imgFromInput = e.target.files[0];\r\n const url = URL.createObjectURL(e);\r\n\r\n const img = new Image();\r\n\r\n img.src = url;\r\n\r\n return new Promise((resolve) => {\r\n img.onload = (e) => {\r\n const RGB2sRGB = 2.2; // this is an approximation of sRGB\r\n const sRGB2RGB = 1 / RGB2sRGB;\r\n const sRGBMax = 255 ** RGB2sRGB;\r\n\r\n const srcW = img.naturalWidth;\r\n const srcH = img.naturalHeight;\r\n const srcCan = Object.assign(document.createElement(\"canvas\"), {\r\n width: srcW,\r\n height: srcH,\r\n });\r\n const sCtx = srcCan.getContext(\"2d\");\r\n const destCan = Object.assign(document.createElement(\"canvas\"), {\r\n width: w,\r\n height: h,\r\n });\r\n const dCtx = destCan.getContext(\"2d\");\r\n sCtx.drawImage(img, 0, 0);\r\n const srcData = sCtx.getImageData(0, 0, srcW, srcH).data;\r\n const destData = dCtx.getImageData(0, 0, w, h);\r\n\r\n // Warning if yStep or xStep span less than 2 pixels then there may be\r\n // banding artifacts in the image\r\n const xStep = srcW / w,\r\n yStep = srcH / h;\r\n if (xStep < 2 || yStep < 2) {\r\n console.warn(\"Downsample too low. Should be at least 50%\");\r\n }\r\n const area = xStep * yStep;\r\n const sD = srcData,\r\n dD = destData.data;\r\n\r\n while (y < h) {\r\n sy = y * yStep;\r\n x = 0;\r\n while (x < w) {\r\n sx = x * xStep;\r\n const ssyB = sy + yStep;\r\n const ssxR = sx + xStep;\r\n r = g = b = a = 0;\r\n ssy = sy | 0;\r\n while (ssy < ssyB) {\r\n const yy1 = ssy + 1;\r\n const yArea =\r\n yy1 > ssyB ? ssyB - ssy : ssy < sy ? 1 - (sy - ssy) : 1;\r\n ssx = sx | 0;\r\n while (ssx < ssxR) {\r\n const xx1 = ssx + 1;\r\n const xArea =\r\n xx1 > ssxR ? ssxR - ssx : ssx < sx ? 1 - (sx - ssx) : 1;\r\n const srcContribution = (yArea * xArea) / area;\r\n const idx = (ssy * srcW + ssx) * 4;\r\n r += (sD[idx] ** RGB2sRGB / sRGBMax) * srcContribution;\r\n g += (sD[idx + 1] ** RGB2sRGB / sRGBMax) * srcContribution;\r\n b += (sD[idx + 2] ** RGB2sRGB / sRGBMax) * srcContribution;\r\n a += (sD[idx + 3] / 255) * srcContribution;\r\n ssx += 1;\r\n }\r\n ssy += 1;\r\n }\r\n const idx = (y * w + x) * 4;\r\n dD[idx] = (r * sRGBMax) ** sRGB2RGB;\r\n dD[idx + 1] = (g * sRGBMax) ** sRGB2RGB;\r\n dD[idx + 2] = (b * sRGBMax) ** sRGB2RGB;\r\n dD[idx + 3] = a * 255;\r\n x += 1;\r\n }\r\n y += 1;\r\n }\r\n\r\n dCtx.putImageData(destData, 0, 0);\r\n\r\n resolve(destCan);\r\n URL.revokeObjectURL(url);\r\n };\r\n });\r\n}\r\n","// icon:file-audio-2 | Lucide https://lucide.dev/ | Lucide\r\nimport * as React from \"react\";\r\n\r\nfunction AudioIconFile(props: React.SVGProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AudioIconFile;\r\n","import AudioIconFile from \"../../Icons/AudioFileIcon\";\r\nimport * as React from \"react\";\r\nimport * as Player from \"../../Icons/Player\";\r\n\r\nconst AudioPreview = (props: {\r\n file: File;\r\n audioState: HTMLAudioElement;\r\n upPercentage?: number;\r\n}) => {\r\n const { file, audioState, upPercentage } = props;\r\n\r\n const [percentage, setPercentage] = React.useState(0);\r\n const [length, setLength] = React.useState(0);\r\n\r\n const audioRef = React.useRef(null);\r\n const [vol, setVol] = React.useState(75);\r\n\r\n React.useEffect(() => {\r\n if (audioRef.current) {\r\n audioRef.current.volume = vol / 100;\r\n }\r\n }, [vol]);\r\n\r\n const [status, setStatus] = React.useState(\"loaded\");\r\n\r\n const fileTypeString = React.useMemo(() => {\r\n const temp = file.type.split(\"/\").pop();\r\n if (temp === \"mpeg\") return \"MP3\";\r\n else return temp?.toUpperCase();\r\n }, [file.type]);\r\n\r\n return (\r\n \r\n {\r\n setLength(e.currentTarget.duration);\r\n }}\r\n onPlay={(e) => {\r\n setStatus(\"play\");\r\n }}\r\n onPause={(e) => {\r\n setStatus(\"pause\");\r\n }}\r\n onEnded={() => setStatus(\"end\")}\r\n onTimeUpdate={(e) => {\r\n setPercentage(e.currentTarget.currentTime);\r\n }}\r\n />\r\n \r\n {upPercentage && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n

{fileTypeString}

\r\n \r\n

\r\n {file.name}, {formatBytes(file.size)}\r\n

\r\n \r\n {\r\n if (audioRef.current) {\r\n audioRef.current.currentTime = 0;\r\n audioRef.current.pause();\r\n }\r\n }}\r\n >\r\n \r\n \r\n\r\n {\r\n if (audioRef.current?.paused) {\r\n audioRef.current?.play();\r\n } else audioRef.current?.pause();\r\n }}\r\n >\r\n {status === \"end\" && percentage !== 0 ? (\r\n \r\n ) : status === \"play\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {secondsParser(percentage) + \" / \" + secondsParser(length)}\r\n

\r\n\r\n {\r\n if (audioRef.current)\r\n audioRef.current.currentTime = e.target.valueAsNumber;\r\n }}\r\n style={{}}\r\n />\r\n\r\n
\r\n setVol(e.target.valueAsNumber)}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AudioPreview;\r\n\r\nexport function formatBytes(bytes: number, decimals = 2) {\r\n if (!+bytes) return \"0 Bytes\";\r\n\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\r\n}\r\n\r\nexport const secondsParser: (s: number) => string = (s) => {\r\n const min = Math.floor(s / 60);\r\n const sec = s % 60;\r\n return min + \":\" + Math.ceil(sec).toString().padStart(2, \"0\");\r\n};\r\n\r\nconst playerBtn: React.CSSProperties = {\r\n textAlign: \"center\",\r\n padding: 0,\r\n\r\n lineHeight: 0,\r\n fontSize: \"1.5rem\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n minWidth: 30,\r\n height: 30,\r\n border: \"none\",\r\n};\r\n","import React from \"react\";\r\nimport { UseSetAsset } from \"../../../api/calls/Queries\";\r\nimport { Asset } from \"../../../Types\";\r\nimport { QueryObserverResult } from \"@tanstack/react-query\";\r\nimport ProgressBar from \"../GuiElements/ProgressBar\";\r\nimport reduceImage from \"../../common/ImageReducer\";\r\nimport AudioPreview, { formatBytes } from \"./AudioPreview\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\nimport { useAssetListStore } from \"../../../api/Zustand\";\r\n\r\nconst UploadPage = (props: {\r\n refetch: () => Promise>;\r\n setPage: React.Dispatch>;\r\n setSelectedAsset: React.Dispatch<\r\n React.SetStateAction\r\n >;\r\n assetType: number | undefined;\r\n assets: Asset[];\r\n}) => {\r\n const { refetch, setPage, setSelectedAsset, assetType, assets } = props;\r\n\r\n const [file, setFile] = React.useState();\r\n const [previewBlob, setPreviewBlob] = React.useState();\r\n const [fileDetails, setFileDetails] = React.useState();\r\n const [audioDetails, setAudioDetails] = React.useState();\r\n\r\n const [progress, setProgress] = React.useState();\r\n\r\n const { setLoading } = useAssetListStore();\r\n\r\n const {\r\n mutateAsync: uploadFile,\r\n isPending,\r\n isError,\r\n error,\r\n } = UseSetAsset(assetType!, setProgress);\r\n\r\n React.useEffect(() => {\r\n if (!file) {\r\n setFileDetails(undefined);\r\n setAudioDetails(undefined);\r\n\r\n return;\r\n }\r\n const objectUrl = URL.createObjectURL(file);\r\n\r\n if (assetType === 1 || assetType === 2) {\r\n let image = new Image();\r\n image.src = objectUrl;\r\n\r\n image.onload = () => {\r\n setPreviewBlob(image.src);\r\n setFileDetails(image);\r\n };\r\n\r\n return () => URL.revokeObjectURL(objectUrl);\r\n } else {\r\n const audio = new Audio();\r\n audio.preload = \"metadata\";\r\n audio.src = objectUrl;\r\n audio.onloadeddata = () => {\r\n setAudioDetails(audio);\r\n };\r\n return () => URL.revokeObjectURL(objectUrl);\r\n }\r\n }, [file, assetType]);\r\n\r\n const uploadAudio = React.useCallback(() => {\r\n uploadFile(\r\n {\r\n file: file as File,\r\n assetFileType: \"F\",\r\n assetId: 0,\r\n },\r\n {\r\n onSettled: (re) => {\r\n refetch();\r\n setPage(1);\r\n setLoading(false);\r\n setSelectedAsset(re.assetId);\r\n return;\r\n },\r\n }\r\n );\r\n }, [file, uploadFile, refetch, setPage, setSelectedAsset, setLoading]);\r\n\r\n const lowResUrl = React.useRef();\r\n\r\n const generatePanoThumbnail = React.useCallback(async function (ev: File) {\r\n const resultCanvasThumb: HTMLCanvasElement = await reduceImage(\r\n ev,\r\n 256,\r\n 128\r\n );\r\n\r\n return new Promise((resolve) => {\r\n resultCanvasThumb.toBlob((blob) => {\r\n const file = new File([blob!], ev.name, { type: ev.type });\r\n resolve(file);\r\n });\r\n });\r\n }, []);\r\n\r\n const generatePanoLowRes = React.useCallback(\r\n async function (ev: File) {\r\n URL.revokeObjectURL(lowResUrl.current!);\r\n\r\n const resultCanvasLowRes = await reduceImage(ev, 724, 362);\r\n\r\n return new Promise((resolve) => {\r\n resultCanvasLowRes.toBlob((blob) => {\r\n lowResUrl.current = URL.createObjectURL(blob!);\r\n\r\n const file = new File([blob!], ev.name, { type: ev.type });\r\n\r\n resolve(file);\r\n });\r\n });\r\n },\r\n [lowResUrl]\r\n );\r\n\r\n const generateImageThumbnail = React.useCallback(\r\n async (ev: File) => {\r\n URL.revokeObjectURL(lowResUrl.current!);\r\n\r\n const resultCanvasThumb: HTMLCanvasElement = await reduceImage(\r\n ev,\r\n 256,\r\n 128\r\n );\r\n\r\n return new Promise((resolve) => {\r\n resultCanvasThumb.toBlob((blob) => {\r\n lowResUrl.current = URL.createObjectURL(blob!);\r\n\r\n const file = new File([blob!], ev.name, { type: ev.type });\r\n\r\n resolve(file);\r\n });\r\n });\r\n },\r\n [lowResUrl]\r\n );\r\n\r\n const annulla = () => {\r\n setFile(null);\r\n setPreviewBlob(undefined);\r\n };\r\n\r\n const [isUploadingMain, setIsUploadingMain] = React.useState(false);\r\n const [isGeneratingThumb, setIsGeneratingThumb] = React.useState(false);\r\n const [isUploadingThumb, setIsUploadingThumb] = React.useState(false);\r\n const [isGeneratingLo, setIsGeneratingLo] = React.useState(false);\r\n const [isUploadingLo, setIsUploadingLo] = React.useState(false);\r\n const [isLoadingGeneric, setIsLoadingGeneric] = React.useState(false);\r\n\r\n const onUploadComplete = React.useCallback(\r\n async (res: string) => {\r\n refetch().then(function () {\r\n setPage(1);\r\n setSelectedAsset(res);\r\n setFile(undefined);\r\n });\r\n },\r\n [refetch, setPage, setSelectedAsset, setFile]\r\n );\r\n const uploadImageImproved = React.useCallback(() => {\r\n setIsLoadingGeneric(true);\r\n\r\n try {\r\n setIsUploadingMain(true);\r\n\r\n uploadFile(\r\n { file: file as File, assetFileType: \"F\", assetId: 0 },\r\n {\r\n onSuccess: async (firtsUploadResp) => {\r\n setIsUploadingMain(false);\r\n\r\n setIsGeneratingThumb(true);\r\n\r\n // @ts-expect-error\r\n const lowResFile: File = await generateImageThumbnail(file!);\r\n setIsGeneratingThumb(false);\r\n setIsUploadingThumb(true);\r\n\r\n uploadFile(\r\n {\r\n file: lowResFile,\r\n assetFileType: \"L\",\r\n assetId: firtsUploadResp.assetId,\r\n },\r\n {\r\n onSettled: async () => {\r\n setIsUploadingThumb(false);\r\n setIsLoadingGeneric(false);\r\n onUploadComplete(firtsUploadResp.assetId);\r\n },\r\n }\r\n );\r\n },\r\n }\r\n );\r\n } catch (err) {\r\n setIsLoadingGeneric(false);\r\n console.debug(err);\r\n }\r\n }, [file, generateImageThumbnail, onUploadComplete, uploadFile]);\r\n\r\n const uploadPanoImproved = React.useCallback(async () => {\r\n setIsLoadingGeneric(true);\r\n\r\n setIsUploadingMain(true);\r\n\r\n try {\r\n uploadFile(\r\n { file: file as File, assetFileType: \"F\", assetId: 0 },\r\n {\r\n onSuccess: async (firtsUploadResp) => {\r\n setIsUploadingMain(false);\r\n\r\n setIsGeneratingLo(true);\r\n\r\n // @ts-expect-error\r\n const lowResFile: File = await generatePanoLowRes(file!);\r\n\r\n setIsGeneratingLo(false);\r\n setIsUploadingLo(true);\r\n uploadFile(\r\n {\r\n file: lowResFile,\r\n assetFileType: \"L\",\r\n assetId: firtsUploadResp.assetId,\r\n },\r\n {\r\n onSettled: async () => {\r\n setIsUploadingLo(false);\r\n\r\n setIsGeneratingThumb(true);\r\n\r\n // @ts-expect-error\r\n const thumb: File = await generatePanoThumbnail(file);\r\n setIsGeneratingThumb(false);\r\n setIsUploadingThumb(true);\r\n\r\n uploadFile(\r\n {\r\n file: thumb,\r\n assetFileType: \"T\",\r\n assetId: firtsUploadResp.assetId,\r\n },\r\n {\r\n onSettled: () => {\r\n setIsUploadingThumb(false);\r\n setIsLoadingGeneric(false);\r\n onUploadComplete(firtsUploadResp.assetId);\r\n },\r\n }\r\n );\r\n },\r\n }\r\n );\r\n },\r\n }\r\n );\r\n } catch (error) {\r\n setIsLoadingGeneric(false);\r\n console.debug(error);\r\n }\r\n }, [\r\n file,\r\n generatePanoLowRes,\r\n uploadFile,\r\n onUploadComplete,\r\n generatePanoThumbnail,\r\n ]);\r\n\r\n const progressBarStatus = React.useMemo(() => {\r\n if (isUploadingMain) return getLanguageFile(\"overlapping_panel.up_main\");\r\n else if (isGeneratingLo) return getLanguageFile(\"overlapping_panel.gen_lo\");\r\n else if (isUploadingLo) return getLanguageFile(\"overlapping_panel.up_lo\");\r\n else if (isGeneratingThumb)\r\n return getLanguageFile(\"overlapping_panel.gen_thumb\");\r\n else if (isUploadingThumb)\r\n return getLanguageFile(\"overlapping_panel.up_thumb\");\r\n }, [\r\n isUploadingLo,\r\n isUploadingMain,\r\n isGeneratingLo,\r\n isGeneratingThumb,\r\n isUploadingThumb,\r\n ]);\r\n const inLoadingState = (isPending || isLoadingGeneric) && !isError;\r\n\r\n React.useEffect(() => {\r\n setLoading(inLoadingState);\r\n // setAssetList((currVal) => {\r\n // return { ...currVal, isLoading: inLoadingState };\r\n // });\r\n }, [inLoadingState, setLoading]);\r\n\r\n return (\r\n
\r\n {file && fileDetails ? (\r\n <>\r\n \r\n {progress && (\r\n \r\n )}\r\n
\r\n\r\n

\r\n {file.name}, {formatBytes(file.size)}\r\n

\r\n {assets.find((one) => one.assetDescription === file.name) && (\r\n <>\r\n
\r\n \r\n ⓘ {getLanguageFile(\"overlapping_panel.name_duplicate\")}\r\n \r\n
\r\n \r\n )}\r\n
\r\n {\r\n assetType === 1 ? uploadPanoImproved() : uploadImageImproved();\r\n }}\r\n disabled={inLoadingState || isLoadingGeneric}\r\n >\r\n {inLoadingState\r\n ? getLanguageFile(\"generics.uploading\")\r\n : getLanguageFile(\"generics.upload\")}\r\n \r\n annulla()}\r\n disabled={inLoadingState && !isError}\r\n >\r\n {getLanguageFile(\"generics.cancel\")}\r\n \r\n
\r\n \r\n {file.size / 1024000 > 10\r\n ? getLanguageFile(\"overlapping_panel.big_file_size\")\r\n : null}\r\n
\r\n {assetType === 1 &&\r\n fileDetails?.naturalWidth / fileDetails?.naturalHeight !== 2 ? (\r\n {getLanguageFile(\"overlapping_panel.wrong_aspect_ratio\")}\r\n ) : null}\r\n
\r\n {isError && (\r\n
\r\n {error?.code} {error?.message}\r\n
\r\n )}\r\n \r\n ) : file && audioDetails ? (\r\n <>\r\n \r\n {assets.find((one) => one.assetDescription === file.name) && (\r\n <>\r\n
\r\n \r\n ⓘ {getLanguageFile(\"overlapping_panel.name_duplicate\")}\r\n \r\n
\r\n \r\n )}\r\n\r\n \r\n {file.size / 1024000 > 10\r\n ? getLanguageFile(\"overlapping_panel.big_file_size\")\r\n : null}\r\n \r\n\r\n
\r\n annulla()}\r\n disabled={inLoadingState}\r\n >\r\n {getLanguageFile(\"generics.cancel\")}\r\n \r\n {\r\n uploadAudio();\r\n }}\r\n disabled={inLoadingState || !audioDetails}\r\n >\r\n {inLoadingState\r\n ? getLanguageFile(\"generics.uploading\")\r\n : getLanguageFile(\"generics.upload\")}\r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {assetType === 1 ? (\r\n getLanguageFile(\"overlapping_panel.pano_reqs\")\r\n ) : assetType === 2 ? (\r\n getLanguageFile(\"overlapping_panel.png_jpg\")\r\n ) : (\r\n {getLanguageFile(\"overlapping_panel.mp3_wav\")} \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default UploadPage;\r\n","import React from \"react\";\r\n\r\nfunction ImagePopupIcons(props: any) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ImagePopupIcons;\r\n","import React from \"react\";\r\nimport { Asset } from \"../../../Types\";\r\nimport { UseDownloadAsset } from \"../../../api/calls/Queries\";\r\nimport AudioIconFile from \"../../Icons/AudioFileIcon\";\r\nimport ImagePopupIcons from \"../../Icons/ImagePopupIcons\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst ListElement = (props: {\r\n assets: Asset[];\r\n setSelectedAsset: React.Dispatch<\r\n React.SetStateAction\r\n >;\r\n selectedAsset: number | string | undefined;\r\n assetType: number | undefined;\r\n}) => {\r\n const [filter, setFilter] = React.useState(\"\");\r\n const [oldest, setOldest] = React.useState(false);\r\n\r\n const { assetType, assets, selectedAsset, setSelectedAsset } = props;\r\n\r\n const assetsSortedAndFiltered = React.useMemo(() => {\r\n return assets\r\n .filter((asset) =>\r\n asset.assetDescription.toLowerCase().includes(filter.toLowerCase())\r\n )\r\n .sort((a, b) => {\r\n if (oldest) return a.assetId - b.assetId;\r\n else return b.assetId - a.assetId;\r\n });\r\n }, [assets, filter, oldest]);\r\n\r\n return (\r\n
\r\n
\r\n setFilter(e.target.value)}\r\n />\r\n\r\n \r\n
\r\n
\r\n {assetType &&\r\n assetsSortedAndFiltered.map((asset) => (\r\n
\r\n {\r\n if (selectedAsset === asset.assetId)\r\n setSelectedAsset(undefined);\r\n else setSelectedAsset(asset.assetId);\r\n }}\r\n />\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ListEl = (props: {\r\n assetType: number | undefined;\r\n asset: Asset;\r\n onClick: () => void;\r\n selectedAsset: number | string | undefined;\r\n}) => {\r\n const { asset, onClick, selectedAsset, assetType } = props;\r\n\r\n const assetToUseAsThumb = React.useMemo(() => {\r\n if (assetType === 1) return asset.assetKeyThumb;\r\n else if (asset.assetKeyLow) return asset.assetKeyLow;\r\n else return asset.assetKeyFull;\r\n }, [asset, assetType]);\r\n\r\n const { data: thumbBlob } = UseDownloadAsset(assetToUseAsThumb);\r\n\r\n const thisAssetIsSelected = selectedAsset === asset.assetId;\r\n\r\n return (\r\n
\r\n \r\n {assetType !== 3 && (\r\n <>\r\n {thumbBlob ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {assetType === 3 && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n {asset.assetDescription ||\r\n getLanguageFile(\"overlapping_panel.missing_file_name\")}\r\n

\r\n \r\n );\r\n};\r\n\r\nexport default ListElement;\r\n","import React from \"react\";\r\nimport { UseSetAsset } from \"../../../api/calls/Queries\";\r\nimport { QueryObserverResult } from \"@tanstack/react-query\";\r\nimport { Asset } from \"../../../Types\";\r\nimport reduceImage from \"../../common/ImageReducer\";\r\n\r\nconst GeneratedImagesGrid = (props: {\r\n isError: boolean;\r\n isPending: boolean;\r\n refetchDallE: (input: string) => Promise;\r\n images: { index: number; url: string }[];\r\n setImages: React.Dispatch<\r\n React.SetStateAction<{ url: string; index: number }[] | undefined>\r\n >;\r\n prompt?: string;\r\n setSelectedAsset: React.Dispatch<\r\n React.SetStateAction\r\n >;\r\n setPage: React.Dispatch>;\r\n refetch: () => Promise>;\r\n}) => {\r\n const {\r\n refetch,\r\n setPage,\r\n setSelectedAsset: setOverallSelectedAsset,\r\n setImages,\r\n images,\r\n isError,\r\n isPending,\r\n refetchDallE,\r\n prompt,\r\n } = props;\r\n\r\n function goBack() {\r\n setImages(undefined);\r\n setOverallSelectedAsset(undefined);\r\n }\r\n\r\n const [selectedAsset, setSelectedAsset] = React.useState<\r\n number | undefined\r\n >();\r\n\r\n const { mutateAsync: uploadFile, isPending: isPendingUpload } =\r\n UseSetAsset(2);\r\n\r\n const selectedImage = React.useMemo(() => {\r\n return images.find((one) => one.index === selectedAsset);\r\n }, [images, selectedAsset]);\r\n\r\n const uploadToServer = React.useCallback(\r\n async (url: string, prompt: string) => {\r\n const fullResFile = await urlToFile(url, prompt);\r\n const lowResBlob = await generateImageThumb(url, prompt);\r\n\r\n const loweResFileName = prompt + \"_thumbnail.png\";\r\n\r\n const lowResFile = new File([lowResBlob], loweResFileName);\r\n\r\n uploadFile(\r\n { file: fullResFile, assetFileType: \"F\", assetId: 0 },\r\n {\r\n onSuccess: (firstUploadResp) => {\r\n if (lowResFile) {\r\n uploadFile(\r\n {\r\n file: lowResFile,\r\n assetFileType: \"L\",\r\n assetId: firstUploadResp.assetId,\r\n },\r\n {\r\n onSettled: () => {\r\n refetch();\r\n setPage(1);\r\n setOverallSelectedAsset(firstUploadResp.assetId);\r\n return;\r\n },\r\n }\r\n );\r\n } else {\r\n refetch();\r\n setPage(1);\r\n setOverallSelectedAsset(firstUploadResp.assetId);\r\n return;\r\n }\r\n },\r\n }\r\n );\r\n },\r\n [uploadFile, refetch, setPage, setOverallSelectedAsset]\r\n );\r\n\r\n const isLoading: boolean = isPending || isPendingUpload;\r\n\r\n return (\r\n \r\n \r\n
\r\n {\r\n goBack();\r\n }}\r\n >\r\n Indietro\r\n \r\n
\r\n \r\n {prompt}\r\n \r\n \r\n \r\n {images.map((img) => (\r\n setSelectedAsset(img.index)}\r\n selected={img.index === selectedAsset}\r\n />\r\n ))}\r\n \r\n \r\n refetchDallE(prompt!)}\r\n >\r\n Genera di nuovo\r\n \r\n {\r\n if (selectedImage?.url && prompt) {\r\n uploadToServer(selectedImage.url, prompt);\r\n }\r\n }}\r\n >\r\n Carica immagine\r\n \r\n \r\n
\r\n        Errore API OpenAI\r\n      
\r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ImageElement = (props: {\r\n image: string;\r\n onClick: () => void;\r\n selected?: boolean;\r\n}) => {\r\n const { image, onClick, selected } = props;\r\n\r\n return (\r\n {\r\n onClick();\r\n }}\r\n >\r\n \"anteprima\r\n \r\n );\r\n};\r\n\r\nexport default GeneratedImagesGrid;\r\n\r\nasync function urlToFile(url: string, prompt: string) {\r\n const resp = await fetch(url, { mode: \"no-cors\", method: \"GET\" });\r\n\r\n const blob = await resp.blob();\r\n\r\n const name = \"dalle_\" + prompt.replace(/ /g, \"_\") + \"_\" + Date.now() + \".png\";\r\n\r\n const file = new File([blob], name, { type: \"png\" });\r\n return file;\r\n}\r\n\r\nasync function generateImageThumb(ev: string, prompt: string): Promise {\r\n prompt = prompt.replace(/\\s/g, \"\");\r\n\r\n const imageFetch = await fetch(ev);\r\n const imageBlob = await imageFetch.blob();\r\n\r\n const tempFile = new File([imageBlob], prompt + \"_thumbnail.jpg\", {\r\n type: \"image/jpeg\",\r\n });\r\n\r\n const resultCanvasThumb: HTMLCanvasElement = await reduceImage(\r\n tempFile,\r\n 256,\r\n 128\r\n );\r\n\r\n return new Promise((resolve) => {\r\n resultCanvasThumb.toBlob((blob) => {\r\n const file = new File([blob!], tempFile.name, { type: tempFile.type });\r\n resolve(file);\r\n });\r\n });\r\n}\r\n\r\nasync function generateImageThumbnail(imageUrl: string): Promise {\r\n const Img = new Image();\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n Img.src = imageUrl;\r\n\r\n return new Promise((resolve) => {\r\n Img.onload = () => {\r\n const ratio = Img.naturalWidth / Img.naturalHeight;\r\n let w;\r\n let h;\r\n if (ratio > 1) {\r\n w = 128;\r\n h = Math.floor(128 / ratio);\r\n } else {\r\n w = Math.floor(ratio * 128);\r\n h = 128;\r\n }\r\n canvas.width = ratio > 1 ? 128 : Math.floor(ratio * 128);\r\n canvas.height = ratio > 1 ? Math.floor(128 / ratio) : 128;\r\n\r\n if (ctx) {\r\n if (ctx?.imageSmoothingQuality === undefined) {\r\n ctx.filter = \"blur(1px)\";\r\n } else ctx.imageSmoothingQuality = \"high\";\r\n ctx.drawImage(Img, 0, 0, w, h);\r\n\r\n canvas.toBlob((thumbC) => {\r\n if (thumbC) {\r\n ctx.reset();\r\n\r\n resolve(thumbC);\r\n }\r\n });\r\n }\r\n };\r\n });\r\n}\r\n","import React, { FormEventHandler } from \"react\";\r\nimport { SubmitHandler, UseFormRegister, useForm } from \"react-hook-form\";\r\nimport { useDallE } from \"../../../api/calls/OpenAi\";\r\nimport { QueryObserverResult, useQueryClient } from \"@tanstack/react-query\";\r\nimport GeneratedImagesGrid from \"./GeneratedImagesGrid\";\r\nimport { Asset, TourData } from \"../../../Types\";\r\nimport { AxiosError } from \"axios\";\r\n\r\nconst DalleWrapper = (props: {\r\n selectedAsset: number | string | undefined;\r\n setSelectedAsset: React.Dispatch<\r\n React.SetStateAction\r\n >;\r\n setPage: React.Dispatch>;\r\n refetch: () => Promise>;\r\n tourData: TourData;\r\n}) => {\r\n const { refetch, selectedAsset, setSelectedAsset, setPage, tourData } = props;\r\n\r\n const [images, setImages] = React.useState<\r\n { url: string; index: number }[] | undefined\r\n >();\r\n const { handleSubmit, register } = useForm<{ input: string }>();\r\n const [prompt, setPrompt] = React.useState();\r\n\r\n const { mutateAsync, isPending, isError, error } = useDallE();\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const fetchFromDallE = React.useCallback(\r\n (input: string) => {\r\n return mutateAsync(\r\n { prompt: input, numberOfImages: 4 },\r\n {\r\n onSuccess: (data: { url: string; index: number }[]) =>\r\n setImages(data),\r\n }\r\n );\r\n },\r\n [mutateAsync]\r\n );\r\n\r\n const onSubmit: SubmitHandler<{ input: string; forceQuery?: boolean }> = (\r\n data\r\n ) => {\r\n setPrompt(data.input);\r\n\r\n const queryResult: { url: string; index: number }[] | undefined =\r\n queryClient.getQueryData([\r\n \"DallEResult\",\r\n data.input.toLocaleLowerCase().replace(/\\s/g, \"\"),\r\n ]);\r\n\r\n if (queryResult) {\r\n console.debug(\"existing query\");\r\n setImages(queryResult);\r\n } else {\r\n fetchFromDallE(data.input);\r\n }\r\n };\r\n\r\n const page = React.useMemo(() => {\r\n if (images?.length && images.length > 0) return 1;\r\n else return 0;\r\n }, [images]);\r\n\r\n return (\r\n
\r\n {page === 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst PromptSubmittingPage = (props: {\r\n handleSubmit: FormEventHandler;\r\n register: UseFormRegister<{ input: string }>;\r\n isPending: boolean;\r\n isError: boolean;\r\n error: Error | null;\r\n}) => {\r\n const { handleSubmit, register, isError, isPending } = props;\r\n // @ts-expect-error\r\n const requestError: AxiosError | undefined = props.error;\r\n // @ts-expect-error\r\n const errorMsg: string | undefined = requestError?.response?.data;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n {isError && requestError && errorMsg && (\r\n
\r\n          {requestError.code}\r\n          
\r\n {errorMsg}\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DalleWrapper;\r\n","import React from \"react\";\r\nimport { Asset, TourData } from \"../../../Types\";\r\nimport { UseDownloadAsset, useDeleteAsset } from \"../../../api/calls/Queries\";\r\nimport { Pause, Play } from \"../../Icons/Player\";\r\nimport AudioIconFile from \"../../Icons/AudioFileIcon\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst AssetPreview = (props: {\r\n tourData: TourData;\r\n selectedAsset: number | undefined;\r\n assets: Asset[];\r\n assetListOpenType: 1 | 2 | 3 | undefined;\r\n}) => {\r\n const { tourData, selectedAsset, assets, assetListOpenType } = props;\r\n\r\n const currentAsset = React.useMemo(() => {\r\n const sel = assets.find((one) => one.assetId === selectedAsset);\r\n return sel;\r\n }, [assets, selectedAsset]);\r\n\r\n const { data: preview, isLoading } = UseDownloadAsset(\r\n currentAsset?.assetKeyThumb || currentAsset?.assetKeyLow\r\n );\r\n\r\n const missingUsedAssetsList = React.useMemo(() => {\r\n return !tourData.usedAssets || !tourData.usedPanos;\r\n }, [tourData.usedAssets, tourData.usedPanos]);\r\n\r\n const isUsed: boolean = React.useMemo(() => {\r\n if (assetListOpenType === 1) {\r\n return !!tourData.usedPanos?.find((one) => one === currentAsset?.assetId);\r\n } else return true;\r\n }, [tourData.usedPanos, assetListOpenType, currentAsset?.assetId]);\r\n\r\n const {\r\n mutateAsync: deleteAsset,\r\n isPending: isDeleting,\r\n isError,\r\n } = useDeleteAsset(assetListOpenType!);\r\n\r\n return (\r\n
\r\n {currentAsset && (\r\n <>\r\n {assetListOpenType !== 3 && (\r\n \r\n \r\n
\r\n )}\r\n {assetListOpenType === 3 && (\r\n \r\n )}\r\n\r\n
\r\n
\r\n \r\n {getLanguageFile(\"overlapping_panel.name\")}{\" \"}\r\n \r\n {currentAsset.assetDescription}\r\n

\r\n \r\n {getLanguageFile(\"overlapping_panel.size\")}{\" \"}\r\n \r\n {currentAsset.assetSize} MB\r\n\r\n
\r\n\r\n
\r\n {assetListOpenType !== 3 && (\r\n <>\r\n \r\n {getLanguageFile(\"overlapping_panel.full_res\")}{\" \"}\r\n {!!currentAsset.assetKeyFull ? \"✓\" : \"✗\"}\r\n \r\n

\r\n\r\n \r\n {assetListOpenType === 1\r\n ? getLanguageFile(\"overlapping_panel.lo_res\")\r\n : getLanguageFile(\"overlapping_panel.thumb\")}{\" \"}\r\n {!!currentAsset.assetKeyLow ? \"✓\" : \"✗\"}\r\n \r\n\r\n {assetListOpenType === 1 && (\r\n <>\r\n

\r\n \r\n {getLanguageFile(\"overlapping_panel.thumb\")}{\" \"}\r\n {!!currentAsset.assetKeyThumb ? \"✓\" : \"✗\"}\r\n \r\n

\r\n \r\n )}\r\n \r\n )}\r\n {/* NEEDS IMPROVEMENTS */}\r\n {/*
\r\n \r\n {!missingUsedAssetsList && isUsed ? \"usata\" : \"non usata\"}\r\n \r\n deleteAsset(currentAsset.assetId)}\r\n >\r\n Elimina \r\n */}\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AssetPreview;\r\n\r\nconst AudioPreview = (props: { asset: Asset }) => {\r\n const { asset } = props;\r\n\r\n const audioRef = React.useRef(new Audio());\r\n const { data: preview, isLoading } = UseDownloadAsset(asset?.assetKeyFull);\r\n\r\n React.useEffect(() => {\r\n if (preview) {\r\n audioRef.current.src = preview;\r\n audioRef.current.onloadeddata = (e) => e.preventDefault();\r\n }\r\n }, [preview]);\r\n\r\n const playButtonAction = () => {\r\n if (audioRef.current.paused) {\r\n audioRef.current.play();\r\n } else audioRef.current.pause();\r\n };\r\n\r\n const [playing, setPlaying] = React.useState(false);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {isLoading && getLanguageFile(\"generics.loading\")}\r\n\r\n \r\n\r\n {/* {asset.assetKeyFu§ll} */}\r\n\r\n {/* {audioRef.current.currentTime} */}\r\n {\r\n return;\r\n }}\r\n onPlay={(e) => {\r\n setPlaying(true);\r\n return e.preventDefault();\r\n }}\r\n onPause={(e) => {\r\n setPlaying(false);\r\n return e.preventDefault();\r\n }}\r\n onEnded={() => setPlaying(false)}\r\n onTimeUpdate={(e) => {\r\n const elapsedTime = e.currentTarget.currentTime;\r\n\r\n if (elapsedTime > 10) {\r\n e.currentTarget.pause();\r\n e.currentTarget.currentTime = 0;\r\n }\r\n return e.preventDefault();\r\n }}\r\n >\r\n
\r\n \r\n );\r\n};\r\n\r\nconst previewStyle: React.CSSProperties = {\r\n background: \"#2222\",\r\n width: \"100%\",\r\n\r\n boxSizing: \"border-box\",\r\n\r\n padding: 10,\r\n};\r\n\r\nconst labelStyle: React.CSSProperties = { fontWeight: 600 };\r\nconst descStyle: React.CSSProperties = {\r\n fontWeight: 400,\r\n fontSize: \"0.95rem\",\r\n wordWrap: \"break-word\",\r\n};\r\n","export default \"button#assetListClose {\\r\\n color: #222;\\r\\n display: flex;\\r\\n line-height: 1rem;\\r\\n}\\r\\n\\r\\nbutton#assetListClose:hover {\\r\\n color: #2228;\\r\\n}\\r\\nbutton#assetListClose:active {\\r\\n color: #2224;\\r\\n}\\r\\n\\r\\nbutton#selector {\\r\\n border-radius: 0;\\r\\n color: #2226;\\r\\n\\r\\n border-color: transparent;\\r\\n border-bottom-color: #2224;\\r\\n margin: 0;\\r\\n box-sizing: border-box;\\r\\n /* padding: 0; */\\r\\n font-weight: 500;\\r\\n}\\r\\n\\r\\nbutton#selector.active {\\r\\n box-sizing: border-box;\\r\\n color: #222;\\r\\n background-color: #fff;\\r\\n border-color: #2224;\\r\\n border-bottom-color: white;\\r\\n}\\r\\n\\r\\nbutton#file-upload {\\r\\n background-color: #2563eb;\\r\\n font-size: 1rem;\\r\\n border: none;\\r\\n}\\r\\n\\r\\nbutton#file-upload:hover {\\r\\n background-color: #60a5fa;\\r\\n}\\r\\nbutton#file-upload:active {\\r\\n color: white;\\r\\n background-color: #bfdbfe;\\r\\n}\\r\\nbutton#file-upload:disabled {\\r\\n opacity: 1;\\r\\n background-color: #bfdbfe;\\r\\n cursor: not-allowed;\\r\\n}\\r\\n.asset-list h2 {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.asset-list {\\r\\n position: absolute;\\r\\n z-index: 1100;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\n.asset-list header {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n padding: 0.5rem 1rem 0 1rem;\\r\\n}\\r\\n\\r\\n/* ===== Scrollbar CSS ===== */\\r\\n/* Firefox */\\r\\n.asset-list {\\r\\n scrollbar-width: initial;\\r\\n scrollbar-color: initial;\\r\\n}\\r\\n\\r\\n/* Chrome, Edge, and Safari */\\r\\n.asset-list::-webkit-scrollbar {\\r\\n width: initial;\\r\\n}\\r\\n\\r\\n.asset-list::-webkit-scrollbar-track {\\r\\n background: initial;\\r\\n}\\r\\n\\r\\n.asset-list::-webkit-scrollbar-thumb {\\r\\n background-color: initial;\\r\\n border-radius: initial;\\r\\n border: initial;\\r\\n}\\r\\n\\r\\nlabel.asset-list-upload {\\r\\n background: #2563eb;\\r\\n color: white;\\r\\n font-weight: 700;\\r\\n cursor: pointer;\\r\\n width: 25%;\\r\\n padding: 20px;\\r\\n border-radius: 0.25rem;\\r\\n min-width: 300px;\\r\\n}\\r\\n\\r\\nlabel.asset-list-upload:hover {\\r\\n background-color: #60a5fa !important;\\r\\n}\\r\\nlabel.asset-list-upload:active {\\r\\n background-color: #bfdbfe !important;\\r\\n}\\r\\n\\r\\ninput#asset-list {\\r\\n background-color: #2222;\\r\\n width: 25%;\\r\\n}\\r\\n\\r\\ninput#asset-list::placeholder {\\r\\n color: #222;\\r\\n}\\r\\n\\r\\ndiv.main-panel {\\r\\n background: #fff;\\r\\n width: 90%;\\r\\n height: 90%;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n z-index: 5;\\r\\n}\\r\\n\\r\\ndiv.list-background {\\r\\n flex: 1;\\r\\n padding: 10px;\\r\\n margin-top: 10px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\ndiv.selector-wrapper {\\r\\n display: flex;\\r\\n}\\r\\n\\r\\ndiv.space-filler {\\r\\n box-sizing: border-box;\\r\\n flex: 1;\\r\\n border-bottom: 1px solid #2224;\\r\\n}\\r\\n\\r\\ndiv.content {\\r\\n height: 100%;\\r\\n position: relative;\\r\\n flex: 8;\\r\\n overflow: auto;\\r\\n}\\r\\n\\r\\ndiv.content-wrapper {\\r\\n display: flex;\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\ndiv.file-list-page {\\r\\n background: #fff;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n overflow: auto;\\r\\n}\\r\\n\\r\\ndiv.file-list-header {\\r\\n padding: 5px;\\r\\n margin-top: 10px;\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n}\\r\\n\\r\\nbutton.sorter {\\r\\n color: #222;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\ndiv.files-grid {\\r\\n display: flex;\\r\\n flex-flow: wrap;\\r\\n padding: 20px;\\r\\n padding-bottom: 40px;\\r\\n grid-gap: 20px;\\r\\n}\\r\\n\\r\\nimg.file-thumbnail {\\r\\n width: 100%;\\r\\n min-width: 100%;\\r\\n height: 160px;\\r\\n max-height: 160px;\\r\\n object-fit: cover;\\r\\n}\\r\\n\\r\\ndiv.list-element {\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n user-select: none;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\ndiv.file-thumbnail-wrapper {\\r\\n overflow: hidden;\\r\\n width: 160px;\\r\\n height: 160px;\\r\\n background: #2222;\\r\\n cursor: pointer;\\r\\n border: 4px solid;\\r\\n box-sizing: border-box;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\ndiv.audio-icon-wrapper {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\np.asset-desc {\\r\\n margin: 0;\\r\\n margin-top: 5px;\\r\\n font-size: 0.8rem;\\r\\n max-width: 160px;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n}\\r\\n\\r\\ndiv.upload-file-page {\\r\\n background-color: #fff;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n height: 100%;\\r\\n}\\r\\ndiv.uploaded-thumbnail {\\r\\n width: 600px;\\r\\n height: 400px;\\r\\n background-position: center;\\r\\n background-size: contain§;\\r\\n background-repeat: no-repeat;\\r\\n}\\r\\n\\r\\nsmall.file-size {\\r\\n font-size: 13;\\r\\n list-style: 20px;\\r\\n color: #515151;\\r\\n}\\r\\n\";","import React from \"react\";\r\nimport {\r\n UseAssetsQuery,\r\n UseGetTour,\r\n UseSaveTour,\r\n} from \"../../../api/calls/Queries\";\r\nimport { Popup, Scene, TourData } from \"../../../Types\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport UploadPage from \"./UploadPage\";\r\nimport ListElement from \"./ListElement\";\r\nimport DalleWrapper from \"./DalleWrapper\";\r\nimport {\r\n useAssetListStore,\r\n useCurrentSceneStore,\r\n useEditingElementStore,\r\n useParametersStore,\r\n} from \"../../../api/Zustand\";\r\nimport { RightArrow } from \"../../Icons/left-side-bar-icons\";\r\nimport { OPENAIENABLED } from \"../../../App\";\r\nimport AssetPreview from \"./AssetPreview\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\n/* eslint import/no-webpack-loader-syntax: off */\r\n//@ts-expect-error\r\nimport css from \"!raw-loader!./assetlist.css\";\r\n\r\nconst AssetList = () => {\r\n const queryClient = useQueryClient();\r\n const { currentSceneID } = useCurrentSceneStore();\r\n const { tourID } = useParametersStore();\r\n\r\n const assetList = useAssetListStore();\r\n const { setOpen, setClosed, setOpenForMap, setLoading } = useAssetListStore();\r\n\r\n const { id, type } = useEditingElementStore();\r\n\r\n const { mutateAsync: saveTour } = UseSaveTour();\r\n const { data: tourData, isLoading } = UseGetTour(tourID);\r\n const { data: assets, refetch } = UseAssetsQuery(tourID, assetList.type || 1);\r\n\r\n const [page, setPage] = React.useState<1 | 2 | 3>(1);\r\n const [selectedAssetID, setSelectedAssetID] = React.useState<\r\n number | string | undefined\r\n >();\r\n\r\n const currentScene = React.useMemo(() => {\r\n return tourData?.scenes.find((one) => one.id === currentSceneID);\r\n }, [tourData?.scenes, currentSceneID]);\r\n\r\n React.useEffect(() => {\r\n if (assetList.type === 1 && currentScene?.imageID) {\r\n setSelectedAssetID(currentScene?.imageID!);\r\n }\r\n }, [assetList.type, currentSceneID, tourData?.scenes, currentScene]);\r\n\r\n const setPano = React.useCallback(() => {\r\n if (assets?.find((one) => one.assetId === selectedAssetID)) {\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n\r\n scenes: tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n imageID: selectedAssetID,\r\n\r\n isNew: undefined,\r\n isUsingNewPano: undefined,\r\n }\r\n : sc\r\n ),\r\n });\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setSelectedAssetID(undefined);\r\n setClosed();\r\n // setAssetList({ isOpen: false, type: undefined });\r\n },\r\n });\r\n }\r\n }, [\r\n setClosed,\r\n assets,\r\n currentSceneID,\r\n queryClient,\r\n saveTour,\r\n selectedAssetID,\r\n tourData,\r\n tourID,\r\n ]);\r\n\r\n const setImage = React.useCallback(() => {\r\n if (assets?.find((one) => one.assetId === selectedAssetID)) {\r\n const actualPopState = tourData?.popups.find((one) => one.id === id);\r\n const selectedAsset = assets.find(\r\n (one) => one.assetId === selectedAssetID\r\n );\r\n\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n popups: tourData?.popups.map((pop: Popup) =>\r\n pop.id === id\r\n ? {\r\n ...actualPopState,\r\n imageID: selectedAsset?.assetId,\r\n image: selectedAsset?.assetKeyFull,\r\n imageName: selectedAsset?.assetDescription,\r\n }\r\n : pop\r\n ),\r\n });\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setSelectedAssetID(undefined);\r\n setClosed();\r\n // setAssetList({ isOpen: false, type: undefined });\r\n },\r\n });\r\n }\r\n }, [\r\n id,\r\n assets,\r\n queryClient,\r\n saveTour,\r\n tourData,\r\n tourID,\r\n selectedAssetID,\r\n setClosed,\r\n ]);\r\n\r\n const setAudio = React.useCallback(async () => {\r\n if (type === \"scene\") {\r\n const newTourData = await queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n audio: selectedAssetID,\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setSelectedAssetID(undefined);\r\n setClosed();\r\n // setAssetList({ isOpen: false, type: undefined });\r\n },\r\n });\r\n } else {\r\n const newTourData = await queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n scenes: [\r\n ...tourData!.scenes.map((sc: Scene) =>\r\n sc.id === currentSceneID\r\n ? {\r\n ...sc,\r\n hotspots: sc.hotspots.map((hs) =>\r\n hs.id === id ? { ...hs, target: selectedAssetID } : hs\r\n ),\r\n }\r\n : sc\r\n ),\r\n ],\r\n });\r\n\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setSelectedAssetID(undefined);\r\n setClosed();\r\n // setAssetList({ isOpen: false, type: undefined });\r\n },\r\n });\r\n }\r\n }, [\r\n selectedAssetID,\r\n currentSceneID,\r\n id,\r\n type,\r\n tourID,\r\n queryClient,\r\n saveTour,\r\n setClosed,\r\n tourData,\r\n ]);\r\n\r\n const setMap = React.useCallback(() => {\r\n if (assets?.find((one) => one.assetId === selectedAssetID)) {\r\n const newTourData = queryClient.setQueryData([\"GetTour\", tourID], {\r\n ...tourData,\r\n maps: tourData?.maps?.map((map) =>\r\n map.id === assetList.mapID\r\n ? { ...map, assetId: selectedAssetID }\r\n : map\r\n ),\r\n });\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setSelectedAssetID(undefined);\r\n setClosed();\r\n // setAssetList({ isOpen: false, type: undefined });\r\n },\r\n });\r\n }\r\n }, [\r\n assets,\r\n queryClient,\r\n saveTour,\r\n tourData,\r\n tourID,\r\n selectedAssetID,\r\n assetList.mapID,\r\n setClosed,\r\n ]);\r\n\r\n const useButtonIsDisabled: boolean | undefined = React.useMemo(() => {\r\n if (isLoading) return true;\r\n else if (page === 3 && selectedAssetID) {\r\n return false;\r\n } else if (!assets?.find((one) => one.assetId === selectedAssetID))\r\n return true;\r\n }, [assets, isLoading, page, selectedAssetID]);\r\n\r\n if (assetList.isOpen && tourData && !isLoading)\r\n return (\r\n <>\r\n \r\n \r\n
e.stopPropagation()}>\r\n
\r\n {assetList.forMap ? (\r\n \r\n ) : (\r\n <>\r\n

\r\n {assetList.type === 1\r\n ? getLanguageFile(\"overlapping_panel.panos\")\r\n : assetList.type === 2\r\n ? getLanguageFile(\"overlapping_panel.images\")\r\n : getLanguageFile(\"overlapping_panel.audio\")}{\" \"}\r\n

\r\n \r\n {getLanguageFile(\"overlapping_panel.close\")}\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n setPage(1)}\r\n >\r\n {assetList.type === 1\r\n ? getLanguageFile(\"overlapping_panel.panos_library\")\r\n : assetList.type === 2\r\n ? getLanguageFile(\"overlapping_panel.images_library\")\r\n : getLanguageFile(\"overlapping_panel.audio_library\")}\r\n \r\n {\r\n setPage(2);\r\n setSelectedAssetID(undefined);\r\n }}\r\n >\r\n {getLanguageFile(\"overlapping_panel.upload\")}\r\n \r\n\r\n {OPENAIENABLED && assetList.type === 2 && (\r\n {\r\n setPage(3);\r\n setSelectedAssetID(undefined);\r\n }}\r\n >\r\n Genera con AI\r\n \r\n )}\r\n\r\n
\r\n
\r\n\r\n {assets && assetList.type && (\r\n
\r\n
\r\n {page === 1 ? (\r\n \r\n ) : page === 2 ? (\r\n \r\n ) : page === 3 ? (\r\n \r\n ) : null}\r\n
\r\n {page === 1 && !assetList.forMap && selectedAssetID && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n\r\n \r\n {assetList.type === 1 && currentScene?.imageID && (\r\n \r\n )}\r\n {assetList.type === 2 &&\r\n tourData.popups.find((one) => one.id === id)?.image && (\r\n \r\n )}\r\n\r\n {\r\n if (assetList.forMap) {\r\n setMap();\r\n return;\r\n }\r\n if (assetList.type === 1) setPano();\r\n else if (assetList.type === 2) setImage();\r\n else setAudio();\r\n }}\r\n id=\"file-upload\"\r\n disabled={useButtonIsDisabled}\r\n >\r\n {assetList.type === 1\r\n ? getLanguageFile(\"overlapping_panel.use_pano\")\r\n : assetList.type === 2\r\n ? getLanguageFile(\"overlapping_panel.use_image\")\r\n : getLanguageFile(\"overlapping_panel.use_audio\")}\r\n \r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AssetList;\r\n","import React from \"react\";\r\nimport { Map, TourData } from \"../../../Types\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { UseAssetsQuery, UseDownloadAsset } from \"../../../api/calls/Queries\";\r\nimport { MapIcon } from \"../../Icons/left-side-bar-icons\";\r\nimport { AddIcon, EditPencil } from \"../../Icons/gui-elements-icons\";\r\n\r\nconst MapList = (props: {\r\n tourData: TourData;\r\n tourID: number;\r\n setPage: React.Dispatch>;\r\n setSelected: React.Dispatch>;\r\n selected: number | undefined;\r\n}) => {\r\n const { maps } = props.tourData;\r\n\r\n return (\r\n \r\n {maps?.map((map) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nconst ListEl = (props: {\r\n default?: boolean;\r\n tourID: number;\r\n tourData: TourData;\r\n setPage: React.Dispatch>;\r\n setSelected: React.Dispatch>;\r\n selected?: number | undefined;\r\n map?: Map;\r\n}) => {\r\n const queryClient = useQueryClient();\r\n\r\n const { data: assetList } = UseAssetsQuery(props.tourID, 2);\r\n\r\n const { data: imageBlob } = UseDownloadAsset(\r\n assetList?.find((one) => one.assetId === props.map?.assetId)?.assetKeyLow ||\r\n assetList?.find((one) => one.assetId === props.map?.assetId)?.assetKeyFull\r\n );\r\n\r\n const addNewMap = React.useCallback(() => {\r\n const randId = Math.floor(100000000 + Math.random() * 900000000);\r\n\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...props.tourData,\r\n maps: [...props.tourData.maps!, { id: randId, title: \"Nuova mappa\" }],\r\n });\r\n props.setSelected(randId);\r\n props.setPage(2);\r\n }, [props, queryClient]);\r\n\r\n return (\r\n
\r\n {\r\n if (props.default) {\r\n addNewMap();\r\n } else if (!props.default && props.map?.id !== -1) {\r\n props.setSelected(props.map?.id!);\r\n }\r\n }}\r\n >\r\n {props.default && (\r\n \r\n )}\r\n {!imageBlob && !props.default && (\r\n \r\n )}\r\n
\r\n\r\n \r\n \r\n {props.map?.title}\r\n

\r\n {!props.default && (\r\n {\r\n props.setSelected(props.map?.id);\r\n props.setPage(2);\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\n// \r\n//

\r\n\r\nexport default MapList;\r\n","import React from \"react\";\r\n\r\nconst MapPin = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MapPin;\r\n","import { useQueryClient } from \"@tanstack/react-query\";\r\nimport * as React from \"react\";\r\nimport { Group, Map, Scene, TourData } from \"../../../Types\";\r\nimport { UseAssetsQuery, UseDownloadAsset } from \"../../../api/calls/Queries\";\r\nimport MapPin from \"../../Icons/MapPin\";\r\nimport Draggable from \"react-draggable\";\r\nimport { FolderIcon, Trashbin } from \"../../Icons/gui-elements-icons\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\nimport { useAssetListStore } from \"../../../api/Zustand\";\r\n\r\nexport default function MapDetails(props: {\r\n tourID: number;\r\n selected: number | undefined;\r\n tourData: TourData;\r\n}) {\r\n const { setOpenForMap } = useAssetListStore();\r\n\r\n const [size, setSize] = React.useState<{\r\n w: number;\r\n h: number;\r\n }>({\r\n w: 0,\r\n h: 0,\r\n });\r\n\r\n const ref = React.useRef(null);\r\n const ref2 = React.useRef(null);\r\n\r\n const { data: imageList } = UseAssetsQuery(props.tourID, 2);\r\n const queryClient = useQueryClient();\r\n\r\n const currentMap: Map | undefined = React.useMemo(() => {\r\n return props.tourData.maps?.find((one) => one.id === props.selected);\r\n }, [props.tourData.maps, props.selected]);\r\n\r\n const { data: imageBlob } = UseDownloadAsset(\r\n imageList?.find((one) => one.assetId === currentMap?.assetId)?.assetKeyFull\r\n );\r\n\r\n const onTitleChange = React.useCallback(\r\n (e: React.ChangeEvent) => {\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...props.tourData,\r\n maps: props.tourData.maps?.map((map) =>\r\n map.id === props.selected ? { ...map, title: e.target.value } : map\r\n ),\r\n });\r\n },\r\n [queryClient, props.tourData, props.tourID, props.selected]\r\n );\r\n\r\n const onPinAdd = React.useCallback(\r\n (target: number) => {\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...props.tourData,\r\n maps: props.tourData.maps?.map((map) =>\r\n map.id === props.selected\r\n ? {\r\n ...map,\r\n points: [\r\n ...(map.points || []),\r\n {\r\n target: target,\r\n pos: { x: 0.5, y: 0.5 },\r\n },\r\n ],\r\n }\r\n : map\r\n ),\r\n });\r\n },\r\n [queryClient, props.tourData, props.tourID, props.selected]\r\n );\r\n\r\n const onPinMove = React.useCallback(\r\n (pos: { x: number; y: number }, target: string | number) => {\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...props.tourData,\r\n maps: props.tourData.maps?.map((map) =>\r\n map.id === props.selected\r\n ? {\r\n ...map,\r\n points: map.points?.map((point) =>\r\n point.target === target ? { ...point, pos: pos } : point\r\n ),\r\n }\r\n : map\r\n ),\r\n });\r\n },\r\n [props.selected, props.tourData, props.tourID, queryClient]\r\n );\r\n\r\n const onRemove = React.useCallback(\r\n (target: number) => {\r\n queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...props.tourData,\r\n maps: props.tourData.maps?.map((map) =>\r\n map.id === props.selected\r\n ? {\r\n ...map,\r\n points: map.points?.filter(\r\n (points) => points.target !== target\r\n ),\r\n }\r\n : map\r\n ),\r\n });\r\n },\r\n [props.tourID, props.selected, props.tourData, queryClient]\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!ref2.current) return;\r\n\r\n const resizeObserver = new ResizeObserver((e) => {\r\n const target: HTMLDivElement = e[0].target as HTMLDivElement;\r\n\r\n setSize({\r\n w: target?.offsetWidth,\r\n h: target?.offsetHeight,\r\n });\r\n });\r\n\r\n resizeObserver.observe(ref2.current);\r\n\r\n setSize({\r\n w: ref2?.current.offsetWidth,\r\n h: ref2?.current.offsetHeight,\r\n });\r\n }, [ref2]);\r\n\r\n return (\r\n
\r\n \r\n \r\n {size.w !== 0 && size.h !== 0 && (\r\n \r\n {size.h &&\r\n currentMap?.points?.map((point) => (\r\n {\r\n const y = (u.y + 15) / (size.h || 1);\r\n const x = (u.x + 15) / (size.w || 1);\r\n\r\n const pos = {\r\n x: Math.round(x * 10000) / 10000,\r\n y: Math.round(y * 10000) / 10000,\r\n };\r\n // const pos = { x: 0.67, y: 0.33 };\r\n\r\n onPinMove(pos, point.target);\r\n }}\r\n key={point.target}\r\n bounds={\"parent\"}\r\n defaultPosition={{\r\n x: point.pos.x * size.w! - 20,\r\n y: point.pos.y * size.h! - 20,\r\n }}\r\n >\r\n \r\n \r\n one.id ===\r\n props.tourData.scenes.find(\r\n (one) => one.id === point.target\r\n )?.group\r\n )?.mainColor || \"#fff\"\r\n }\r\n stroke=\"#222\"\r\n strokeWidth={18}\r\n height={\"100%\"}\r\n />\r\n\r\n \r\n {\r\n props.tourData.scenes.find(\r\n (one) => one.id === point.target\r\n )?.title\r\n }\r\n
\r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n

{getLanguageFile(\"overlapping_panel.image\")}

\r\n {\r\n if (currentMap?.id) {\r\n setOpenForMap(currentMap.id);\r\n }\r\n }}\r\n >\r\n \r\n {imageList?.find((one) => one.assetId === currentMap?.assetId)\r\n ?.assetDescription ||\r\n getLanguageFile(\"overlapping_panel.no_image\")}\r\n

\r\n \r\n \r\n \r\n\r\n

{getLanguageFile(\"overlapping_panel.scene\")}

\r\n \r\n \r\n {props.tourData.scenes.map((sc) => (\r\n {\r\n if (currentMap?.points?.find((one) => one.target === sc.id))\r\n return;\r\n else onPinAdd(sc.id as number);\r\n }}\r\n disabled={\r\n !!currentMap?.points?.find((one) => one.target === sc.id)\r\n }\r\n onRemove={onRemove}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst SceneElem = (props: {\r\n scene: Scene;\r\n groups: Group[];\r\n onClick: () => void;\r\n disabled?: boolean;\r\n onRemove: (target: number) => void;\r\n}) => {\r\n const fillingColor = React.useMemo(() => {\r\n const color = props.groups.find(\r\n (one: Group) => one.id === props.scene.group\r\n )?.mainColor;\r\n\r\n return color || \"#fff\";\r\n }, [props.groups, props.scene]);\r\n\r\n return (\r\n \r\n {props.disabled && (\r\n props.onRemove(props.scene.id as number)}\r\n >\r\n \r\n \r\n )}\r\n\r\n {\r\n props.onClick();\r\n }}\r\n >\r\n \r\n \r\n {props.scene.title}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n// one.id === props.scene.group)\r\n// ?.mainColor || \"#222\",\r\n// }}\r\n// onClick={props.onClick}\r\n// >\r\n// one.id === props.scene.group)\r\n// ?.mainColor || \"#fff\"\r\n// }\r\n// stroke=\"#222\"\r\n// width={\"5rem\"}\r\n// height={\"5rem\"}\r\n// strokeWidth={22}\r\n// />\r\n\r\n// \r\n// Lorem, ipsum dolor sit amet consectetur adipisicing elit. Iste\r\n// perspiciatis at, eligendi sed voluptatum sunt perferendis qui\r\n// voluptatem numquam modi natus eaque? Iste sed expedita ad? Ex, est.\r\n// Iusto, fugiat?\r\n// \r\n// {/* {props.scene.title} */}\r\n// \r\n","import React, { useEffect } from \"react\";\r\nimport { UseSaveTour } from \"../../../api/calls/Queries\";\r\nimport MapList from \"./MapList\";\r\nimport MapDetails from \"./MapDetails\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { TourData } from \"../../../Types\";\r\nimport {\r\n useCurrentSceneStore,\r\n useMapEditorStore,\r\n useTourDataStore,\r\n} from \"../../../api/Zustand\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\n/* eslint import/no-webpack-loader-syntax: off */\r\n//@ts-expect-error\r\nimport css from \"!raw-loader!../AssetList/assetlist.css\";\r\n\r\nconst MapEditor = (props: { tourID: number }) => {\r\n const mapEditor = useMapEditorStore();\r\n\r\n const { tourData } = useTourDataStore();\r\n\r\n const queryClient = useQueryClient();\r\n const { currentSceneID } = useCurrentSceneStore();\r\n\r\n const [page, setPage] = React.useState<1 | 2>(1);\r\n const [selected, setSelected] = React.useState(undefined);\r\n\r\n const { mutateAsync: saveTour, isPending } = UseSaveTour();\r\n\r\n useEffect(() => {\r\n if (mapEditor.onPage) {\r\n setPage(mapEditor.onPage);\r\n setSelected(mapEditor.currentMap);\r\n }\r\n }, [mapEditor.onPage, mapEditor.currentMap]);\r\n\r\n const onMapDelete = React.useCallback(async () => {\r\n setPage(1);\r\n return queryClient.setQueryData([\"GetTour\", props.tourID], {\r\n ...tourData,\r\n maps: tourData?.maps?.filter((gr) => gr.id !== selected),\r\n scenes: tourData?.scenes.map((sc) =>\r\n sc.map === mapEditor.currentMap\r\n ? {\r\n ...sc,\r\n map: undefined,\r\n }\r\n : sc\r\n ),\r\n });\r\n }, [props.tourID, tourData, selected, queryClient, mapEditor.currentMap]);\r\n\r\n const setMapInScene = React.useCallback(async () => {\r\n const newTourData = await queryClient.setQueryData(\r\n [\"GetTour\", props.tourID],\r\n {\r\n ...tourData,\r\n scenes: tourData?.scenes.map((sc) =>\r\n sc.id === currentSceneID ? { ...sc, map: selected } : sc\r\n ),\r\n }\r\n );\r\n saveTour(newTourData as TourData, {\r\n onSuccess: () => {\r\n setPage(1);\r\n mapEditor.setClosed();\r\n },\r\n });\r\n }, [\r\n currentSceneID,\r\n mapEditor,\r\n props.tourID,\r\n queryClient,\r\n saveTour,\r\n selected,\r\n tourData,\r\n ]);\r\n\r\n const hasMaps = React.useMemo(() => {\r\n const maps = tourData?.maps;\r\n\r\n if (maps) {\r\n return maps?.length > 0;\r\n } else return false;\r\n }, [tourData?.maps]);\r\n\r\n const selectedMap = React.useMemo(() => {\r\n if (selected) {\r\n return tourData?.maps?.find((one) => one.id === selected);\r\n }\r\n }, [selected, tourData?.maps]);\r\n\r\n if (mapEditor.isOpen && tourData)\r\n return (\r\n <>\r\n \r\n {\r\n if (!isPending) mapEditor.setClosed();\r\n }}\r\n >\r\n {\r\n e.stopPropagation();\r\n }}\r\n >\r\n \r\n {\r\n setPage(1);\r\n // mapEditor.setOpen()\r\n // openMap({ ...map, fromScene: false });\r\n }}\r\n >\r\n {page === 2\r\n ? getLanguageFile(\"overlapping_panel.back\")\r\n : getLanguageFile(\"overlapping_panel.maps\")}\r\n \r\n {\r\n if (!isPending) mapEditor.setClosed();\r\n }}\r\n >\r\n {getLanguageFile(\"overlapping_panel.close\")}\r\n \r\n \r\n\r\n \r\n {page === 1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n {page === 2 && (\r\n onMapDelete()}\r\n >\r\n {getLanguageFile(\"overlapping_panel.delete_map\")}{\" \"}\r\n \r\n )}\r\n \r\n saveTour(tourData, {\r\n onSuccess: () => {\r\n if (page === 1) mapEditor.setClosed();\r\n else {\r\n if (mapEditor.fromScene) mapEditor.setClosed();\r\n\r\n setPage(1);\r\n }\r\n },\r\n })\r\n }\r\n >\r\n {isPending\r\n ? getLanguageFile(\"generics.saving\")\r\n : getLanguageFile(\"generics.save\")}\r\n \r\n\r\n {!isPending && !mapEditor.fromScene && (\r\n setMapInScene()}\r\n >\r\n {isPending\r\n ? getLanguageFile(\"generics.saving\")\r\n : getLanguageFile(\"overlapping_panel.save_and_use\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MapEditor;\r\n\r\nconst wrapperStyle: React.CSSProperties = {\r\n background: \"#0008\",\r\n position: \"absolute\",\r\n zIndex: \"1100\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n};\r\n\r\nconst panelStyle: React.CSSProperties = {\r\n // background: \"#E8F0FF\",\r\n background: \"#fff\",\r\n width: \"90%\",\r\n height: \"90%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n padding: \"1rem\",\r\n boxSizing: \"border-box\",\r\n zIndex: 3,\r\n};\r\n","import React from \"react\";\r\nimport { useWidePopupStore } from \"../../../api/Zustand\";\r\nimport OpenAiWrapper from \"../OpenAi/OpenAiWrapper\";\r\nimport { useGptHistoryStore } from \"../../../api/calls/OpenAi\";\r\nimport { getLanguageFile } from \"../../common/GetLanguageFile\";\r\n\r\nconst WidePopup = (props: { tourID: number }) => {\r\n const { setIsOpen } = useWidePopupStore();\r\n\r\n const { resetHistory } = useGptHistoryStore();\r\n return (\r\n
\r\n
\r\n
\r\n {/*
*/}\r\n

OpenAi

\r\n {\r\n setIsOpen(false);\r\n resetHistory();\r\n }}\r\n >\r\n {getLanguageFile(\"generics.close\")}\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default WidePopup;\r\n\r\nconst wrapperStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n zIndex: \"1100\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background: \"#0008\",\r\n color: \"#222\",\r\n};\r\n\r\nconst panelStyle: React.CSSProperties = {\r\n // background: \"#E8F0FF\",\r\n background: \"#fff\",\r\n width: \"75%\",\r\n height: \"90%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n zIndex: 5,\r\n borderRadius: 10,\r\n};\r\n\r\nconst headerStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n\r\n paddingInline: 20,\r\n // height: \"100px\",\r\n};\r\n","import React from \"react\";\r\n\r\n//UI COMPONENTS\r\n\r\nimport BottomBar from \"./bottom-bar/BottomBar.tsx\";\r\nimport LoadingScreen from \"./LoadingScreen\";\r\nimport RightSidePanel from \"./RightSidePanel\";\r\nimport Experience from \"./Experience/Experience\";\r\nimport NewTourPage from \"../NewTourPage/NewTourPage\";\r\n\r\n//QUERY\r\n\r\nimport LeftSidePanel from \"./LeftSidePanel\";\r\n\r\n/* eslint import/no-webpack-loader-syntax: off */\r\n\r\n// @ts-expect-error\r\nimport buttonsCss from \"!raw-loader!../common/buttons.css\";\r\n\r\n// @ts-expect-error\r\nimport formsCss from \"!raw-loader!./RightSidePanel/forms.css\";\r\n\r\n//API\r\n\r\nimport {\r\n UseAssetsQuery,\r\n UseGetTour,\r\n useLocalizationFile,\r\n} from \"../../api/calls/Queries.ts\";\r\nimport { useGetQuiz } from \"../../api/calls/Quiz.ts\";\r\n\r\n//\r\n\r\nimport ErrorScreen from \"./ErrorScreen.tsx\";\r\nimport AssetList from \"./AssetList/AssetList.tsx\";\r\nimport MapEditor from \"./MapEditor/MapEditor.tsx\";\r\nimport WidePopup from \"./WidePopup/WidePopup.tsx\";\r\n\r\nimport { useTourDataStore, useWidePopupStore } from \"../../api/Zustand.ts\";\r\nimport { OPENAIENABLED } from \"../../App.tsx\";\r\n\r\nfunction TourEditPage(props: { tourID: number }) {\r\n const { tourID } = props;\r\n\r\n const { data: TourData, isLoading, isError, error } = UseGetTour(tourID);\r\n\r\n const { setTourData } = useTourDataStore();\r\n\r\n React.useEffect(() => {\r\n if (TourData) setTourData(TourData);\r\n }, [TourData, setTourData]);\r\n\r\n const { data: quizData } = useGetQuiz(tourID, TourData?.assignedQuizID);\r\n\r\n const { data: images } = UseAssetsQuery(tourID, 2);\r\n\r\n const { data: languagefile } = useLocalizationFile();\r\n\r\n const widePopup = useWidePopupStore();\r\n\r\n const {\r\n isLoading: isLoadingPanos,\r\n isError: isPanosError,\r\n error: panosError,\r\n } = UseAssetsQuery(tourID, 1);\r\n\r\n return (\r\n <>\r\n \r\n\r\n {isLoading || isLoadingPanos ? (\r\n \r\n ) : isError || isPanosError ? (\r\n \r\n ) : TourData === null || TourData?.scenes === undefined ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {OPENAIENABLED && widePopup.isOpen && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default TourEditPage;\r\n","export default \"form.right-panel {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n gap: 1.5rem;\\r\\n user-select: none !important;\\r\\n}\\r\\n\\r\\n.right-side-panel-editor .url-wrapper {\\r\\n position: relative;\\r\\n\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\ninput[type=\\\"url\\\"] {\\r\\n border-radius: 0.2em;\\r\\n border: solid 1px #fff8;\\r\\n line-height: 1.5rem;\\r\\n outline: none;\\r\\n /* font-size: 0.85em; */\\r\\n font-weight: 500;\\r\\n color: white;\\r\\n background-color: transparent;\\r\\n padding: 0.25em 2em 0.25em 0.5em;\\r\\n width: 100%;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\ninput[type=\\\"url\\\"]:focus {\\r\\n outline: 1px solid white;\\r\\n /* border-color: #1c64f2; */\\r\\n background-color: #fff2;\\r\\n}\\r\\n\\r\\ninput[type=\\\"url\\\"]:disabled {\\r\\n border-color: transparent;\\r\\n cursor: not-allowed;\\r\\n background-color: #fff2;\\r\\n}\\r\\n\\r\\ndiv.category-divider {\\r\\n margin-top: 0.75rem;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n gap: 1rem;\\r\\n}\\r\\n\\r\\ndiv.category-divider h4 {\\r\\n margin: 0;\\r\\n font-weight: 600;\\r\\n width: max-content;\\r\\n word-wrap: break-word;\\r\\n white-space: nowrap;\\r\\n}\\r\\n\\r\\ndiv.category-divider hr {\\r\\n background: #fff;\\r\\n border: none;\\r\\n height: 1px;\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\ndiv.input-range-inline {\\r\\n display: flex;\\r\\n}\\r\\ndiv.input-range-inline p {\\r\\n margin: 0;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\ndiv.input-range-inline-wrapper h4 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n margin-bottom: 0.25rem;\\r\\n margin-top: 1rem;\\r\\n}\\r\\n\\r\\n/* background: \\\"#fff\\\",\\r\\nwidth: \\\"100%\\\",\\r\\nheight: \\\"1px\\\",\\r\\nborder: \\\"none\\\", */\\r\\n/* style={{\\r\\n display: \\\"flex\\\",\\r\\n alignItems: \\\"center\\\",\\r\\n gap: \\\"1rem\\\",\\r\\n}} */\\r\\npre {\\r\\n margin: 0;\\r\\n\\r\\n margin-bottom: 0.5rem;\\r\\n}\\r\\n\\r\\nlabel.debug {\\r\\n background-color: #242424;\\r\\n padding: 1rem;\\r\\n}\\r\\n\\r\\nlabel.form {\\r\\n width: 100%;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\n\";","import { hashQueryKeyByOptions, matchQuery } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type {\n DefaultError,\n NotifyEvent,\n QueryKey,\n QueryOptions,\n WithRequired,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query,\n ) => void\n onSuccess?: (data: unknown, query: Query) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query\n action: Action\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query\n observer: QueryObserver\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query\n observer: QueryObserver\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\nexport interface QueryStore {\n has: (queryHash: string) => boolean\n set: (queryHash: string, query: Query) => void\n get: (queryHash: string) => Query | undefined\n delete: (queryHash: string) => void\n values: () => IterableIterator\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map()\n }\n\n build<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n client: QueryClient,\n options: WithRequired<\n QueryOptions,\n 'queryKey'\n >,\n state?: QueryState,\n ): Query {\n const queryKey = options.queryKey\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query): void {\n const queryInMap = this.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query | undefined {\n return this.#queries.get(queryHash) as\n | Query\n | undefined\n }\n\n getAll(): Array {\n return [...this.#queries.values()]\n }\n\n find(\n filters: WithRequired,\n ): Query | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query | undefined\n }\n\n findAll(filters: QueryFilters = {}): Array {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Mutation } from './mutation'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\nimport type { MutationObserver } from './mutationObserver'\nimport type { DefaultError, MutationOptions, NotifyEvent } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Action, MutationState } from './mutation'\nimport type { MutationFilters } from './utils'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: DefaultError,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation,\n ) => Promise | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation\n observer: MutationObserver\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation\n action: Action\n}\n\nexport type MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable {\n #mutations: Map>>\n #mutationId: number\n\n constructor(public config: MutationCacheConfig = {}) {\n super()\n this.#mutations = new Map()\n this.#mutationId = Date.now()\n }\n\n build(\n client: QueryClient,\n options: MutationOptions,\n state?: MutationState,\n ): Mutation {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation): void {\n const scope = scopeFor(mutation)\n const mutations = this.#mutations.get(scope) ?? []\n mutations.push(mutation)\n this.#mutations.set(scope, mutations)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation): void {\n const scope = scopeFor(mutation)\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations\n .get(scope)\n ?.filter((x) => x !== mutation)\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope)\n } else {\n this.#mutations.set(scope, mutations)\n }\n }\n }\n\n this.notify({ type: 'removed', mutation })\n }\n\n canRun(mutation: Mutation): boolean {\n const firstPendingMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m.state.status === 'pending')\n\n // we can run if there is no current pending mutation (start use-case)\n // or if WE are the first pending mutation (continue use-case)\n return !firstPendingMutation || firstPendingMutation === mutation\n }\n\n runNext(mutation: Mutation): Promise {\n const foundMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m !== mutation && m.state.isPaused)\n\n return foundMutation?.continue() ?? Promise.resolve()\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Array {\n return [...this.#mutations.values()].flat()\n }\n\n find<\n TData = unknown,\n TError = DefaultError,\n TVariables = any,\n TContext = unknown,\n >(\n filters: MutationFilters,\n ): Mutation | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((mutation) =>\n matchMutation(defaultedFilters, mutation),\n ) as Mutation | undefined\n }\n\n findAll(filters: MutationFilters = {}): Array {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused)\n\n return notifyManager.batch(() =>\n Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop)),\n ),\n )\n }\n}\n\nfunction scopeFor(mutation: Mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId)\n}\n","import { addToEnd, addToStart, ensureQueryFn } from './utils'\nimport type { QueryBehavior } from './query'\nimport type {\n InfiniteData,\n InfiniteQueryPageParamsOptions,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n} from './types'\n\nexport function infiniteQueryBehavior(\n pages?: number,\n): QueryBehavior> {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options as InfiniteQueryPageParamsOptions\n const direction = context.fetchOptions?.meta?.fetchMore?.direction\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n const empty = { pages: [], pageParams: [] }\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true\n } else {\n context.signal.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n const queryFn = ensureQueryFn(context.options, context.fetchOptions)\n\n // Create function to fetch a page\n const fetchPage = async (\n data: InfiniteData,\n param: unknown,\n previous?: boolean,\n ): Promise> => {\n if (cancelled) {\n return Promise.reject()\n }\n\n if (param == null && data.pages.length) {\n return Promise.resolve(data)\n }\n\n const queryFnContext: OmitKeyof<\n QueryFunctionContext,\n 'signal'\n > = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? 'backward' : 'forward',\n meta: context.options.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const page = await queryFn(\n queryFnContext as QueryFunctionContext,\n )\n\n const { maxPages } = context.options\n const addTo = previous ? addToStart : addToEnd\n\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages),\n }\n }\n\n let result: InfiniteData\n\n // fetch next / previous page?\n if (direction && oldPages.length) {\n const previous = direction === 'backward'\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams,\n }\n const param = pageParamFn(options, oldData)\n\n result = await fetchPage(oldData, param, previous)\n } else {\n // Fetch first page\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam,\n )\n\n const remainingPages = pages ?? oldPages.length\n\n // Fetch remaining pages\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result)\n result = await fetchPage(result, param)\n }\n }\n\n return result\n }\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn as any,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal,\n },\n query,\n )\n }\n } else {\n context.fetchFn = fetchFn\n }\n },\n }\n}\n\nfunction getNextPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n const lastIndex = pages.length - 1\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams,\n )\n}\n\nfunction getPreviousPageParam(\n options: InfiniteQueryPageParamsOptions,\n { pages, pageParams }: InfiniteData,\n): unknown | undefined {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams,\n )\n}\n\n/**\n * Checks if there is a next page.\n */\nexport function hasNextPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data) return false\n return getNextPageParam(options, data) != null\n}\n\n/**\n * Checks if there is a previous page.\n */\nexport function hasPreviousPage(\n options: InfiniteQueryPageParamsOptions,\n data?: InfiniteData,\n): boolean {\n if (!data || !options.getPreviousPageParam) return false\n return getPreviousPageParam(options, data) != null\n}\n","import {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { DataTag, NoInfer, OmitKeyof } from './types'\nimport type { QueryState } from './query'\nimport type {\n CancelOptions,\n DefaultError,\n DefaultOptions,\n DefaultedQueryObserverOptions,\n EnsureQueryDataOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryClientConfig,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n SetDataOptions,\n} from './types'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: OmitKeyof, 'queryKey'>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions\n}\n\n// CLASS\n\nexport class QueryClient {\n #queryCache: QueryCache\n #mutationCache: MutationCache\n #defaultOptions: DefaultOptions\n #queryDefaults: Map\n #mutationDefaults: Map\n #mountCount: number\n #unsubscribeFocus?: () => void\n #unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.#queryCache = config.queryCache || new QueryCache()\n this.#mutationCache = config.mutationCache || new MutationCache()\n this.#defaultOptions = config.defaultOptions || {}\n this.#queryDefaults = new Map()\n this.#mutationDefaults = new Map()\n this.#mountCount = 0\n }\n\n mount(): void {\n this.#mountCount++\n if (this.#mountCount !== 1) return\n\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations()\n this.#queryCache.onFocus()\n }\n })\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations()\n this.#queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.#mountCount--\n if (this.#mountCount !== 0) return\n\n this.#unsubscribeFocus?.()\n this.#unsubscribeFocus = undefined\n\n this.#unsubscribeOnline?.()\n this.#unsubscribeOnline = undefined\n }\n\n isFetching(filters?: QueryFilters): number {\n return this.#queryCache.findAll({ ...filters, fetchStatus: 'fetching' })\n .length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.#mutationCache.findAll({ ...filters, status: 'pending' }).length\n }\n\n getQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined\n getQueryData(queryKey: QueryKey) {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get(options.queryHash)?.state.data\n }\n\n ensureQueryData<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: EnsureQueryDataOptions,\n ): Promise {\n const cachedData = this.getQueryData(options.queryKey)\n\n if (cachedData === undefined) return this.fetchQuery(options)\n else {\n const defaultedOptions = this.defaultQueryOptions(options)\n const query = this.#queryCache.build(this, defaultedOptions)\n\n if (\n options.revalidateIfStale &&\n query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))\n ) {\n void this.prefetchQuery(defaultedOptions)\n }\n\n return Promise.resolve(cachedData)\n }\n }\n\n getQueriesData(\n filters: QueryFilters,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data as TQueryFnData | undefined\n return [queryKey, data]\n })\n }\n\n setQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n updater: Updater<\n NoInfer | undefined,\n NoInfer | undefined\n >,\n options?: SetDataOptions,\n ): TInferredQueryFnData | undefined {\n const defaultedOptions = this.defaultQueryOptions<\n any,\n any,\n unknown,\n any,\n QueryKey\n >({ queryKey })\n\n const query = this.#queryCache.get(\n defaultedOptions.queryHash,\n )\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (data === undefined) {\n return undefined\n }\n\n return this.#queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData(\n filters: QueryFilters,\n updater: Updater,\n options?: SetDataOptions,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n ): QueryState | undefined {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get(options.queryHash)\n ?.state\n }\n\n removeQueries(filters?: QueryFilters): void {\n const queryCache = this.#queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries(filters?: QueryFilters, options?: ResetOptions): Promise {\n const queryCache = this.#queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(\n filters: QueryFilters = {},\n cancelOptions: CancelOptions = {},\n ): Promise {\n const defaultedCancelOptions = { revert: true, ...cancelOptions }\n\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map((query) => query.cancel(defaultedCancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries(\n filters: InvalidateQueryFilters = {},\n options: InvalidateOptions = {},\n ): Promise {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate()\n })\n\n if (filters.refetchType === 'none') {\n return Promise.resolve()\n }\n const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries(\n filters: RefetchQueryFilters = {},\n options?: RefetchOptions,\n ): Promise {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n }\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) => {\n let promise = query.fetch(undefined, fetchOptions)\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop)\n }\n return query.state.fetchStatus === 'paused'\n ? Promise.resolve()\n : promise\n }),\n )\n\n return Promise.all(promises).then(noop)\n }\n\n fetchQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options: FetchQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise {\n const defaultedOptions = this.defaultQueryOptions(options)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (defaultedOptions.retry === undefined) {\n defaultedOptions.retry = false\n }\n\n const query = this.#queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query),\n )\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions,\n ): Promise {\n return this.fetchQuery(options).then(noop).catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise> {\n options.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n TPageParam\n >(options.pages)\n return this.fetchQuery(options)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop)\n }\n\n resumePausedMutations(): Promise {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations()\n }\n return Promise.resolve()\n }\n\n getQueryCache(): QueryCache {\n return this.#queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.#mutationCache\n }\n\n getDefaultOptions(): DefaultOptions {\n return this.#defaultOptions\n }\n\n setDefaultOptions(options: DefaultOptions): void {\n this.#defaultOptions = options\n }\n\n setQueryDefaults(\n queryKey: QueryKey,\n options: Partial<\n OmitKeyof, 'queryKey'>\n >,\n ): void {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options,\n })\n }\n\n getQueryDefaults(\n queryKey: QueryKey,\n ): OmitKeyof, 'queryKey'> {\n const defaults = [...this.#queryDefaults.values()]\n\n let result: OmitKeyof<\n QueryObserverOptions,\n 'queryKey'\n > = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n return result\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: OmitKeyof<\n MutationObserverOptions,\n 'mutationKey'\n >,\n ): void {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options,\n })\n }\n\n getMutationDefaults(\n mutationKey: MutationKey,\n ): MutationObserverOptions {\n const defaults = [...this.#mutationDefaults.values()]\n\n let result: MutationObserverOptions = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n\n return result\n }\n\n defaultQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options:\n | QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >\n | DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {\n if (options._defaulted) {\n return options as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true,\n }\n\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (defaultedOptions.refetchOnReconnect === undefined) {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (defaultedOptions.throwOnError === undefined) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense\n }\n\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = 'offlineFirst'\n }\n\n if (\n defaultedOptions.enabled !== true &&\n defaultedOptions.queryFn === skipToken\n ) {\n defaultedOptions.enabled = false\n }\n\n return defaultedOptions as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n defaultMutationOptions>(\n options?: T,\n ): T {\n if (options?._defaulted) {\n return options\n }\n return {\n ...this.#defaultOptions.mutations,\n ...(options?.mutationKey &&\n this.getMutationDefaults(options.mutationKey)),\n ...options,\n _defaulted: true,\n } as T\n }\n\n clear(): void {\n this.#queryCache.clear()\n this.#mutationCache.clear()\n }\n}\n","import { QueryClient } from \"@tanstack/react-query\";\r\n\r\nexport const client = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n refetchOnWindowFocus: false,\r\n refetchOnMount: false,\r\n structuralSharing: false,\r\n cacheTime: 0,\r\n },\r\n },\r\n})","import { AxiosError } from \"axios\";\r\nimport React from \"react\";\r\n\r\nconst TourViewerErrorPage = ({ err }: { err: AxiosError }) => {\r\n return (\r\n
\r\n

{err.message}

\r\n
{err.code}
\r\n

{err.name}

\r\n {/*